luozhaode:博主这篇有关脑裂的文章是我看到过的理解的最透彻的。真是学习了,不过在实际工作中还是对脑裂存在着疑惑,恳请博主释疑一下。谢谢!
我们熟知的脑裂问题一般表现形式是:
在mysql主备上安装集群软件,比如keepalive管理VIP的飘逸、Heartbeat管理包括VIP在内的共享资源的转移等。主备间是通过心跳网络来维持的,一旦主备间的通信中断或者心跳网络不稳定,彼此都不知道对方的状态而抢夺包括VIP在内的共享资源,比如都将VIP占为己有,从而业务两边可访问,导致数据错乱。
而实际工作中,我们并没有在Mysql的主备库上安装集群软件,而是由第三方HAmonitor(和MHA的manage node角色相似)来监控主库是否可用,当然为了达到这个目的,我们在MySQL主备库中都会安装agent来和monitor进行通信。当monitor发现主库宕掉以后,就会先将VIP从主库中摘除,进行主备切换,然后将VIP绑定到备库上。这种情况下,还会发生脑裂问题吗,是不是脑裂的表现形式转移成了monitor和主库之间的链路中断而引出的问题呢?
着这里,第三方HAmonitor如果是单独的节点,其实HAmonitor就起到了仲裁的作用。monitor和主库之间的链路中断会导致旧主的VIP摘不掉,这个不属于脑裂的问题而是资源释放的问题。