PXC基于docker搭建mysql集群
说明
Percona XtraDB Cluster(简称PXC),是由percona公司推出的mysql集群解决方案。特点是每个节点都能进行读写,且都保存全量的数据。也就是说在任何一个节点进行写入操作,都会同步给其它所有节点写入到自己的磁盘。
环境
三台机器,设置/etc/hosts
安装docker和安装docker-compose
省略,具体参考一键部署脚本。
PXC集群安装
1.镜像拉取
Docker的镜像仓库中包含了PXC数据库的镜像,地址:
https://hub.docker.com/r/percona/percona-xtradb-cluster
因生产为内网,后续根据内网镜像仓库拉取对应版本,当前使用版本为:percona/percona-xtradb-cluster:8.0.36
2.创建证书
percona集群要求必须安装证书,集群实现加密通讯,参考:https://docs.percona.com/percona-xtradb-cluster/8.0/docker.html
生成证书
证书必须所有节点都一致!在一台机器生成后拷贝到其他机器。
3.搭建pxc集群
节点1启动pxc
节点2 加入pxc集群
**注意 **
--name=mysql-node90
-e CLUSTER_JOIN=10.196.69.88
节点3 加入pxc集群
**注意 **
--name=mysql-node92
-e CLUSTER_JOIN=10.196.69.88
4.搭建验证
日志查看
sql查看当前加入节点
5.验证过程存在问题
PXC集群注意事项
1.从节点启动之后闪退
第一种情况是由于主节点还没有启动,就启动了从节点,那这个时候从节点肯定是闪退的。
所以需要先启动主节点,再启动从节点。
2.从节点启动之后闪退
第二种情况,是由于PXC在退出的时候会给集群中最后退出的那台打上标记,当集群重新启动的时候需要先启动最后关闭的那台节点机器。(最后关闭的变为主节点)
可查看data/grastate.data
文件内容,safe_to_bootstrap: 1
为必须先启动的节点,后续节点需要加入到此ip。
3.主节点启动之后闪退
当主节点突然宕机,从节点都正常运行,这时候主节点不能按照主节点启动。
这时候需要删除主节点的容器,检查数据卷上的safe_to_bootstrap
是否为0,如果不是则改为0。然后以从节点的方式创建容器,加入集群。可以使用任何PXC节点,然后从节点加入PXC集群即可。
如模拟node88主节点故障
数据库负载均衡
参考使用Haproxy
做负载均衡官网:https://docs.percona.com/percona-xtradb-cluster/8.0/haproxy.html
暂未部署。
数据库备份
正在验证中。
参考
1.https://docs.percona.com/percona-xtradb-cluster/8.0
2.https://blog.csdn.net/dh_2017/article/details/108045552
3.https://blog.51cto.com/u_13482808/7543833