CentOS7安装Percona XtraDB Cluster实现mysql高可用
Percona XtraDB Cluster 是MySQL数据库集群解决方案。具有高可用性,能避免单点故障和数据丢失,并支持线性扩展。
- 优点:
- 同步复制:数据会同时写入所有节点。
- 多主复制:任何节点都可以触发数据更新。
- 并行复制:多个线程同时执行复制,无延迟。
- 扩展容易:添加新节点自动同步,失效节点自动剔除。
- 局限:
- 只支持InnoDB引擎。
- 所有表都要有主键。
- 不支持LOCK TABLE等显式锁操作。
- 至少3节点。
三台CentOS 7
Node | Host | IP |
---|---|---|
test1 | test1.com | 192.168.31.93 |
test2 | test2.com | 192.168.31.119 |
test3 | test3.com | 192.168.31.165 |
安装:
1,配置防火墙和开启端口
systemctl start firewalld
firewall-cmd --zone=public --add-service=mysql --permanent
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --zone=public --add-port=4567/tcp --permanent
firewall-cmd --zone=public --add-port=4568/tcp --permanent
firewall-cmd --zone=public --add-port=4444/tcp --permanent
firewall-cmd --zone=public --add-port=4567/udp --permanent
firewall-cmd --reload
firewall-cmd --list-all
2、配置安装源
sudo yum install http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm
3、使用yum安装 Percona XtraDB Cluster 5.7
sudo yum install Percona-XtraDB-Cluster-full-57
#启动服务
sudo service mysql start
#查看自动生成的密码
sudo grep 'temporary password' /var/log/mysqld.log
#登陆
mysql -u root -p
#修改密码
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'rootPass';
#创建sst账户并赋予权限
mysql> CREATE USER 'sstuser'@'localhost' IDENTIFIED BY 'passw0rd';
mysql> GRANT RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON *.* TO 'sstuser'@'localhost';
mysql> FLUSH PRIVILEGES;
退出
mysql> exit
配置集群
1、先关闭服务 sudo service mysql stop
2、编辑配置文件: vi /etc/percona-xtradb-cluster.conf.d/wsrep.cnf
#共同配置
wsrep_cluster_name=pxc-cluster
wsrep_cluster_address=gcomm://192.168.31.93,192.168.31.119,192.168.31.165
wsrep_sst_auth=sstuser:passw0rd
#节点1
wsrep_node_name=pxc1
wsrep_node_address=192.168.31.93
节点2
wsrep_node_name=pxc2
wsrep_node_address=192.168.31.119
节点3
wsrep_node_name=pxc3
wsrep_node_address=192.168.31.165
启动第一个节点
#确保mysql停止
sudo service mysql stop
#主节点启动命令
systemctl start mysql@bootstrap.service
登陆:
mysql -uroot -prootPass
#检查配置是否正确
show status like 'wsrep%';
把其他节点加入集群
#启动从节点
systemctl start mysql