Percona XtraDB Cluster(简称PXC)集群是基于Galera,事务型应用下的通用的多主同步复制插件,主要用于解决强一致性问题,使得各个节点之间的数据保持实时同步以及实现多节点同时读写。提高了数据库的可靠性,也可以实现读写分离,是MySQL关系型数据库中大家公认的集群优选方案之一。
1、安装PXC软件包
这里使用的是官方最新的软件包Percona XtraDB Cluster 5.7.22-29.26,对应的操作系统是Oracle Linux 7.5。主机列表如下表所示:
在各个节点分别使用yum进行安装,如下:
[root@mydb03 ~]# yum -y install Percona-XtraDB-Cluster-57
[root@mydb04 ~]# yum -y install Percona-XtraDB-Cluster-57
[root@mydb05 ~]# yum -y install Percona-XtraDB-Cluster-57
安装完成后,分别启动各个节点的MySQL服务,更改root@localhost的密码,更改完成后再关闭MySQL服务。以mydb03作为示例,如下:
[root@mydb03 ~]# grep 'temporary password' /var/log/mysqld.log
[root@mydb03 ~]# mysql -uroot -p
mysql> alter user root@localhost identified by “abcABC@12”;
mysql> flush privileges;
2、编辑PXC配置文件
编辑/etc/percona-xtradb-cluster.conf.d/mysqld.cnf文件,修改或者加入如下内容:
#mydb03对应1,mydb04对应2,mydb05对应3
server-id=1
expire_logs_days=1
log_timestamps=system
collation-server=utf8_general_ci
character-set-server = utf8
编辑/etc/percona-xtradb-cluster.conf.d/wsrep.cnf文件,修改以下内容:
[mysqld]
wsrep_provider=/usr/lib64/galera3/libgalera_smm.so
#加入各个节点的IP
wsrep_cluster_address=gcomm://192.168.120.129,192.168.120.130,192.168.120.131
binlog_format=ROW
default_storage_engine=InnoDB
wsrep_slave_threads= 8
wsrep_log_conflicts
innodb_autoinc_lock_mode=2
#节点主机名,其他节点需要更改
wsrep_node_name=mydb03
#节点IP,其他节点需要更改
wsrep_node_address=192.168.120.129
#集群名称
wsrep_cluster_name=pxc-cluster
pxc_strict_mode=ENFORCING
wsrep_sst_method=xtrabackup-v2
#sstuser用户的密码任意设置
wsrep_sst_auth="sstuser:passw0rd"
3、启动PXC集群服务
首先在mydb03上启动PXC集群服务,其它节点后续再加进来即可。
[root@mydb03 ~]# systemctl start [email protected]
[root@mydb03 ~]# mysql -uroot -p
mysql> show status like 'wsrep%';
创建配置文件里定义的sstuser用户(只在第一个启动的节点执行,其他节点启动后会自行同步)。
mysql> CREATE USER 'sstuser'@'localhost' IDENTIFIED BY 'passw0rd';
mysql> GRANT RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON *.* TO 'sstuser'@'localhost';
mysql> FLUSH PRIVILEGES;
将其它节点加入集群,只要启动MySQL服务即可。
[root@mydb04 ~]# systemctl start mysqld
[root@mydb05 ~]# systemctl start mysqld
集群状态验证:
mysql> show status like '%wsrep_clust%';
4、PXC同步测试
任意一节点创建表或者数据库,在其他节点查询验证:
[root@mydb03 ~]# mysql -uroot -p
mysql> create database xdb;
[root@mydb04 ~]# mysql -uroot -p
mysql> show databases;