[ java-003 ] Mysql PXC集群
本章节介绍Mysql集群方案中的一种,著名的MySQL服务和工具提供商percona实现的percona xtradb cluster,简称PXC
PXC介绍
Percona XtraDB Cluster (PXC) 是一个开源企业 MySQL 解决方案,可帮助您确保应用程序的数据可用性,同时提高安全性并简化在要求最苛刻的公共云、私有云和混合云环境中开发新应用程序的过程
在高可用环境下重启mysql服务需要严格按照顺序来进行,否则会导致mysql集群重启失败宕机
1.在主节点systemctl restart mysql@bootstrap
2.在node节点systemctl restart mysql
主节点判断
- 所有节点的safe_to_bootstrap值最大的为主节点;
- 所有节点的safe_to_bootstrap值都为0,查看seqno的值,将seqno值最大的节点的safe_to_bootstrap的值手动改为1,然后启动主节点;
- 所有节点的safe_to_bootstrap值都为0,且seqno的值相等,可任选一节点将safe_to_bootstrap的值手动改为1,然后启动主节点;
- 所有节点的safe_to_bootstrap值都为0,且其中两个节点seqno的值最大相等,可对比数据库数据大小,一般最大的那个是主节点
注意事项
- 集群关闭之后,再启动,谁做第一个节点谁就执行systemctl start mysql@bootstrap;
- 如果最后关闭的PXC节点是安全退出的,那么下次启动要最先启动这个节点,而且要以主节点启动;
- 如果最后关闭的PXC节点不是安全退出的,那么要先修改/data/mysql/grastate.dat 文件,把其中的safe_to_bootstrap属性值设置为1,再安装主节点启动;
- 除了名义上的master之外,其它的node节点只需要启动mysql,即systemctl start mysql
最终连接数据库临时换用北向IP和外部端口的方式,这种虽然能临时解决问题,但是pxc本身应该是高可用和负载的目的,改成这种后,失去了负载的目的,每次写到会到主Node节点上的pod
总结
PXC目前使用的企业不是很多,但我们仍需要了解这种架构的用法和优缺点,特别是节点的对等性问题,会导致节点非常容易出现数据冲突异常问题,在处理新增数据时,尽量不要采用自增主键的方式,可以使用雪花主键。但是更新数据时,无可避免,这时只能采用业务规避的方法,例如在操作时加上redis锁。PXC的强一致性,基本不会产生什么脏数据,这也是其中优点之一
转载自:https://juejin.cn/post/7086805375814467592