云数据库高可用——Series3:阿里云RDS数据库HA模块简介-阿里云开发者社区

开发者社区> 阿里云SRE技术社区> 正文
登录阅读全文

云数据库高可用——Series3:阿里云RDS数据库HA模块简介

简介: 云数据库高可用——Series3:阿里云RDS数据库HA模块简介

上期本文介绍了MySQL如何保证主从一致。阿里云RDS是以一主一备或一主多备的形式部署,目的是为了防止主库发生故障后的高可用,主备库之间使用同步或半同步的方式进行实时数据同步,HA模块负责监测主备之间的状态,当出现问题时也是由这个模块发起故障切换的动作。本文将简单介绍HA模块的功能。

1.健康检查

健康检查是用来检测实例主备状态,HA使用update语句通过VIP、物理机IP地址对主库进行检测,这样检测的优点为可以探测出整条链路的可用性,同时配合检测备库IO线程的健康状况,避免HA与主库间网络故障时的误判。每次update 成功时,HA都将主库的时间戳记录到HA当中,同时更新主备库的心跳表,让备库同步主库写入的时间戳,当发生切换时,对比HA中与实例备库中保存的时间戳,可以得到备库大致的延迟。作为主备延迟的判断依据之一。

2.正常切换

当发生实例版本升级,规格升级,刷新实例参数等情况时,需要对实例做主备切换。切换基本步骤如下:
(1)预检查主备延迟,如果延迟较大,那么直接退出切换,等待下次切换。
(2)如果延迟在一定范围内,那么进入切换流程,调用proxy api 切换VIP 指向备库。Proxy 此时会hold 住用户新的连接和请求,不会访问备库。
(3)kill主库连接,设置read_only参数为ON。等待主库瞬间连接上来的事务结束。
(4)读取主库master binlog 的位点信息,等待备库同步到该位点,由于之前进行过预等待所以此步骤不会等待很长时间,根据实际运行中数据观察可以控制在数秒以内。
(5)备库打开read_only 为OFF
(6)调用proxy api 放开用户连接的请求。整个切换过程不会超过10S,用户会感觉到服务器卡住一小段时间后,恢复正常。

3.故障切换

RDS实例发生故障的场景多种多样,这里仅以主备库使用异步复制模式,且主库所在主机故障导致的切换为例来讲解基本的故障切换流程。
当主库发生故障时,HA探测主库,返回的错误类型是连接超时,或者收到主库返回的rst包,那么进入切换流程。
(1)检查备库SQL线程延迟,如果有延迟,那么不切换,等待备库应用relaylog。
(2)当备库SQL线程没有延迟后,尝试连接主库,获取主库master binlog,如果能够获取,等待备库追上主库。如果不能获取(一般都是如此),那么对比主备库时间戳,如果时间戳在一定范围内,那么根据用户指定的策略决定是否切换。
(3)如果用户指定可用性优先,那么HA会将用户连接切换至备库,数据可能丢失,已经通报给用户。
(4)如果用户指定可靠性优先,那么不会切换VIP,人工介入重启主库或主实例,或拷贝redo log,修复数据,确保主备一致后,提供服务。

作者:张西来

阿里云智能GTS-SRE团队技术服务经理

曾就职于某国产数据库厂商,有10多年数据库技术支持工作经验,精通多款数据库产品,为国内多个大中银行核心数据库提供技术支持。目前就职于阿里云智能GTS-SRE团队,负责云数据库的高效运维和管理工作。

相关内容

云数据库高可用——Series4:RDS的备份恢复策略介绍
云数据库高可用——Series2:MySQL如何保证主从一致
云数据库高可用——Series1:MySQL主从复制原理背景

我们是阿里云智能全球技术服务-SRE团队,我们致力成为一个以技术为基础、面向服务、保障业务系统高可用的工程师团队;提供专业、体系化的SRE服务,帮助广大客户更好地使用云、基于云构建更加稳定可靠的业务系统,提升业务稳定性。我们期望能够分享更多帮助企业客户上云、用好云,让客户云上业务运行更加稳定可靠的技术,您可用钉钉扫描下方二维码,加入阿里云SRE技术学院钉钉圈子,和更多云上人交流关于云平台的那些事。

阿里云SRE技术学院-入群申请二维码(外部链接).png

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享: