温馨提示×

MySQL在Linux上的日志管理如何操作

小樊
56
2025-08-15 05:33:03
栏目: 云计算

一、日志类型与默认路径

  • 错误日志:记录启动、运行错误,默认路径 /var/log/mysql/error.log 或数据目录下 hostname.err
  • 慢查询日志:记录执行时间超阈值的SQL,默认关闭,需手动配置路径。
  • 二进制日志:记录数据变更操作,默认关闭,用于数据恢复和主从复制,路径通常为 /var/log/mysql/binlog
  • 查询日志:记录所有SQL语句,默认关闭,路径可自定义。

二、配置日志

  1. 修改配置文件
    编辑 /etc/my.cnf/etc/mysql/my.cnf,在 [mysqld] 下添加参数:

    # 错误日志(默认开启,可修改路径)
    log_error=/var/log/mysql/error.log
    
    # 慢查询日志
    slow_query_log=1
    slow_query_log_file=/var/log/mysql/slow.log
    long_query_time=2  # 阈值(秒)
    
    # 二进制日志
    log_bin=/var/log/mysql/binlog/mysql-bin
    server_id=1  # 主从复制需设置唯一ID
    

    修改后重启服务:sudo systemctl restart mysql

  2. 动态开启(无需重启)

    -- 开启慢查询日志
    SET GLOBAL slow_query_log='ON';
    SET GLOBAL long_query_time=2;
    
    -- 开启查询日志
    SET GLOBAL general_log='ON';
    SET GLOBAL general_log_file='/var/log/mysql/query.log';
    

三、查看与管理日志

  1. 命令行查看

    # 实时查看错误日志
    sudo tail -f /var/log/mysql/error.log
    
    # 查看慢查询日志前10条
    sudo head -n 10 /var/log/mysql/slow.log
    
    # 查看二进制日志列表
    mysql -e "SHOW BINARY LOGS;"
    
  2. 工具分析

    • 慢查询分析:使用 mysqldumpslowpt-query-digest 工具。
      # 按执行时间排序查看慢查询
      mysqldumpslow -s t -t 5 /var/log/mysql/slow.log
      
  3. 日志轮转与清理

    • 使用 logrotate 工具按日期或大小分割日志,避免文件过大。
    • 定期清理旧日志,可通过 cron 定时任务删除超过7天的日志:
      # 示例:删除7天前的慢查询日志
      find /var/log/mysql/ -name "slow-*.log" -mtime +7 -exec rm -f {} \;
      

四、注意事项

  • 生产环境中谨慎开启查询日志,避免影响性能。
  • 二进制日志需定期清理,可通过设置 expire_logs_days 参数自动过期。
  • 确保日志目录权限正确,MySQL用户需有读写权限。

0