一、日志文件定位
- 错误日志:默认路径
/var/log/mysql/error.log或/var/log/mariadb/error.log。 - 查询日志:需手动启用,路径通常为
/var/log/mysql/query.log。 - 慢查询日志:启用后路径为
/var/log/mysql/slow-query.log,可通过配置文件设置阈值。 - 二进制日志:位于
/var/lib/mysql/目录,文件名格式为mysql-bin.XXXXXX。
二、常用分析命令
- 基础查看
- 查看错误日志最后20行:
sudo tail -20 /var/log/mysql/error.log。 - 实时追踪日志:
sudo tail -f /var/log/mysql/error.log。
- 查看错误日志最后20行:
- 关键词过滤
- 搜索包含“ERROR”的行:
sudo grep "ERROR" /var/log/mysql/error.log。 - 按时间范围过滤(需日志含时间戳):
sudo awk '$1 >= "2025-01-01" && $1 <= "2025-01-31"' /var/log/mysql/error.log。
- 搜索包含“ERROR”的行:
三、工具化分析
- 文本处理工具
awk:提取特定列或按条件过滤,如统计错误次数:sudo awk '/ERROR/ {count++} END {print count}' /var/log/mysql/error.log。sed:替换或删除文本,如清理日志中的敏感信息。
- 专业分析工具
- ELK Stack:用于日志的集中收集、搜索和可视化,适合大规模日志分析。
- pt-query-digest(Percona工具):分析慢查询日志,生成执行次数、耗时等统计报告。
- GoAccess:生成日志访问图表,支持实时分析。
四、日志管理技巧
- 日志轮转:使用
logrotate避免日志文件过大,配置文件位于/etc/logrotate.d/mysql。 - 安全权限:敏感日志(如二进制日志)需限制访问权限,确保仅授权用户可查看。
五、关键场景分析
- 启动失败:查看错误日志中“Failed to start”等关键词,结合
journalctl -u mariadb分析系统级错误。 - 性能问题:通过慢查询日志定位低效SQL,使用
EXPLAIN分析执行计划。 - 安全审计:检查错误日志中的“Access denied”记录,识别异常登录尝试。
参考来源: