我有 Monit 监控 Mysql。当机器突然关闭(例如电源故障)时,mysqld无法重新启动,除非/var/lib/mysql/mysql.sock由于错误而被删除另一个 MySQL 守护进程已使用相同的 unix 套接字运行。让 Monit 在启动时删除文件的正确配置是什么?
答案1
我开玩笑说你应该买一个UPS... 但保护服务器免受突然断电的影响非常简单。基本的 UPS 可以为您提供此功能。
如果这些都不是选择(因为我不知道环境和限制的情况),您确定要让服务器和服务在发生严重崩溃后自动启动而无需人工干预吗?如果是这样...
更改 Monit 启动命令中的启动脚本。例如:
check process mysqld
with pidfile "/var/run/mysqld.pid"
start program = "/sbin/service mysqld start"
stop program = "/sbin/service mysqld stop"
不要使用 mysqld 启动脚本,而是编写一个检查文件是否存在的包装脚本/var/lib/mysql/mysql.sock
。
或者可能只是让启动命令为/sbin/service mysqld restart
,因为它运行的是 ,stop()
后面跟着start()
。在 init 脚本中,stop 命令会删除 sock 文件。