我正在尝试监视我们的 mysql 服务器是否已启动。我为此使用的命令是:
mysqladmin ping
它将返回以下内容:
mysqld is alive
这是否仅检查进程是否正在运行,还是还检查服务器是否正在接受连接?
答案1
“mysqladmin ping” 尝试连接到所选的 MySQL 服务器。可以使用 -h 选项指定实际服务器(例如 mysqladmin ping -h db.example.com),默认为 localhost。
如果服务器响应(即使是拒绝访问或类似消息),则假定服务器处于活动状态并且“mysqladmin ping”以代码 0 退出。
否则,则假定服务器已关闭,并且存在“mysqladmin ping”,代码为 1。
答案2
如果你想确定你的 MySQL 服务器已经启动,最好的办法就是编写一个小脚本来执行:
SELECT "1";
您的连接用户至少需要 USAGE 权限。这不会告诉您数据库表是否存在任何问题,但您的应用程序监控可能会告诉您这一点。
无论如何,这完全有可能就是 mysqladmin ping 所做的。
答案3
“启动”是一个非常宽泛的术语。例如,它可能响应 ping,但实际上没有可用磁盘空间,或者所有查询都被阻止或每秒崩溃并自动重新启动,或者所有表实际上都被标记为崩溃,甚至更糟 - 被删除或 datadir 从系统中卸载等。
或者它可以疯狂地进行交换,并且 CPU 被几个查询滥用,所以它几乎不能爬行,所以它肯定没有“启动”。
或者例如由于连接限制,它可能无法响应 ping,但您的应用程序使用持久连接并且运行良好。
或者例如由于本地主机上的某些客户端问题,它可能无法响应 ping,但同样 - 所有应用程序实际上都没有遇到任何问题。
因此,有时“ping”是有效的答案,但是在考虑“监控服务器是否启动”时,您需要始终考虑这些情况。