温馨提示×

MySQL在CentOS上的日志如何查看

小樊
33
2025-11-17 18:04:35
栏目: 云计算

查看 MySQL 日志的常用路径与命令

  • CentOS 上,MySQL 的日志常见位置与类型如下(不同安装方式或配置可能有所差异):
    • 错误日志:常见为 /var/log/mysqld.log/var/log/mysql/error.log
    • 慢查询日志:常见为 /var/log/mysql/slow-query.log 或数据目录下以主机名命名的文件(如 /var/lib/mysql/-slow.log
    • 通用查询日志:常见为 /var/log/mysql/mysql.log(默认多为关闭)
    • 二进制日志(用于复制/恢复):常见为 /var/lib/mysql/-bin.00000X
  • 快速查看命令(按实际路径替换):
    • 实时查看错误日志:sudo tail -f /var/log/mysqld.log
    • 分页查看:sudo less /var/log/mysql/error.log
    • 列出日志目录:ls -l /var/log/mysql/
  • 若不确定日志路径,可在 MySQL 内查询变量:SHOW VARIABLES LIKE 'log_error';(错误日志);慢查询与通用日志同理使用对应变量名。

在 MySQL 内确认日志配置

  • 登录 MySQL 后,使用以下 SQL 查看关键日志参数与路径:
    • 错误日志:SHOW VARIABLES LIKE 'log_error';
    • 慢查询日志:SHOW VARIABLES LIKE 'slow_query_log%';
    • 通用查询日志:SHOW VARIABLES LIKE 'general_log%';
    • 慢查询阈值:SHOW VARIABLES LIKE 'long_query_time';
  • 示例输出解读:
    • slow_query_log=OFF/ON 表示是否开启
    • slow_query_log_file 显示慢日志完整路径
    • long_query_time 为判定慢查询的秒数阈值(如 2.000000 秒)

启用与验证慢查询日志

  • 动态开启(无需重启,重启后失效):
    • SET GLOBAL slow_query_log = 'ON';
    • SET GLOBAL slow_query_log_file = '/var/log/mysql/slow.log';
    • SET GLOBAL long_query_time = 2;
    • 可选:SET GLOBAL log_queries_not_using_indexes = 'ON';(记录未使用索引的查询)
  • 永久生效(修改配置文件后重启):
    • 编辑 /etc/my.cnf(或 /etc/mysql/my.cnf),在 [mysqld] 段加入:
      slow_query_log = 1
      slow_query_log_file = /var/log/mysql/slow.log
      long_query_time = 2
      
    • 重启服务:sudo systemctl restart mysqld
  • 验证与测试:
    • 确认参数:SHOW VARIABLES LIKE 'slow_query_log%';SHOW VARIABLES LIKE 'long_query_time';
    • 触发记录:SELECT SLEEP(3);
    • 查看日志:sudo tail -f /var/log/mysql/slow.log

启用与查看通用查询日志

  • 动态开启(临时):
    • SET GLOBAL general_log = 'ON';
    • SET GLOBAL general_log_file = '/var/log/mysql/mysql.log';
  • 永久生效(修改配置后重启):
    • [mysqld] 段加入:
      general_log = 1
      general_log_file = /var/log/mysql/mysql.log
      
    • 重启服务:sudo systemctl restart mysqld
  • 查看方式:
    • 实时查看:sudo tail -f /var/log/mysql/mysql.log
    • 注意:通用查询日志会产生大量数据,生产环境建议仅在排障时临时开启

日志轮转与空间管理

  • 使用 logrotate 管理 MySQL 日志(示例配置 /etc/logrotate.d/mysql):
    /var/log/mysql/*.log {
        daily
        missingok
        rotate 14
        compress
        delaycompress
        notifempty
        create 640 mysql mysql
    }
    
  • 作用:按天轮换、最多保留 14 个旧日志、压缩归档,避免日志无限增长占满磁盘

0