温馨提示×

MySQL在Ubuntu上的日志管理方法

小樊
47
2025-07-13 10:28:14
栏目: 云计算

在Ubuntu上管理MySQL日志主要包括配置日志记录、查看日志文件、清理日志文件以及使用日志管理工具。以下是详细的操作步骤:

MySQL日志配置

  • 编辑MySQL配置文件: 打开MySQL配置文件 /etc/mysql/my.cnf/etc/my.cnf。 添加或修改以下配置来启用不同类型的日志:

    [mysqld]
    log_error = /var/log/mysql/error.log
    general_log = 1
    general_log_file = /var/log/mysql/general.log
    slow_query_log = 1
    long_query_time = 2
    slow_query_log_file = /var/log/mysql/slow-queries.log
    log_bin = /var/log/mysql/mysql-bin
    expire_logs_days = 7
    
    • log_error:指定错误日志文件路径。
    • general_log:启用查询日志。
    • general_log_file:指定查询日志文件路径。
    • slow_query_log:启用慢查询日志。
    • long_query_time:设置慢查询时间阈值,单位为秒。
    • slow_query_log_file:指定慢查询日志文件路径。
    • log_bin:启用二进制日志。
    • expire_logs_days:设置二进制日志的自动清理时间间隔。
  • 重启MySQL服务

    sudo systemctl restart mysql
    

查看MySQL日志

  • 查看错误日志

    sudo tail -f /var/log/mysql/error.log
    
  • 查看查询日志

    sudo tail -f /var/log/mysql/general.log
    
  • 查看慢查询日志

    sudo tail -f /var/log/mysql/slow-queries.log
    
  • 查看二进制日志

    sudo mysqlbinlog /var/log/mysql/mysql-bin.000001
    

日志轮转

使用 Logrotate 进行日志轮转,默认情况下,Logrotate 会每天运行一次,对 /var/log/mysql 目录下的日志文件进行轮转。

  • 编辑 Logrotate 配置文件

    sudo nano /etc/logrotate.d/mysql
    

    添加以下内容:

    /var/log/mysql/*.log {
        daily
        rotate 7
        missingok
        notifempty
        compress
        delaycompress
        create 0640 mysql mysql
        sharedscripts
        postrotate
            /bin/kill -HUP $(cat /var/run/mysqld.pid)
        endscript
    }
    
  • 设置 crontab 以自动运行 Logrotate

    sudo crontab -e
    

    添加以下内容:

    0 1 * * * /usr/sbin/logrotate /etc/logrotate.conf
    

日志分析

  • 使用 pt-query-digest 分析慢查询日志
    sudo apt-get install percona-toolkit
    pt-query-digest /var/log/mysql/slow.log
    

清理日志

  • 手动清理日志文件

    sudo systemctl stop mysql
    sudo rm /var/log/mysql/*.log
    sudo systemctl start mysql
    
  • 配置自动清理日志: 在 MySQL 配置文件中设置 expire_logs_days 参数来指定日志自动清理的时间间隔。

0