如何配置mysql日志_mysql日志开启方式

MySQL日志包括错误日志(默认开启)、通用查询日志(调试用,影响性能)、慢查询日志(优化排查)和二进制日志(主从复制与恢复),需按版本差异配置路径、参数并确保权限与磁盘空间。

MySQL 日志主要分为错误日志、查询日志(General Log)、慢查询日志(Slow Query Log)和二进制日志(Binary Log),不同日志用途不同,开启方式也略有差异。配置前建议先确认 MySQL 版本(SELECT VERSION();),部分参数在 8.0+ 有调整。

开启错误日志(error log)

错误日志默认已开启,记录启动、关闭、严重警告和错误信息。位置通常由 log_error 参数指定,可通过以下命令查看:

查看当前路径:
SHOW VARIABLES LIKE 'log_error';

修改方法(需重启或动态设置,取决于版本):

  • my.cnf(Linux)或 my.ini(Windows)的 [mysqld] 段添加:
    log_error = /var/log/mysql/error.log
  • MySQL 8.0.14+ 支持动态修改(无需重启):
    SET PERSIST log_error = '/var/log/mysql/error.log';

启通用查询日志(general log)

记录所有执行的 SQL 语句(含 SELECT),适合调试但影响性能,不建议长期开启。

启用方式:

  • 临时开启(会话级或全局,重启失效):
    SET GLOBAL general_log = ON;
    SET GLOBAL log_output = 'FILE';(输出到文件)或 'TABLE'(写入 mysql.general_log 表)
  • 永久开启(需配置文件):
    [mysqld] 下添加:
    general_log = ON
    general_log_file = /var/log/mysql/general.log

开启慢查询日志(slow query log)

记录执行时间超过 long_query_time 的 SQL,默认阈值为 10 秒,可调低用于优化排查。

配置步骤:

  • 检查是否启用:
    SHOW VARIABLES LIKE 'slow_query_log';
  • 临时启用:
    SET GLOBAL slow_query_log = ON;
    SET GLOBAL long_query_time = 1;(设为 1 秒)
  • 永久配置(推荐):
    slow_query_log = ON
    slow_query_log_file = /var/log/mysql/slow.log
    long_query_time = 1
    log_queries_not_using_indexes = ON(可选,记录未走索引的查询)

开启二进制日志(binary log)

用于主从复制和基于时间点的数据恢复,生产环境通常必须开启。

配置要点:

  • 必须设置 server_id(唯一整数),否则无法启用:
    server_id = 1
  • 启用并指定文件名前缀:
    log_bin = /var/lib/mysql/mysql-bin
  • 可选限制大小与过期天数:
    max_binlog_size = 100M
    expire_logs_days = 7(MySQL 8.0+ 推荐用 binlog_expire_logs_seconds = 604800

配置完成后务必重启 MySQL 服务(systemctl restart mysqld)或确认动态生效。所有日志路径需确保 MySQL 进程有读写权限,且磁盘空间充足。不复杂但容易忽略。