基于Keepalived的Mysql双主单活故障自动切换方案(三)

举报
pro_cheng 发表于 2017/12/12 18:58:13 2017/12/12
【摘要】 本文主要讲述基于Keepalived的Mysql双主单活故障自动切换方案中,keepalived异常检测,节点切换原理。在此基础上对数据一致性及切换时间进行了分析。

1 Keepalived部署

1.1 双主单活故障自动切换原理

    1)两个节点均安装keepalived组件,假设初始状态时,浮动IPDB1,通过keepalived调用脚本定期检查MySQL服务可用性。检测方法:通过一个低权限用户连接MySQL服务器并执行一个简单查询,根据返回结果来判定MySQL是否可用。

    2)若步骤1)查询失败,则检查MySQL服务状态,分以下两种情况:

   (1)若服务异常,则执行切换:关闭DB1keepalived,使VIP漂移至DB2,通过DB2keepalivednotify_master机制,触发脚本将DB2mysql从被动状态(只读)切换到主动状态(可读写),并发送通知邮件。

   (2)若服务正常(则可能是一些临时性因素导致的监测失败),等待一段时间(如5秒)做第二次检查,这5s是对瞬时/短时因素造成检查失败的容忍时间。循环操作,若连续三次查询全部失败,则执行主备切换动作。

    3)主备切换流程如下:

   (1)将DB1MySQL设置为 read_only模式 (阻止写请继续求进入)。

   (2kill掉当前客户端的线程,然后等待2秒,给kill命令一些时间。

   (3)关闭DB1keepalived,使DB2接管VIP。通过DB2keepalivednotify_master机制,触发脚本将DB2mysql从被动状态(只读)切换到主动状态(可读写),并发送通知邮件。

1.2 数据一致性及切换时间分析

连续两次失败以后,通过对主MySQL设置read_only属性,同时kill掉用户线程来保证在DB2接管服务之前,DB1上已经没有写操作,避免主从数据不一致。

切换时间:10s(三次检测间隔)+2s(等待kill命令时间)+1skeepalived 切换VIP),总时间不会超过13s


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。