1.目的是在mysql高可用集群中实现vip切换,不涉及数据补偿2.基础环境python3.0+3.具体三部分机器模式选择1检测主库是否有VIP绑定方法是使用vip连接检测从库是否正常复制和延时检测从库是否开启了binlog中继日志写入和检测集群是否开启。增强型半同步方式检测集群是否开启GTID复制2.高可用切换过程。如果主库宕机,尝试3次,判断去掉原来的masterVIP。如果可以SSH登陆,从slave节点选择新的master判断方式。开启新master节点读写功能new绑定master上的VIP在日志中生成change语句并发送告警邮件3.新master决策条件从库中选择集群加入选举组,条件就是sql_thread状态为YES并根据集群的成员对binlog(name和postion)进行排序,并选择head部门的成员对新的master做进一步的判断。判断条件是如果second_master_behind为0,保证sql_thread已经应用到所有relay-log。第三步成功,对新master进行如下操作:setglobalread_only=off禁止读写ifconfigvip绑定VIP四、相关注意点1、不适合云环境和多实例环境VIP环境,所以本文不适用,但大体原理是一样的。2、数据补偿依赖于增强型半同步复制,这是必须的。您需要在设置VIP之前对VIP进行arpping,以防止出现裂脑问题。4.使用集群启动一个进程,防止问题相互影响。当然,如果你的python能力高,可以随意修改。5.监控从库的健康度,防止在没有健康的从库时高可用切换。五、关于应用场景1、集群出现延迟的情况比较少见。会进行切换,业务响应后的非重要场景会直接进行,不考虑relay-log的应用。6.总结本文只是一个想法。唐生-邓志航的文章;邓志航,MySQLDBA,天生的MySQL爱好者,热衷于为他人排忧解难,善于总结和分享。我对数据平台的搭建和排错有着非常浓厚的兴趣公众号:知书堂,更多MySQL干货知识,关注公众号获取。
