Debian中MySQL日志如何管理
导读:Debian 中 MySQL 日志管理 一 日志类型与用途 错误日志:记录 MySQL 服务的启动、运行、停止过程中的错误与告警,用于故障定位。 通用查询日志 general log:记录客户端连接与执行的全部语句,便于审计与问题排查(生...
Debian 中 MySQL 日志管理
一 日志类型与用途
- 错误日志:记录 MySQL 服务的启动、运行、停止过程中的错误与告警,用于故障定位。
- 通用查询日志 general log:记录客户端连接与执行的全部语句,便于审计与问题排查(生产环境慎用)。
- 慢查询日志 slow query log:记录执行时间超过阈值的 SQL,用于性能优化。
- 二进制日志 binlog:记录数据变更,用于主从复制与时间点恢复 PITR。
- 中继日志 relay log:从库复制时保存主库事件。
- 常见日志路径为 /var/log/mysql/,具体以配置为准。
二 配置与查看
- 配置文件位置:编辑 /etc/mysql/my.cnf 或 /etc/mysql/mysql.conf.d/mysqld.cnf。
- 常用配置示例(按需启用):
修改后重启服务:[mysqld] log_error = /var/log/mysql/error.log general_log = 1 general_log_file = /var/log/mysql/query.log slow_query_log = 1 slow_query_log_file = /var/log/mysql/slow-query.log long_query_time = 2 log_bin = /var/log/mysql/mysql-bin server_id = 1 relay_log = /var/log/mysql/mysql-relay-bin expire_logs_days = 7 max_binlog_size = 100Msudo systemctl restart mysql。 - 动态开关(无需重启,部分参数仍需配置文件持久化):
-- 通用查询日志 SET GLOBAL general_log = 'ON'; SET GLOBAL general_log_file = '/var/log/mysql/query.log'; -- 慢查询日志 SET GLOBAL slow_query_log = 'ON'; SET GLOBAL slow_query_log_file = '/var/log/mysql/slow-query.log'; SET GLOBAL long_query_time = 2; - 查看方式与路径确认:
- 实时查看错误日志:
sudo tail -f /var/log/mysql/error.log - 查看通用/慢查询日志:
sudo tail -f /var/log/mysql/query.log或.../slow-query.log - 使用 systemd 查看服务日志:
sudo journalctl -u mysql.service -f - 确认变量:
SHOW VARIABLES LIKE '%log%';
- 实时查看错误日志:
三 轮转与清理
- 使用 logrotate 管理文本日志(如 error、general、slow):
新建或编辑 /etc/logrotate.d/mysql:
要点:设置合适的保留天数(rotate)、压缩(compress)、以及轮转后通知 MySQL 重新打开日志文件(postrotate 执行/var/log/mysql/*.log { daily rotate 7 missingok notifempty compress delaycompress sharedscripts postrotate systemctl reload mysql > /dev/null 2> & 1 || true endscript }reload)。 - 二进制日志清理:
- 自动过期:在配置中设置
expire_logs_days(如 7 天),MySQL 会自动清理过期的 binlog。 - 手动清理(保留到某个文件或时间点之前):
-- 删除到指定文件之前 PURGE BINARY LOGS TO 'mysql-bin.000009'; -- 删除指定时间之前的日志 PURGE BINARY LOGS BEFORE '2025-07-15 00:00:00'; - 触发日志轮转(如配合备份后快速切换 binlog):
mysqladmin flush-logs --binary。
- 自动过期:在配置中设置
- 权限与目录:确保日志目录与文件归属 mysql:mysql,如:
sudo chown -R mysql:mysql /var/log/mysql。
四 性能与安全建议
- 通用查询日志会产生大量 I/O,建议仅在排障时临时开启,用完及时关闭。
- 合理设置 long_query_time(如 1–2 秒),并定期分析慢查询日志以优化索引与 SQL。
- 为 binlog 设置合理大小(如 100M)与保留天数(如 7–10 天),既满足复制/恢复,又避免磁盘被占满。
- 生产环境优先使用 logrotate 与
expire_logs_days做自动化管理,减少人工清理风险。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Debian中MySQL日志如何管理
本文地址: https://pptw.com/jishu/748721.html
