centos中mysql日志管理技巧
导读:一、日志配置优化 在CentOS中,MySQL日志的配置主要通过/etc/my.cnf(或/etc/mysql/my.cnf)文件完成,合理配置是高效管理的基础。需重点设置以下参数: 错误日志:log_error = /var/log/m...
一、日志配置优化
在CentOS中,MySQL日志的配置主要通过/etc/my.cnf
(或/etc/mysql/my.cnf
)文件完成,合理配置是高效管理的基础。需重点设置以下参数:
- 错误日志:
log_error = /var/log/mysql/error.log
(指定错误日志路径,记录启动、运行及错误信息); - 慢查询日志:
slow_query_log = 1
(启用慢查询)、slow_query_log_file = /var/log/mysql/slow-query.log
(指定日志路径)、long_query_time = 2
(设置慢查询阈值,默认10秒,可根据业务调整); - 通用查询日志:
general_log = 1
(启用,记录所有客户端查询,生产环境慎用)、general_log_file = /var/log/mysql/mysql.log
(指定路径); - 二进制日志:
log_bin = /var/log/mysql/mysql-bin
(启用,记录数据变更语句,用于复制和恢复)、expire_logs_days = 7
(自动清理7天前的二进制日志,减少磁盘占用)。
配置修改后,需重启MySQL服务使生效:sudo systemctl restart mysqld
。
二、常用日志查看命令
- 实时查看日志:使用
tail -f
命令跟踪日志文件的实时更新,例如查看错误日志:sudo tail -f /var/log/mysql/error.log
; - 过滤关键字:结合
grep
筛选特定信息,如查找错误日志中的“ERROR”记录:sudo grep 'ERROR' /var/log/mysql/error.log
; - 分页查看:使用
less
命令分页浏览大日志文件,例如:sudo less /var/log/mysql/slow-query.log
(按空格
翻页,q
退出); - 查看二进制日志:使用
mysqlbinlog
工具解析二进制日志(位于/var/lib/mysql/
目录,文件名如hostname-bin.000001
),例如:sudo mysqlbinlog /var/lib/mysql/hostname-bin.000001
。
三、日志轮转配置(避免磁盘爆满)
使用CentOS自带的logrotate
工具定期轮转日志,防止日志文件过大。创建/etc/logrotate.d/mysql
配置文件,添加以下内容:
/var/log/mysql/*.log {
daily # 每天轮转
rotate 14 # 保留14个旧日志
compress # 压缩旧日志(节省空间)
delaycompress # 延迟压缩(避免压缩当天日志)
missingok # 忽略缺失的日志文件
notifempty # 空日志不轮转
create 640 mysql mysql # 创建新日志文件并设置权限
sharedscripts # 所有日志轮转完成后执行脚本
postrotate
/usr/bin/mysqladmin flush-logs >
/dev/null 2>
&
1 || true # 通知MySQL刷新日志
endscript
}
配置完成后,logrotate
会自动按计划执行(默认每天),无需手动干预。
四、日志清理策略
- 二进制日志:
- 自动清理:通过
expire_logs_days
参数设置保留天数(如expire_logs_days = 7
),MySQL会自动删除过期日志; - 手动清理:使用
PURGE BINARY LOGS
命令,例如删除2025-10-01之前的日志:PURGE BINARY LOGS BEFORE '2025-10-01';
;
- 自动清理:通过
- 其他日志:
使用find
命令定期清理旧日志(如7天前),例如清理慢查询日志:find /var/log/mysql/ -type f -name "*.log" -mtime +7 -exec rm { } \;
(需谨慎操作,避免误删)。
五、日志分析技巧
- 慢查询分析:
- 使用
mysqldumpslow
(MySQL自带):mysqldumpslow -s t /var/log/mysql/slow-query.log
(按查询时间排序,找出最耗时的查询); - 使用
pt-query-digest
(Percona Toolkit):pt-query-digest /var/log/mysql/slow-query.log > slow_query_analysis.txt
(生成详细分析报告,包含慢查询占比、执行频率等);
- 使用
- 错误日志分析:
使用grep
筛选错误类型,例如查找“Connection refused”错误:sudo grep 'Connection refused' /var/log/mysql/error.log
; - 可视化工具:
对于大规模日志,可使用ELK Stack(Elasticsearch+Logstash+Kibana)、Grafana+Loki或Percona Monitoring and Management(PMM)进行集中存储、索引和可视化,快速定位性能瓶颈。
六、注意事项
- 权限控制:确保日志文件仅授权用户(如
mysql
用户或root
)可访问,避免数据泄露; - 性能影响:通用查询日志和慢查询日志会占用I/O资源,生产环境建议仅在调试时启用通用查询日志;
- 备份优先:清理或修改日志前,务必备份重要日志(如二进制日志),防止数据丢失;
- 磁盘监控:定期检查
/var/log/mysql/
目录的磁盘使用情况(如df -h /var/log/mysql
),避免日志占满磁盘导致服务中断。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos中mysql日志管理技巧
本文地址: https://pptw.com/jishu/724650.html