双机mysql cluster的脑裂

两台机器构成的mysql cluster, 每台上都跑ndbd_mgmd, ndbd, mysqld

ndb_mgmd -f /var/lib/mysql-cluster/config.ini -v --nodaemon &
ndbd

拔一台机器网线后,没拔网线机器的ndbd应该接管,实际上却自动重启,导致整个mysql cluster不能服务。
分析:mysqld和ndb_mgmd会选举一个作为arbitrator仲裁者,以避免网络断开后两套系统各自为政, 出现脑裂 split-brain
所以mysql推荐三台以上机器配置,ndbd_mgmd放在中间机器上作为仲裁者。
两台机器的情况下,如果恰好作为仲裁者的机器网线被拔,另外一机器会认为自己与网络断开,所以ndbd进程被重启。

解决方法:在config.ini中设置Arbitration=WaitExternal
然后写一个ping网关的脚本来手工杀死或者启动mysql

一个有趣的现象,出现脑裂后,自动愈合很简单,一边数据覆盖掉另外一边。

另外,mysql cluster node加入节点会很慢。但是经过正常ndb_mgm -e "shutdown"命令停止的server会很快启动并正常服务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值