前面介绍了:主从库之间的切换,以及主库突然挂了,业务应用应该如何从主库切换到从库。
但是,上述不足:只能手动。那能不能自动呢?
一、如何实现自动的主从切换?
第一步:切换主备数据库;
第二步:把业务应用,从主库切换到从库。
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数据库。
还可以接公司的云平台。
Comments | NOTHING