且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

MHA + DNS 自动切换导致的故障

更新时间:2022-09-05 18:36:32

本文主要描述因为网络不通,导致mha误认为主库宕机,自动切换后,所造成的故障。


欢迎转载,请注明作者、出处。

作者:张正
blog:http://space.itpub.net/26355921 
QQ:176036317
如有疑问,欢迎联系。

架构:

MHA + DNS 自动切换导致的故障
架构描述:
程序通过DNS与数据库相连,数据库主库写入,备库提供读,通过DNS来进来分离的。Mha管理节点发现主库挂掉,进行切换之后,还有后置脚本将读和写的DNS进行修改、切换。
故障描述:
mha中的manager节点因为网络不通而无法Master节点,导致其认为Master已经挂掉,就进行了切换,将主库切到Slave Read 上,修改写DNS之后,Slave Read节点就提供了读和写。
但是程序中有一部分机器与原Master之间网络是通的,而且由于是通过DNS进行连接的,DNS是建立连接后就保持长连接,之后就不再进行解析。因此程序中有一部分机器仍然在往原Master中写入数据,而且有另一部分机器往Slave Read上写入数据。这样就导致数据丢失了。
解决办法:
在mha切换后的后置脚本中,添加检测原Master的mysql进程并kill掉的内容。
具体内容这里就不提供了。
本文转自ITPUB博客84223932的博客,原文链接:MHA + DNS 自动切换导致的故障,如需转载请自行联系原博主。