Debian MySQL日志如何查看与分析
小樊
37
2025-12-18 19:08:38
Debian 上 MySQL 日志的查看与分析
一 日志类型与默认路径
- 错误日志 Error Log:记录服务启动/停止、运行错误与告警。Debian 常见做法是通过 /etc/mysql/conf.d/mysqld_safe_syslog.cnf 将错误日志发送到 syslog,可用命令查看:sudo journalctl -u mysql.service 或 tail -f /var/log/syslog;若改为文件输出,常见路径为 /var/log/mysql/error.log。也可在 MySQL 内查询变量:SHOW VARIABLES LIKE ‘log_error’;。
- 通用查询日志 General Query Log:记录客户端连接与所有 SQL,默认关闭,启用后常见路径 /var/log/mysql/query.log 或 /var/log/mysql/mysql.log。
- 慢查询日志 Slow Query Log:记录超过 long_query_time 的 SQL,默认关闭,启用后常见路径 /var/log/mysql/slow.log 或 /var/log/mysql/mysql-slow.log。
- 二进制日志 Binary Log:用于复制与时间点恢复,常见路径 /var/log/mysql/mysql-bin.log。
- 配置文件位置:/etc/mysql/my.cnf 或 /etc/mysql/mysql.conf.d/mysqld.cnf。
二 快速查看与实时跟踪
- 错误日志
- 查看 systemd 日志:sudo journalctl -u mysql.service -f
- 查看 syslog:sudo tail -f /var/log/syslog | grep mysqld
- 若已改为文件输出:sudo tail -f /var/log/mysql/error.log
- 通用查询日志(需先启用)
- 实时跟踪:sudo tail -f /var/log/mysql/query.log
- 慢查询日志(需先启用)
- 实时跟踪:sudo tail -f /var/log/mysql/slow.log
- 二进制日志(用于审计/回放,非文本)
- 列出日志:mysql -e “SHOW BINARY LOGS;”
- 内容查看:mysqlbinlog /var/log/mysql/mysql-bin.000001 | less
三 启用与配置日志
- 配置文件路径:/etc/mysql/my.cnf 或 /etc/mysql/mysql.conf.d/mysqld.cnf,在 [mysqld] 段落设置。
- 错误日志(文件输出示例)
- 注释或删除 /etc/mysql/conf.d/mysqld_safe_syslog.cnf 中的 syslog 行
- 增加:
- log_error = /var/log/mysql/error.log
- 通用查询日志
- 配置:
- general_log = 1
- general_log_file = /var/log/mysql/query.log
- 慢查询日志
- 配置:
- slow_query_log = 1
- slow_query_log_file = /var/log/mysql/slow.log
- long_query_time = 2(单位:秒)
- 二进制日志(如用于复制/恢复)
- 配置:
- log_bin = /var/log/mysql/mysql-bin
- server-id = 1
- expire_logs_days = 10
- max_binlog_size = 100M
- 运行时开关(无需重启,动态生效)
- 开启通用查询日志:SET GLOBAL general_log = ‘ON’;
- 开启慢查询日志:SET GLOBAL slow_query_log = ‘ON’;
- 调整阈值:SET GLOBAL long_query_time = 2;(需新会话生效)
- 使配置生效
- 动态参数立即生效;涉及文件输出或新增模块的配置建议重启:sudo systemctl restart mysql。
四 日志分析与定位方法
- 错误日志定位故障
- 关注关键词:ERROR、Warning、InnoDB: Operating system error、Aborted connection,结合时间点与线程/连接信息判断启动失败、崩溃、权限/磁盘/内存等问题。
- 慢查询分析
- 内置工具:
- mysqldumpslow:按出现次数、总耗时、平均耗时、扫描行数等汇总,示例:mysqldumpslow /var/log/mysql/slow.log
- 第三方工具:
- pt-query-digest(Percona Toolkit):深度分析慢日志并给出优化建议,示例:pt-query-digest /var/log/mysql/slow.log
- 优化思路:对高频且耗时的 SQL 增加合适索引、避免 **SELECT ***、减少全表扫描、优化分页与子查询、必要时使用覆盖索引。
- 通用查询日志审计
- 用于临时排查问题时开启,长期开启会影响性能;建议仅在排障窗口期短时启用。
- 二进制日志用于恢复与回放
- 结合 mysqlbinlog 按时间/位置筛选并执行,用于误删恢复或主从搭建。
- 系统层面辅助
- 资源与连接:top/htop、ps aux | grep mysql、ping 测试连通性;必要时 sudo systemctl restart mysql。
五 日志轮转与维护
- 使用 logrotate 定期轮转,避免单个日志过大占满磁盘;Debian 的 MySQL 包通常已自带 logrotate 配置,可按需调整保留天数与压缩策略。
- 二进制日志建议设置过期自动清理:expire_logs_days = 10;清理前确认无复制或恢复需求。
- 重要变更前先备份配置与关键日志,变更后在日志中验证生效与无异常。