健康检查导致 'Got an error reading communication packets' 条消息
Healthcheck causing 'Got an error reading communication packets' messages
我正在使用以下健康检查来查看 MySQL 服务器的 3306 端口是否打开。
bash -c 'cat < /dev/null > /dev/tcp/localhost/3306' || exit 1
它工作正常,但前段时间MySQL开始在每次检查后打印警告:
[Note] Got an error reading communication packets
有没有办法在不触发上述消息的情况下检查端口是否打开?健康检查每隔几秒执行一次,导致消息成为日志输出的垃圾邮件。
同样的问题。有一种方法可以省略注释:
SET GLOBAL log_error_verbosity=2;
请注意,它可能会为您的案例隐藏不需要的注释。
当我使用 fsockopen 打开一个到端口 3306 的套接字然后在不发送任何数据的情况下断开连接时,我收到了相同的日志消息。
由于MySQL希望在连接打开后接收一些数据包,如果提供none,它会向错误日志发出“[注意]读取通信数据包时出错”。
不用打开和关闭 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 的 return 状态为 0,否则为 1。即使出现访问被拒绝等错误,该状态也为 0 ,因为这意味着服务器是 运行 但拒绝连接,这与服务器不是 运行 不同。"
虽然没有必要指定用户名和密码,但这样做可能会导致“[注意] 用户 'user'@'host'(使用密码:NO)访问被拒绝”消息错误日志。作为解决方法,在 MySQL 中创建一个匿名用户,不授予任何数据库权限。
以上命令丢弃所有输出,只回显退出代码。
我正在使用以下健康检查来查看 MySQL 服务器的 3306 端口是否打开。
bash -c 'cat < /dev/null > /dev/tcp/localhost/3306' || exit 1
它工作正常,但前段时间MySQL开始在每次检查后打印警告:
[Note] Got an error reading communication packets
有没有办法在不触发上述消息的情况下检查端口是否打开?健康检查每隔几秒执行一次,导致消息成为日志输出的垃圾邮件。
同样的问题。有一种方法可以省略注释:
SET GLOBAL log_error_verbosity=2;
请注意,它可能会为您的案例隐藏不需要的注释。
当我使用 fsockopen 打开一个到端口 3306 的套接字然后在不发送任何数据的情况下断开连接时,我收到了相同的日志消息。
由于MySQL希望在连接打开后接收一些数据包,如果提供none,它会向错误日志发出“[注意]读取通信数据包时出错”。
不用打开和关闭 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 的 return 状态为 0,否则为 1。即使出现访问被拒绝等错误,该状态也为 0 ,因为这意味着服务器是 运行 但拒绝连接,这与服务器不是 运行 不同。"
虽然没有必要指定用户名和密码,但这样做可能会导致“[注意] 用户 'user'@'host'(使用密码:NO)访问被拒绝”消息错误日志。作为解决方法,在 MySQL 中创建一个匿名用户,不授予任何数据库权限。
以上命令丢弃所有输出,只回显退出代码。