温馨提示×

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.servicetail -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/htopps aux | grep mysqlping 测试连通性;必要时 sudo systemctl restart mysql

五 日志轮转与维护

  • 使用 logrotate 定期轮转,避免单个日志过大占满磁盘;Debian 的 MySQL 包通常已自带 logrotate 配置,可按需调整保留天数与压缩策略。
  • 二进制日志建议设置过期自动清理:expire_logs_days = 10;清理前确认无复制或恢复需求。
  • 重要变更前先备份配置与关键日志,变更后在日志中验证生效与无异常。

0