温馨提示×

Ubuntu MySQL日志管理方法

小樊
44
2025-08-01 06:15:04
栏目: 云计算

在Ubuntu上管理MySQL日志可以通过以下几种技巧进行:

查看和分析MySQL日志

  • 错误日志:默认情况下,错误日志文件位于 /var/log/mysql/error.log。你可以使用 sudo tail -f /var/log/mysql/error.log 命令实时查看错误日志。
  • 通用查询日志:默认情况下,通用查询日志文件位于 /var/log/mysql/mysql-query.log。要启用通用查询日志,可以编辑MySQL配置文件 /etc/mysql/my.cnf,在 [mysqld] 部分添加或修改 general-log 选项:
    [mysqld] general-log = 1 general-log-file = /path/to/your/custom/query.log 
    然后重启MySQL服务:sudo systemctl restart mysql
  • 慢查询日志:首先,确保慢查询日志已经开启:
    SET GLOBAL slow_query_log 'ON'; SET GLOBAL long_query_time 2; -- 设置慢查询时间阈值,单位为秒 SET GLOBAL slow_query_log_file '/var/log/mysql/slow-queries.log'; 
    然后可以使用 sudo tail -f /var/log/mysql/slow-queries.log 命令实时查看慢查询日志。
  • 二进制日志:首先,查看当前的二进制日志文件:SHOW BINARY LOGS; 然后,查看某个具体的二进制日志文件,例如:sudo mysqlbinlog /var/log/mysql/mysql-bin.000001

日志轮转

使用Logrotate是一个强大的日志管理工具,可以自动轮转、压缩、删除和发送日志文件。默认情况下,Logrotate会每天运行一次,对 /var/log/mysql 目录下的日志文件进行轮转。你可以编辑 /etc/logrotate.d/mysql 配置文件来自定义轮转规则。

清理日志

  • 清理Journal日志:Ubuntu使用systemd作为系统和服务管理器,Journal日志存储在 /var/log/journal/ 目录下。可以使用以下命令清理日志:
    • 只保留一周的日志:sudo journalctl --vacuum-time=1w
    • 只保留指定大小的日志:sudo journalctl --vacuum-size=500M

日志分析

使用pt-query-digest是一个强大的工具,用于分析MySQL查询日志、慢查询日志和二进制日志。你可以通过以下命令安装:sudo apt-get install percona-toolkit,然后使用 pt-query-digest 分析慢查询日志:pt-query-digest /var/log/mysql/slow.log

配置日志文件位置和大小

在MySQL配置文件 /etc/mysql/my.cnf 中,可以通过 log-errorgeneral-log-file 参数指定错误日志和通用查询日志的位置。还可以通过 expire_logs_days 参数设置二进制日志的自动清理。

0