是否有可能从Mac上的程序或脚本重新启动Ubuntu上的远程MySQL服务器?

我有一个客户谁拥有数字海洋托pipe的networking服务器,他们有一个奇怪的随机MySQL数据库问题…

每个月有1-4次数据库服务器崩溃,必须手动重新启动。

我一直无法弄清楚这个随机崩溃的原因,所以我现在每次都要这样做:

  1. 打开terminal命令提示符窗口
  2. 键入并运行: ssh root@IP-HERE -l root
  3. input服务器用户密码: server-user-password v
  4. 键入并运行命令: service mysql restart

这将重新启动MySQL服务器,一切都很好,直到一个星期或3个以后,当它再次随机发生,然后重复过程。


由于我的客户端没有服务器pipe理经验,甚至不知道什么命令提示符/terminal窗口是或看起来像…我需要拿出一些解决scheme,将允许任何人,包括一只猴子能够复制上面概述的过程当我不可用!

一些信息:

  • 开发人员/pipe理员(我) :运行Windows 7电脑
  • 客户端 :正在运行Mac OS X(最新的操作系统)
  • 服务器 :运行Ubuntu 12.0.4

有了这些信息,可以build立某种单击解决scheme脚本,客户端可以点击并从他的Mac上启动一个脚本/程序,当这个紧急问题出现时,它将自动运行上面的过程重新启动他的MySQL服务器。对他而言,我不在身边帮忙?

你有没有想过监控MYSQL服务器?

也许Nagios太大了,但是脚本和cron或者monit也是很轻量级的。

Monit提供了一个非常简单的基本Web前端,您也可以重新启动服务。

我认为最简单的方法就是使用monit 。 这是一个用于监视和pipe理守护程序或类似程序的轻量级实用程序。

安装monit

 # aptitude install monit 

为mysql创buildconf文件

 # cat /etc/monit/conf.d/mysql check process mysqld with pidfile /var/run/mysqld/mysqld.pid group database start program = "/etc/init.d/mysql start" stop program = "/etc/init.d/mysql stop" if failed host 127.0.0.1 port 3306 then restart if 5 restarts within 5 cycles then timeout 

重新启动监视

 # service monit restart 

检查mysql状态

 # netstat -an | grep 3306 tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN # service mysql status mysql start/running, process 33446 

停止mysql服务器(只是为了模仿一些问题)

 # service mysql stop 

检查monit日志文件

 [EEST Mar 30 12:34:10] info : 'ubuntu14' Monit started [EEST Mar 30 12:36:10] error : 'mysqld' process is not running [EEST Mar 30 12:36:10] info : 'mysqld' trying to restart [EEST Mar 30 12:36:10] info : 'mysqld' start: /etc/init.d/mysql [EEST Mar 30 12:38:12] info : 'mysqld' process is running with pid 34085 

在几分钟内,它重新启动MySQL服务器

但这只是一个解决方法,就像@lain提到你应该find问题的根源。

起初,你有(如果不生成existend和)生成SSH密钥到服务器(实现无密码login):

 ssh-copy-id root@IP-HERE 

login到服务器并设置一个脚本,如:

 #!/bin/bash service mysql restart exit 0 

使其可执行:

 chmod +x script.sh 

在你的客户端上,你想通过ssh调用脚本。 简化以下ssh命令的执行(使用Platypus或Apple Automator等作为包装器):

 ssh root@IP-HERE -l root script.sh 

现在,您可以将可点击的服务器重新启动器传递给您的客户端。

顺便说一句:你应该解决这个问题,而不是build立一个蹩脚的重新启动解决方法。 我向你保证,利用这个重新引导的解决方法将会比解决问题更令人头痛。 就像皮博迪所说的,你应该看看慕尼黑或者蒙特,来发现潜在的问题。

忘了手动重启,它太慢了,需要你或者客户端(你有时候想去度假,不是吗?)。 只要设置一些监控,并自动执行。 ZabbixNagios很适合整体监控,但对于一台服务器来说可能太大了。 你可以设置monit来检查你的mysql,并自动地立即重新启动。

但是你正在修复症状,而不是原因,这是不好的。 你必须find真正的原因,为什么是MySQL崩溃(启用更详细的日志logging,监视服务器的另一个指标),并修复它。