MHA上有这个报错
MHA上有这个报错

我来答
添加附件
收藏
复制链接
微信扫码分享
在小程序上查看
分享
添加附件
问题补充
2条回答
默认
最新
采纳答案后不可修改和取消
从错误日志里的提示:《target master‘s advisory lock is already held by someone. Please check whether you monitor the same master。。。》
mysql主节点是否存在。
mha代码里内容:也是验证主库状态
( $ret, $ssh_reachable ) = $master_ping->wait_until_unreachable();
( $ret, $ssh_reachable ) = $_master_ping->wait_until_unreachable();
if ( $ret eq '2' ) {
$log->error(
"Target master's advisory lock is already held by someone. Please check whether you monitor the same master from multiple monitoring processes."
评论
有用 0杀死对应监控集群主库MHA连接的会话( kill xxx; )或者重启主库
- 杀死对应监控集群主库MHA连接的会话即可,原理
- MHA在监控对应实例之前,会发起一个锁请求
SELECT GET_LOCK('MHA_Master_High_Availability_Monitor', ?) AS Value,如果加锁成功则返回成功,如果加锁不成功则会提示有另外的进程在监控该实例 - MHA在结束监控之后,会释放锁
SELECT RELEASE_LOCK('MHA_Master_High_Availability_Monitor') As Value,或者直接关闭连接(也可以释放锁) - 如果MHA在异常退出之后没有关闭MySQL的会话,那么该锁会一直存在,且无法再次启动MHA进程
- MHA在监控对应实例之前,会发起一个锁请求
- 其他过程加锁
use constant Get_Failover_Lock_SQL =>
"SELECT GET_LOCK('MHA_Master_High_Availability_Failover', ?) AS Value";
use constant Release_Failover_Lock_SQL =>
"SELECT RELEASE_LOCK('MHA_Master_High_Availability_Failover') As Value";
use constant Get_Monitor_Lock_SQL =>
"SELECT GET_LOCK('MHA_Master_High_Availability_Monitor', ?) AS Value";
use constant Release_Monitor_Lock_SQL =>
"SELECT RELEASE_LOCK('MHA_Master_High_Availability_Monitor') As Value";
评论
有用 1回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
墨值悬赏

