MySQL高可用集群的VIP切换

1、目的
实如今mysql高可用集群的VIP切换,不涉及数据补偿python

2、基础环境
python3.0+ mysql

3、具体三大部分
一、启动条件检测sql

  • 检测集群是否down机 方式 select 1
  • 检测主库是否有VIP绑定 方式是 采用vip进行链接
  • 检测从库是否正常复制和延迟
  • 检测从库是否开启binlog中继日志写入
  • 检测集群是否已经开启了加强半同步方式
  • 检测集群是否开启了GTID复制

二、高可用切换流程post

  • 主库down机 若是失败则进行尝试三次进行断定
  • 摘掉原主VIP,若是能进行SSH登陆的话
  • 从slave节点中选择新主 判断方式
  • 打开new master节点读写功能
  • new master上绑定VIP
  • 在日志中生成change语句
  • 发送报警邮件

三、新主断定条件spa

  • 选择集群从库加入选举组,条件是sql_thread 状态为YES
  • 根据集群的成员对比 binlog(name and postion) 进行排序,选择头部成员
  • 对新主进行进一步断定,断定条件为second_master_behind
  • 若是为0,确保sql_thread已应用彻底部relay-log
  • 第三步判断成功,则针对新主采起如下操做:

set global read_only= off 关闭读写
ifconfig vip 绑定VIP日志

4、相关注意点
一、云环境和多实例环境并不适合VIP环境,因此此文章不适用,不过大致原理相同
二、数据补偿依赖加强半同步复制,这是必须的
三、在绑定VIP以前须要arpping VIP,防止出现脑裂问题
四、采用一个集群启动一个进程方式,防止出现问题互相影响,固然若是你的python能力很高,能够随意改造
五、监控好你的从库健康状况,防止高可用切换的时候无健康从库可用排序

5、关于应用场景状况
一、对于集群都出现延时的状况比较少见
二、一旦发生这种状况而又致使切换
重要场景 会坚持relay-log应用完才会进行切换,业务响应排后
非重要场景 不考虑relay-log应用状况进行直接进程

6、总结
本文章只是提供一个思路,若有意见能够联系本人进行修订ip

7、切换日志图示
切换日志图示get


本文选自知数堂学员-邓志航的文章;
邓志航,MySQL DBA,天生的MySQL爱好者,热衷于为他人解决问题,善于总结和分享。
对数据平台构建和排查疑难问题有很是浓厚的兴趣


公众号:知数堂,更多MySQL干货知识,关注公众号获取。

原文连接:https://zhishutang.com/Fte

推荐阅读:https://zhishutang.com/xdI

相关文章
相关标签/搜索