pcie 卡 mysql 僵尸进程_MHA之Binlog Dump (GTID)僵尸进程清理

master存活的状态下切换

masterha_master_switch --conf=/etc/masterha/app1.cnf --master_state=alive --new_master_host=192.168.0.101 --orig_master_is_new_slave --running_updates_limit=1000

不出意外的情况下,会报下面的错误:

79fc5f2cdc70fbd7d9a48466dc038f27.png

查看源代码:

53f2c19e98f6cca49cbe595b01abb64d.png

7799599.html

在新master上获取正在执行的进程,也就是show processlist操作。并且将获取到的processlist信息进行分析判断,如果新master当前还存在binlog dump或binlog dump gtid进程等,则无法切换。

a9d446c5f0332102d2d00a6ed7ac8958.png

源码 DBHelper.pm片段

7a0c01ccd134c0dca39a16d09c057c74.png

7799599.html

报错的原因是切换成功后,原master变成了slave,而新slave上的binlog dump gtid线程并没有没停掉,理论上切换成功后,由于角色的转换,原master变成slave,binlog dump gtid进程应该停止运行的,为什么没有被停止掉呢?

98db78023e2b690569c6ec1bfa1bbfb2.png

7799599.html

查看新master上的报错日志。

3e0b75d27889c7cd2aec3270a23701d1.png

连接丢失,原来是连接丢失导致slave没接收到信号,所以进程没有被停掉。

该问题可以通过配置主从同步心跳检测时间来提前触发主从检测,从而达到slave上的binlog dump gtid进程提前停止。系统默认主从检测时间是3600S。

配置如下,在可能会成为master的slave上执行

stop slave;

change master to master_heartbeat_period = 10;

set global slave_net_timeout = 25;

start slave;

在当前主上执行

change master to master_heartbeat_period = 10;

set global slave_net_timeout = 25;

可以直接配置在配置文件中

slave_net_timeout = 25

再次手动切主的时候就发现binlog dump gtid进程很快就被清理了,也不会报错了。

7799599.html

651c7aba8c2a10191f4c7e91833aa169.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值