11.3 如何实现自动的主从切换?



前面介绍了:主从库之间的切换,以及主库突然挂了,业务应用应该如何从主库切换到从库。

但是,上述不足:只能手动。那能不能自动呢?

一、如何实现自动的主从切换?

第一步:切换主备数据库;

第二步:把业务应用,从主库切换到从库。

1.1 方案1:Keepalived,用于虚拟ip的漂移

1.特点

很多公司在用。

多功能:两步都能做。

2.原理

  • 把宕机了的库A,的虚拟IP摘下来,放到A' 上。
  • 顺便,把A' 改为主库

1.2 方案2:MHA(Master High Availability):主库的高可用(重)

1.特点

挺火。

在facebook工作的日本工程师写的。

本质:是个perl语言写的静态的脚本。

不足:不能自动的切换负载。(后续配合dble,可以)

2.架构图

一主两备:一般生产上的重要业务,都是这么配置

3.主库宕机时的自动切换过程

1.

突然:主库A挂了,主备复制的流程也瞬间断了。

  • 如果是半同步的复制类型,那么一般情况下binlog都会传送过去。但是,如果发生了脱扣(过了超时时间),那么就会产生未传送的binlog。
  • 针对上述问题,MHA做了针对性的对策:

2.

数据可靠性优先的切换策略。追赶上Master,就是从库把所有从主库传送过来的中继日志都重放完了。

3.

对于未传送的中继日志,再执行

4.

此时,从库就跟主库宕机之前,完全一致。

这时就可以进行主从身份的切换了。

5.

MHA,工作完成了。因为是一次性的,就退出了。

后续,运维就会上来修复宕机的A。

1.3 方案3:自研高可用组件

perl语言编写,维护难;

实现了MHA的逻辑,然后增强逻辑。

像公司,就是使用Java+Spring Boot做了一个自研的高可用的组件。

一次可以监听几百套MySQL数据库。

还可以接公司的云平台。

二、小结

声明:Jerry's Blog|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - 11.3 如何实现自动的主从切换?


Follow excellence, and success will chase you.