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