是否可以通过 Mac 上的程序或脚本重新启动 Ubuntu 上的远程 MySQL 服务器?

是否可以通过 Mac 上的程序或脚本重新启动 Ubuntu 上的远程 MySQL 服务器?

我有一个客户,他的网络服务器托管在 Digital Ocean 上,他们遇到了一个奇怪的随机 MySQL 数据库问题......

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

我一直无法找出这次随机崩溃的原因,所以每次发生这种情况时我都必须执行这个过程:

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

这将重新启动 MySQL 服务器,并且一切恢复正常,直到一周或三周后它再次随机发生,然后重复该过程。


由于我的客户没有服务器管理经验,甚至不知道命令提示符/终端窗口是什么或是什么样子......我需要想出一些解决方案,让任何人,包括猴子能够在我不在的时候复制上面概述的过程!

一些信息:

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

有了这些信息,是否有可能构建某种一键解决方案脚本,客户可以单击并从他的 Mac 启动一个脚本/程序,当他遇到紧急问题而我不在身边时,该脚本/程序会自动运行上述过程来重新启动他的 MySQL 服务器?

答案1

您是否曾经想过监控 MYSQL 服务器?

也许 Nagios 太大了,但是带有脚本和 cron 或 monit 的东西也很轻量。

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

答案2

我认为最简单的方法是使用监控. 它是一个用于监控和管理守护进程或类似程序的轻量级实用程序。

安装 monit

# aptitude install monit

为 mysql 创建 conf 文件

# 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

检查监控日志文件

[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 提到的,您应该找到问题的根源。

答案3

首先,您必须(如果不存在则生成)将您的 ssh 密钥传输到服务器(以实现无密码登录):

ssh-copy-id root@IP-HERE

登录服务器并设置如下脚本:

#!/bin/bash
service mysql restart
exit 0

使其可执行:

chmod +x script.sh

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

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

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

顺便说一句:你应该解决问题,而不是建立一个糟糕的重启解决方法。我向你保证,使用这个重启解决方法会比解决问题更令人头疼。就像 peabody 所说的那样,你应该查看 munin 或 monit 来检测潜在问题。

答案4

忘记手动重启吧,它太慢了,而且需要你或客户(你有时想去度假,不是吗?)。只需设置一些监控并自动执行即可。Zabbix并且Nagios适合整体监控,但对于一台服务器来说可能太大了。您可以设置monit检查您的 mysql 并自动且几乎立即为您重启。

但你修复的是症状,而不是原因,这很糟糕。你必须找到 mysql 崩溃的真正原因(启用更详细的日志记录,监控服务器的其他指标)并修复它。

相关内容