mysql升级过程中如何监控_mysql升级监控方法

来源:这里教程网 时间:2026-02-28 20:47:57 作者:

盯住错误日志,这是升级过程的“生命体征” MySQL 升级失败时,
error.log
从不撒谎。它不是辅助信息,而是第一响应源。升级中一旦服务起不来、连接被拒、表打不开,问题一定先写进这里。 - 路径通常为
/var/log/mysql/error.log
/usr/local/mysql/data/$(hostname).err
;不确定就执行
SHOW VARIABLES LIKE 'log_error';
查准位置 - 实时跟踪:用
tail -f /var/log/mysql/error.log
,别关终端,尤其在
systemctl start mysql
后的前 90 秒 - 关键信号包括:
Port already in use
(端口冲突)、
InnoDB initialization failed
(引擎加载失败)、
Table upgrade required
(系统表结构不匹配) - 别等升级完再翻日志——很多崩溃是静默发生的,进程已退出,但日志里留着最后一行
Aborted connection
mysqld got signal 11

把 mysql_upgrade 的输出当“诊断报告”看
mysql_upgrade
(MySQL 8.0 前)或自动触发的元数据升级流程,不是“点一下就完事”的按钮,它的 stdout/stderr 是兼容性问题的明细单。 - 必须重定向输出:
mysql_upgrade --verbose > upgrade.log 2>&1
,否则关键提示一闪而过 - 真正要警觉的不是“OK”,而是这些词:
Repairing table
(说明表结构有损坏或版本不兼容)、
needs upgrade
(某张系统表未适配)、
Error
后跟具体表名(如
mysql.innodb_table_stats
) - 如果看到
Skipping system table 'xxx' because it's already up to date
,反而是好现象;但若全程无任何
Repairing
Upgrading
字样,要怀疑是否压根没跑对实例(比如连错了 socket 或端口)

用连接 + 简单查询做“心跳检测” 日志和工具输出都是“过去式”,而业务能否连上、能否读一行数据,才是升级后“活着”的直接证据。 - 写个 3 行脚本循环探测:
while ! mysql -uroot -p$PASS -e "SELECT 1" >/dev/null 2>&1; do sleep 5; done && echo "UP"
- 每 10 秒查一次
SELECT 1
,连续 3 次失败就发告警(可用
curl
推企业微信/钉钉) - 注意:MySQL 8.0 默认认证插件是
caching_sha2_password
,老客户端(如 MySQL 5.7 客户端、某些 Python MySQLdb 驱动)会报
Client does not support authentication protocol
——这不是监控脚本的问题,是权限层兼容性断裂,得提前改用户:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'xxx';

升级窗口内临时加一层“进程存活+端口响应”双保险 别依赖“服务启动成功”就认为万事大吉。MySQL 进程可能启动了,但卡在初始化阶段(比如重建
mysql.innodb_index_stats
表),此时端口通、进程在,但任何真实查询都超时。 - 用
pgrep mysqld | wc -l
每分钟检查进程数,归零即告警 - 用
nc -zv 127.0.0.1 3306 &>/dev/null && echo "port ok" || echo "port down"
验证端口可写(
nc
telnet
更适合脚本) - 更进一步:在升级前部署一个轻量
mysqld_exporter
,配合 Prometheus 抓取
mysql_up{instance="xxx"}
mysql_global_status_threads_connected
,5 分钟没变化就人工介入

真正容易被忽略的,是升级后头 10 分钟——日志安静、进程在、端口通、

SELECT 1
成功,但某个定时任务第一次调用
JSON_EXTRACT()
就报错,因为 5.7 的 JSON 函数在 8.0 里行为微调了;或者主从复制突然断在
GTID_PURGED
不一致。这些不会出现在升级日志里,只能靠业务侧真实流量暴露。所以监控不是“升级时开一下”,而是“新版本上线后至少盯满第一个业务高峰”。

相关推荐