记一次 MHA 切换故障踩的坑
MHA简单架构如下
主机高可用(MHA)
Master1:192.168.1.74
Master-bak:192.168.1.75:3306
Master-vip:192.168.1.174
Manager:192.168.1.77
其他用途
Delay:192.168.1.75:3307
Slave:192.168.1.78:3307
故障演练
早上 07:05分开始操作
停掉主库192.168.1.74:3306
New Master: 192.168.1.75:3306
Slave2:192.168.1.75:3308
一开始都是正常的,切换IP漂移,到了主从身份切换的时候就出现问题了。
Slave recovery on host 192.168.1.75(192.168.1.75:3308) started, pid: 18456. Check tmp log /home/mha/192.168.1.75_3308_20200513070525.log if it takes time..
Master failover to 192.168.1.75(192.168.1.75:3306) done, but recovery on slave partially failed.
主从的复制环境是GTID模式,肯定是复制的时候出现错误。登上去从机看此时的主从情况
原因是Master上已经清除了Slave所需要的binary logs 。有点不知其然,明明都是实时同步的,不知道怎么的就突然缺失了。
一时之间解决不了,想到把停掉的旧主74:3306重新启动起来change to New master ,看看会不会报同样的错误
早上 07:52分重新执行change
由于旧主74:3306之前是主机,并没有开启read_only ,所以在配置文件里面把read_only=on开启 (这点很重要!)
重新change
结果还是一样。
失败之后还发生了有异样的事情
此时我重新启动的旧主机有进程进来。此时不应该有的, 因为在研发那边,业务层代码应该把IP改为了高可用IP
174
于是询问下了研发,那边说已经全部修改完毕。我觉得可能是由于缓存之类的,涉及到查询select之类的,并不会对数据进行修改,于是便继续排查主从复制失败的原因。由于这一次大意导致了我接下来跟研发惨无人道的数据修复之路
早上 10:20分发现权限不对
研发那边反馈查的数据好像不一致,我隐隐约约觉得不太对劲,他们说还有写的业务是连接
74
的,我说我在74这边有开 read_only
你们的写入操作都进不来的。但是由于职业性的要求,比较敏感。去排查了一下进来的业务用户的权限。发现了一个权限
早上 10:34分关站,切IP
此时数据完全都不一致了,有两台机子同时写入。紧急关站
把用户权限 super
remove 同时把74停掉,叫研发把业务暂时全部切过去高可用IP 174
中午11:15分用户投诉订单丢失
说十点多的刚下的订单 涉及金额一千多块钱,刚付款,订单就消失了。
这个数据应该在
74
上,目前74都已经停了, 所以读写基本都是在 174
上事态紧急,连忙把
74
起来,同时把 10:34分-11:15分这个期间在 174
上的Binlog在74上进行重灌,想把74恢复成一台数据完整的机子,然后再切回去。由于太急,处理突发事故的经验也不足,并没有考虑到Binlog里面有
update
语句, 认为都是 insert
BInlog导入之后。认为数据一致,重新把业务切回去
74
上
下午15:12分四笔订单离奇失踪
开发反馈,有四笔订单,在
74
上找不到 在 174
上也找不到,业务逻辑上并没有删除 delete
的逻辑此时发现重灌的Binlog里面有
update
,已经把之前存在 74
的数据给update掉了。数据丢失
流程梳理
PS:ID是主键而且是自增的
假如
74
上在AB段已经insert/update
的数据ID=100 values=A
ID=101 values=B
ID=102 values=C
后来在
174
在BC段已经insert/update
的数据ID=100 values=D
ID=101 values=E
ID=102 values=F
在重灌的时候把数据A、B、C改为D、E、F (因为ID一致)
修复数据
在查找binlog的过程当中,筛选出07:52-10:34中在
74
中数据(根据10:34-11:15中在174
筛选出被update
的ID)查找insert
的语句,过滤出来重新插入接下来就是重复无止境的重复修复操作了。
····
版权声明: 本文为 InfoQ 作者【一个有志气的DB】的原创文章。
原文链接:【http://xie.infoq.cn/article/f695bc0b67e6b7213d0a53919】。未经作者许可,禁止转载。
评论