本文主要描述因为网络不通,导致mha误认为主库宕机,自动切换后,所造成的故障。
架构:
欢迎转载,请注明作者、出处。
作者:张正
blog:http://space.itpub.net/26355921
QQ:176036317
如有疑问,欢迎联系。
架构:
![](http://img.blog.itpub.net/blog/attachment/201408/8/26355921_1407494593NNc8.jpg?x-oss-process=style/bb)
架构描述:
程序通过DNS与数据库相连,数据库主库写入,备库提供读,通过DNS来进来分离的。Mha管理节点发现主库挂掉,进行切换之后,还有后置脚本将读和写的DNS进行修改、切换。
故障描述:
mha中的manager节点因为网络不通而无法Master节点,导致其认为Master已经挂掉,就进行了切换,将主库切到Slave Read 上,修改写DNS之后,Slave Read节点就提供了读和写。
但是程序中有一部分机器与原Master之间网络是通的,而且由于是通过DNS进行连接的,DNS是建立连接后就保持长连接,之后就不再进行解析。因此程序中有一部分机器仍然在往原Master中写入数据,而且有另一部分机器往Slave Read上写入数据。这样就导致数据丢失了。
解决办法:
在mha切换后的后置脚本中,添加检测原Master的mysql进程并kill掉的内容。
具体内容这里就不提供了。
此次故障,先做记录,后续完善。
具体内容这里就不提供了。
此次故障,先做记录,后续完善。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26355921/viewspace-1248083/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/26355921/viewspace-1248083/