【Linux】【Services】【IaaS】OpenStack-Pike(2.搭建高可用的MySQL数据库)

1. 简介

1.1. 官方文档:

数据库架构:https://docs.openstack.org/ha-guide/shared-database.html

1.2. 本次使用的的是Percona XtraDB Cluster,5.7版本

https://www.percona.com/doc/percona-xtradb-cluster/5.7/index.html

1.3. 安装文件下载:

https://www.percona.com/downloads/Percona-XtraDB-Cluster-57/LATEST/

或者使用yum安装,本文中使用yum安装

https://www.percona.com/doc/percona-repo-config/yum-repo.html

这还有Docker的安装说明,等以后Docker文档中再详细说明

https://www.percona.com/doc/percona-xtradb-cluster/5.7/install/docker.html

2. 安装

功能与组件 机器名 服务IP 管理IP Processor Cores RAM Storage 备注
Mysql PXC HCTJOSMYSQL01 10.30.2.25 172.16.0.25        
Mysql PXC HCTJOSMYSQL02 10.30.2.26 172.16.0.26        
Mysql PXC HCTJOSMYSQL03 10.30.2.27 172.16.0.27        

2.1. 安装yum源

yum install http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm

在RHEL7.4上虽然已经配置了EPEL源,但是仍然会出现找不到libev.so.4()的错误,请使用下面地址直接安装

https://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/l/libev-4.15-3.el7.x86_64.rpm

安装软件吧

yum install Percona-XtraDB-Cluster-57

先别着急启动,配置一个独立的分区用来存储数据库文件

vgcreate vg_mysql /dev/sdb
lvcreate -n lv_mysql -l +100%FREE vg_mysql
mkfs.xfs /dev/mapper/vg_mysql-lv_mysql

写进/etc/fstab

#Disk for mysql data
/dev/mapper/vg_mysql-lv_mysql    /data_mysql        xfs    defaults    0 0

重新挂载,在分区内建立两个文件夹,mysql和backup

mkdir -pv /data_mysql
mount -a
mkdir -pv /data_mysql/{mysql,backup}

修改/etc/percona-xtradb-cluster.conf.d/mysqld.cnf

datadir=/data_mysql/mysql

起来试试吧

systemctl start mysql

看看密码是个啥

grep ‘temporary password‘ /var/log/mysqld.log

连接数据库并输出刚才看见的密码

mysql -u root -p

为了将来管理方便,添加了远程的访问权限

mysql> ALTER USER ‘root‘@‘localhost‘ IDENTIFIED BY ‘mysql‘;
Query OK, 0 rows affected (0.01 sec)

mysql> GRANT ALL PRIVILEGES ON *.* TO [email protected]"%" IDENTIFIED BY "mysql";
Query OK, 0 rows affected, 1 warning (0.01 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

SST用户也要添加,否则其他结点无法正常连入主节点

mysql> CREATE USER ‘sstuser‘@‘localhost‘ IDENTIFIED BY ‘mysql‘;
Query OK, 0 rows affected (0.00 sec)

mysql> GRANT RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON *.* TO ‘sstuser‘@‘localhost‘;
Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)

服务停掉,准备配置集群吧

systemctl stop mysql

集群的配置文档在这:https://www.percona.com/doc/percona-xtradb-cluster/5.7/configure.html#configure

首先修改/etc/percona-xtradb-cluster.conf.d/wsrep.cnf

[mysqld]
# Path to Galera library
wsrep_provider=/usr/lib64/galera3/libgalera_smm.so

# Cluster connection URL contains IPs of nodes
#If no IP is found, this implies that a new cluster needs to be created,
#in order to do that you need to bootstrap this node#这里可以写域名或者IP地址
wsrep_cluster_address=gcomm://hctjosmysql01.hccos.cn,hctjosmysql02.hccos.cn,hctjosmysql03.hccos.cn

# In order for Galera to work correctly binlog format should be ROW
binlog_format=ROW

# MyISAM storage engine has only experimental support
default_storage_engine=InnoDB

# Slave thread to use
wsrep_slave_threads= 8

wsrep_log_conflicts

# This changes how InnoDB autoincrement locks are managed and is a requirement for Galera
innodb_autoinc_lock_mode=2

# Node IP address# 这个可以写可以不写
wsrep_node_address=hctjoscontroller01.homecredit.cn
# Cluster name
wsrep_cluster_name=pxc-cluster-openstack

#If wsrep_node_name is not specified,  then system hostname will be used
wsrep_node_name=pxc-cluster-openstack-node-1

#pxc_strict_mode allowed values: DISABLED,PERMISSIVE,ENFORCING,MASTER
pxc_strict_mode=ENFORCING

# SST method
wsrep_sst_method=xtrabackup-v2
#这项一定要写
#Authentication for SST method
wsrep_sst_auth="sstuser:mysql"

启动主节点

systemctl start [email protected]

在其他节点上修改/etc/percona-xtradb-cluster.conf.d/wsrep.cnf

wsrep_node_name=pxc-cluster-openstack-node-2wsrep_node_address=hctjoscontroller02.homecredit.cn
wsrep_node_name=pxc-cluster-openstack-node-3wsrep_node_address=hctjoscontroller03.homecredit.cn

在其他结点上修改/etc/percona-xtradb-cluster.conf.d/mysqld.cnf

[mysqld]
server-id=2
[mysqld]
server-id=3

在其他上启动mysql

systemctl start mysql

随便找一个节点验证

mysql> show status like ‘wsrep_cluster_size‘;
+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| wsrep_cluster_size | 3     |
+--------------------+-------+
1 row in set (0.00 sec)

注意:如果cluster已经启动,主节点down机想重新加入这个集群,直接启动mysql即可

systemctl start mysql

如果这个集群中最后的节点也down机了,在任何一个节点都可以启动集群,重新启动集群需要执行

systemctl start [email protected]

原文地址:https://www.cnblogs.com/demonzk/p/8444450.html

时间: 2024-11-13 08:48:52

【Linux】【Services】【IaaS】OpenStack-Pike(2.搭建高可用的MySQL数据库)的相关文章

搭建高可用web和数据库集群

1.项目简介即拓扑图本次设计使用keepalived与lvs搭建一个调度器集群,实现lvs调度器的高可用,当lvs调度器的master宕机后,keepalived会自动切换到backup上.调度后面的web集群,实现web集群的负载均衡,前方调度器会根据lvs算法把服务发给web集群中的主机去响应.在web集群后面搭建数据库集群,数据库设置主主结构,并添加keepalived来实现高可用.具体拓扑图如下: 2.环境准备机器名称 IP配置 服务角色 备注LVS1-master 192.168.4.

keepalived+nginx搭建高可用and负载均衡集群

keepalived+nginx搭建高可用and负载均衡集群 前言 因生产环境需要,现需要搭建一个前端为nginx的HA双向互备.后端为nginx代理的loadbalance负载均衡集群.nginx进程基于于Master+Slave(worker)多进程模型,自身具有非常稳定的子进程管理功能.在Master进程分配模式下,Master进程永远不进行业务处理,只是进行任务分发,从而达到Master进程的存活高可靠性,Slave(worker)进程所有的业务信号都由主进程发出,Slave(worke

搭建高可用mongodb集群(四)—— 分片(经典)

转自:http://www.lanceyan.com/tech/arch/mongodb_shard1.html 按照上一节中<搭建高可用mongodb集群(三)-- 深入副本集>搭建后还有两个问题没有解决: 从节点每个上面的数据都是对数据库全量拷贝,从节点压力会不会过大? 数据压力大到机器支撑不了的时候能否做到自动扩展? 在系统早期,数据量还小的时候不会引起太大的问题,但是随着数据量持续增多,后续迟早会出现一台机器硬件瓶颈问题的.而mongodb主打的就是海量数据架构,他不能解决海量数据怎么

搭建高可用mongodb集群(二)—— 副本集

http://www.lanceyan.com/tech/mongodb/mongodb_repset1.html 在上一篇文章<搭建高可用MongoDB集群(一)——配置MongoDB> 提到了几个问题还没有解决. 主节点挂了能否自动切换连接?目前需要手工切换. 主节点的读写压力过大如何解决? 从节点每个上面的数据都是对数据库全量拷贝,从节点压力会不会过大? 数据压力大到机器支撑不了的时候能否做到自动扩展? 这篇文章看完这些问题就可以搞定了.NoSQL的产生就是为了解决大数据量.高扩展性.高

搭建高可用mongodb集群—— 分片

从节点每个上面的数据都是对数据库全量拷贝,从节点压力会不会过大? 数据压力大到机器支撑不了的时候能否做到自动扩展? 在系统早期,数据量还小的时候不会引起太大的问题,但是随着数据量持续增多,后续迟早会出现一台机器硬件瓶颈问题的.而mongodb主打的就是海量数据架构,他不能解决海量数据怎么行!不行!“分片”就用这个来解决这个问题. 传统数据库怎么做海量数据读写?其实一句话概括:分而治之.上图看看就清楚了,如下 taobao岳旭强在infoq中提到的 架构图: 上图中有个TDDL,是taobao的一

搭建高可用mongodb集群(四)—— 分片

转载自LANCEYAN.COM 按照上一节中<搭建高可用mongodb集群(三)—— 深入副本集>搭建后还有两个问题没有解决: 从节点每个上面的数据都是对数据库全量拷贝,从节点压力会不会过大? 数据压力大到机器支撑不了的时候能否做到自动扩展? 在系统早期,数据量还小的时候不会引起太大的问题,但是随着数据量持续增多,后续迟早会出现一台机器硬件瓶颈问题的.而mongodb主打的就是海量数据架构,他不能解决海量数据怎么行!不行!“分片”就用这个来解决这个问题. 传统数据库怎么做海量数据读写?其实一句

搭建高可用mongodb集群(三)—— 深入副本集内部机制

http://www.lanceyan.com/tech/mongodb_repset2.html 在上一篇文章<搭建高可用mongodb集群(二)—— 副本集> 介绍了副本集的配置,这篇文章深入研究一下副本集的内部机制.还是带着副本集的问题来看吧! 副本集故障转移,主节点是如何选举的?能否手动干涉下架某一台主节点. 官方说副本集数量最好是奇数,为什么? mongodb副本集是如何同步的?如果同步不及时会出现什么情况?会不会出现不一致性? mongodb的故障转移会不会无故自动发生?什么条件会

搭建高可用mongodb集群(一)——配置mongodb

搭建高可用mongodb集群(一)--配置mongodb 在大数据的时代,传统的关系型数据库要能更高的服务必须要解决高并发读写.海量数据高效存储.高可扩展性和高可用性这些难题.不过就是因为这些问题Nosql诞生了. NOSQL有这些优势: 大数据量,可以通过廉价服务器存储大量的数据,轻松摆脱传统mysql单表存储量级限制. 高扩展性,Nosql去掉了关系数据库的关系型特性,很容易横向扩展,摆脱了以往老是纵向扩展的诟病. 高性能,Nosql通过简单的key-value方式获取数据,非常快速.还有N

使用keepalived搭建高可用的LVS-DR集群

使用keepalived搭建高可用的LVS-DR集群   一:Keepalived服务概述 keepalived 是一个类似于 layer3, 4 & 5 交换机制的软件,也就是我们平时说的第 3 层.第 4 层和第 5层交换. Keepalived 的作用是检测 web 服务器的状态,如果有一台 web 服务器死机,戒工作出现故障,Keepalived 将检测到,并将有故障的 web 服务器从系统中剔除,当 web 服务器工作正常后 Keepalived 自劢将web 服务器加入到服务器群中,