gpt4 book ai didi

mysql - 健康检查导致 'Got an error reading communication packets' 消息

转载 作者:行者123 更新时间:2023-11-29 09:59:26 31 4
gpt4 key购买 nike

我正在使用以下健康检查来查看 MySQL 服务器的 3306 端口是否打开。

bash -c 'cat < /dev/null > /dev/tcp/localhost/3306' || exit 1

它工作正常,但不久前 MySQL 开始在每次检查后打印警告:

[Note] Got an error reading communication packets

有没有办法在不触发上述消息的情况下检查端口是否打开?每隔几秒执行一次运行状况检查,导致消息向日志输出发送垃圾邮件。

最佳答案

当我使用 fsockopen 打开端口 3306 的套接字然后断开连接而不发送任何数据时,我得到了相同的日志消息。

由于MySQL期望在连接打开后接收一些数据包,如果没有提供,它会向错误日志发出“[Note] Got an error Reading communications packet”。

不要打开和关闭 TCP 套接字,而是使用 mysqladmin使用匿名用户 ping 来检查 MySQL 是否处于事件状态。它还有一个优点是它会检查监听端口的进程是否实际上是 MySQL 服务器。

$ mysqladmin ping -h running_host -u anonymous --password=pass &>/dev/null ; echo $?
0

$ mysqladmin ping -h not_running_host -u anonymous --password=pass &>/dev/null ; echo $?
1

根据文档,“如果服务器正在运行,则 mysqladmin 的返回状态为 0,如果未运行,则为 1。即使出现诸如拒绝访问之类的错误,该返回状态也是 0,因为这意味着服务器正在运行,但拒绝连接,这与服务器未运行不同。”

虽然不必指定用户名和密码,但这样做可能会导致错误日志中出现“[Note] Access Denied for user 'user'@'host' (using password: NO)”消息。作为解决方法,请在 MySQL 中创建一个匿名用户,不对任何数据库授予任何权限。

上面的命令丢弃所有输出,只回显退出代码。

关于mysql - 健康检查导致 'Got an error reading communication packets' 消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53299784/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com