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
不出意外的状况下,会报下面的错误:

查看源代码:app

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

源码 DBHelper.pm片断线程

 

报错的缘由是切换成功后,原master变成了slave,而新slave上的binlog dump gtid线程并无没停掉,理论上切换成功后,因为角色的转换,原master变成slave,binlog dump gtid进程应该中止运行的,为何没有被中止掉呢?
 
 
查看新master上的报错日志。

链接丢失,原来是链接丢失致使slave没接收到信号,因此进程没有被停掉。3d

 
该问题能够经过配置主从同步心跳检测时间来提早触发主从检测,从而达到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进程很快就被清理了,也不会报错了。

 

相关文章
相关标签/搜索
本站公众号
   欢迎关注本站公众号,获取更多信息