最近遇到一个非常诡异的问题,mha后台进程自己中断退出了。以下是报错:
Mon Dec 21 20:16:07 2015 - [info] OK.
Mon Dec 21 20:16:07 2015 - [warning] shutdown_script is not defined.
Mon Dec 21 20:16:07 2015 - [info] Set master ping interval 1 seconds.
Mon Dec 21 20:16:07 2015 - [info] Set secondary check script: /etc/mha/bin/masterha_secondary_check -s 192.168.17.93 -s 192.168.18.93
Mon Dec 21 20:16:07 2015 - [info] Starting ping health check on 192.168.17.94(192.168.17.94:3306)..
Mon Dec 21 20:16:07 2015 - [info] Ping(SELECT) succeeded, waiting until MySQL doesn't respond..
Tue Dec 22 10:36:42 2015 - [info] Got terminate signal. Exit.

看报错第一反应理解为由于中断信号断开而导致退出程序

这里有个疑问:为什么我用nohup /etc/mha/bin/masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf --ignore_last_failover & 
这样的方式执行后台运行命令,怎么程序会随终端断开而退出呢?想不通。印象中以前执行都没有这样的问题的,肯定是哪里不对

查阅nohup相关的资料:
使用时注意:
在当shell中提示了nohup成功后,还需要按终端上键盘任意键退回到shell输入命令窗口,然后通过在shell中输入exit来退出终端;如果在nohup执行成功后直接点关闭程序按钮关闭终端的话,这时候会断掉该命令所对应的session,导致nohup对应的进程被通知需要一起shutdown,起不到关掉终端后调用程序继续后台运行的作用。

看到这里回忆下之前自己的操作可能是有问题的,于是对nohup操作进行下面测试:
注:mha管理服务端是安装在A机器上,

测试1:直接连接mysqlA服务器,在A服务器执行nohup /etc/mha/bin/masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf --ignore_last_failover & ,正常退出,或直接关闭终端退出都不会引起mha后台进程异常退出。

测试2:先连接mysqlB服务器,再从B服务器ssh到A服务器,再重复上面的命令当执行完后台命令后正常exit退出终端后,一切和上面的操作一样,mha后台进程不会异常退出。

测试3:先连接mysqlB服务器,再从B服务器ssh到A服务器,再重复上面的命令当执行完后台命令后非正常退出(终端超时断开或直接关闭securecrt程序)的话,这个时候mha后台进程也跟随终端退出而退出.

仔细回忆了下我确实是通过某台服务器ssh到mha服务器上面执行的命令没有正常退出终端造成的。问题终于找到了

当然如果你的问题和我的不一样也可以用另外方法避免后台进程异常退出,那就是把命令写在脚本里面通过运行脚本就万无一失了.

转载:

https://www.cnblogs.com/mysqlplus/p/5070757.html

MHA监控进程异常退出(MHA版本:0.56)的更多相关文章

  1. MHA监控进程异常退出

    这两天遇到一个非常诡异的问题,打算和大家分享一下.只所以诡异估计是自己知识面不够吧.线上的MHA一直没有开启自动切换,都是手动切换的,最近开启了自动切换以后,退出securecrt窗口以后发现监控进程 ...

  2. Nginx问题定位之监控进程异常退出

    nginx在运行过程中是否稳定,是否有异常退出过?这里总结几项平时会用到的小技巧. 1. 在error.log中查看是否有signal项,如果有,看看signal是多少. 比如,这是一个异常退出的情况 ...

  3. [典型漏洞分享]YS VTM模块存在格式化字符串漏洞,可导致VTM进程异常退出【高危】

    YS VTM模块存在格式化字符串漏洞,可导致VTM进程异常退出[高危] 问题描述: YS VTM模块开放对外监听端口(8554和8664),此次使用sulley fuzzing框架对监听在8664端口 ...

  4. Android native进程间通信实例-socket本地通信篇之——服务端进程异常退出解决办法

    导读: 好难受啊,为什么服务端说挂就挂,明明只是客户端关闭而已,服务端怎么能挂呢? 想想,如果手机上使用一个聊天程序的时候,手机端关闭了聊天程序,那么远端服务器程序总不能说挂就挂吧!所以一定要查明真相 ...

  5. 解决openoffice进程异常退出的办法:

    实现以守护进程,定时检测openoffice是否退出,如果进程不存在,通过脚本将openoffice起起来即可.   具体操作步骤: 第一步: 将openoffice.sh脚本放置在root目录下面, ...

  6. 解决openoffice进程异常退出的办法

    步骤1 编写脚本 openoffice.sh #!/usr/bin/bash OPENOFFICEPID=`ps -ef|grep "/opt/openoffice4/program/sof ...

  7. nodejs进程异常退出处理方法

    1. 捕获uncaughtException process.on('uncaughtException', function (err) { //打印出错误 console.log(err); // ...

  8. python学习笔记——多进程二 进程的退出

    1 进程的退出函数的基础语法 1.1 进程的退出函数 进程的退出含有有os._exit([status])和sys.exit([status])两种,从数据包来看,该退出模块仅在linux或者unix ...

  9. 用Supervisor实现进程守护,在异常退出时自动重启

    程序启动后,有些是以daemon的形式运行,但在意外退出后,如果不能及时重新启动,会有比较严重的影响. 比如Zimg在图片处理中由于某些图片处理失败,会导致zimg进程挂掉,影响正常的服务提供,并且只 ...

随机推荐

  1. Dapper 多表(三表以上)查询小技巧

    在使用Dappr做查询的时候遇到多表查询,之前多是两张表,现在出现三张表或者更多.两表的时候使用splitOn进行分割,splitOn的默认值是Id.在我建库的时候,主键ID并不都是这个名字.当出现三 ...

  2. LCTF (easyeasy-200)

    首先安装,看看app是什么样的. 有点奇怪,没有点击确定的按钮.然后拖到JEB反编译. 要求输入的字符串的长度要在35-39之间(包括边界值),然后会调用Format().form函数.如下图. 可以 ...

  3. python-Web-django-自定义标签

    简化:@register.simple_tag def current_time(token): return datetime.datetime.now().strftime(str(token)) ...

  4. CornerNet-Lite算法笔记

    论文名称:CornerNet-Lite: Efficient Keypoint Based Object Detection 论文链接:https://arxiv.org/abs/1904.08900 ...

  5. JS 根据字节 截取字符串函数

    function reBytesStr(str, len) { if ((!str && typeof(str) != 'undefined')) {return '';} var n ...

  6. linux下安转nodejs

    转载自:https://www.cnblogs.com/zhuawang/p/7617176.html 在Linux系统安装Nodejs 最简单步骤 1.去官网下载和自己系统匹配的文件: 英文网址:h ...

  7. 菜鸟系列Fabric——Fabric 1.4共识机制(5)

    fabric 共识机制 由于fabric是分布式的系统,因此需要共识机制来保障各个节点以相同的顺序状态保存账本,达成一致性. 在当前fabric1.4版本中,存在三种共识机制,分别是solo,kafk ...

  8. leveldb Arena源码分析

    前言 对于一个高性能的服务器程序来说,内存的使用非常重要.C++提供new/delete来管理内存的申请和释放,但是对于小对象来说,直接使用new/delete代价比较大,要付出额外的空间和时间,性价 ...

  9. failed to push some refs to 'git@github.com:cq1415583094/MyBatis.git'解决办法

    将本地git仓库代码提交到GitHub上时,出现failed to push some refs to 'git@github.com:cq1415583094/MyBatis.git', 导致的原因 ...

  10. RuntimeError: Model class user.models.User doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS.

    Django 2.x版本迁移数据库报这个错误,user表使用的Django的验证系统 本来就想改一下用户表的表名,莫名的报了个这个错误,在网上找到了解决办法 打开user应用模块下的apps.py文件 ...