如何监控并自动重启mysql?

如何监控并自动重启mysql?

我在 Debian 上运行 mysql。

有没有办法监控 mysql 并在它锁定时自动重新启动它?例如,有时服务器开始占用 100% 的 CPU 并开始运行非常缓慢。如果我重新启动 mysql,事情就会好转,服务器开始正常工作,但我并不总是在场手动重新启动它。

有没有办法监控 MySQL,如果 CPU 连续 10 分钟以上高于 95%,那么 MySQL 将自动重启

答案1

你可以这样做监控。例如,要警告并重新启动 mysql,假设您以 60 秒的周期运行 monit:

check process mysqld
  with pidfile /var/run/mysqld.pid
if cpu usage > 99% for 10 cycles then alert
if cpu usage > 99% for 10 cycles then restart

monit 非常灵活,几乎可以执行您能想到的任何类型的进程、内存等监控。

这可能可以通过ps-观察者也是,但是很难让 ps-watcher 记住这种状态并采取行动。monit 是正确的工具。

答案2

我支持 Francisco 的观点,我建议以此方式重启 MySQL。因为:

  1. CPU 峰值表示活动,这意味着重新启动它几乎可以完成 DB 正在执行的任何操作。
  2. CPU 使用率高达 100% 并不是一件坏事,这就是它的计算能力所致 :-) 事实上,您更愿意查看服务器的负载,而不是 CPU 使用率(以百分比表示),因为这根本无法表明出现了什么问题。
  3. 根据您使用的引擎,失败的交易可能不会在重新启动时重播,这意味着您将丢失其中一些。

话虽如此,你可以寻找以下一些东西:

  1. MySQL 是否为服务器“良好”配置;即它是否有足够的空间容纳数据库的大小和它所运行的操作?
  2. 是否有其他服务导致这种负载?如果是,为什么?
  3. 最后,如果这“减慢”了服务器上其他服务的运行速度,您应该考虑重新平衡每个服务的资源,以便服务器的计算能力在所有服务之间共享。

答案3

我相信你正在寻找自动友好守护进程

相关内容