MHA + DNS 自动切换导致的故障
本文主要描述因为网络不通,导致mha误认为主库宕机,自动切换后,所造成的故障。 欢迎转载,请注明作者、出处。 作者:张正 blog:http://space.itpub.net/26355921 QQ:176036317 如有疑问,欢迎联系。 架构: 架构描述: 程序通过DNS与数据库相连,数据库主库写入,备库提供读,通过DNS来进来分离的。Mha管理节点发现主库挂掉,进行切换之后,还有后置脚本将读和写的DNS进行修改、切换。 故障描述: mha中的manager节点因为网络不通而无法Master节点,导致其认为Master已经挂掉,就进行了切换,将主库切到Slave Read 上,修改写DNS之后,Slave Read节点就提供了读和写。 但是程序中有一部分机器与原Master之间网络是通的,而且由于是通过DNS进行连接的,DNS是建立连接后就保持长连接,之后就不再进行解析。因此程序中有一部分机器仍然在往原Master中写入数据,而且有另一部分机器往Slave Read上写入数据。这样就导致数据丢失了。 解决办法: 在mha切换后的后置脚本中,添加检测原Master的mysql进程并...