阅读量:2
Ubuntu中MySQL日志查看与管理技巧
一、常见日志类型及查看方法
1. 错误日志(Error Log)
作用:记录MySQL服务启动、运行及停止过程中的错误信息,是排查数据库故障的核心日志。
默认路径:Ubuntu下通常位于/var/log/mysql/error.log(部分安装方式可能为/var/log/mysqld.log)。
查看命令:
- 实时跟踪最新错误:
sudo tail -f /var/log/mysql/error.log - 使用
journalctl查看系统日志中的MySQL错误(需systemd支持):sudo journalctl -u mysql.service -f
注意:若路径不确定,可通过MySQL命令动态获取:SHOW VARIABLES LIKE 'log_error';
2. 慢查询日志(Slow Query Log)
作用:记录执行时间超过阈值的SQL语句,是数据库性能优化的关键依据。
启用步骤:
- 编辑配置文件(
/etc/mysql/my.cnf或/etc/mysql/mysql.conf.d/mysqld.cnf),在[mysqld]部分添加:slow_query_log = 1 slow_query_log_file = /var/log/mysql/slow-query.log long_query_time = 2 # 设置慢查询阈值为2秒(可根据需求调整) log_queries_not_using_indexes = 1 # 记录未使用索引的查询 - 重启MySQL服务使配置生效:
sudo systemctl restart mysql
查看命令: - 实时查看慢查询日志:
sudo tail -f /var/log/mysql/slow-query.log - 使用
mysqldumpslow工具分析(按执行时间排序前10条):sudo mysqldumpslow -s t -t 10 /var/log/mysql/slow-query.log - 使用
pt-query-digest工具生成详细报告(需安装Percona Toolkit):sudo pt-query-digest /var/log/mysql/slow-query.log
3. 通用查询日志(General Query Log)
作用:记录所有客户端执行的SQL语句(包括连接、断开、查询等),用于审计或追踪操作历史。
启用步骤:
- 编辑配置文件,在
[mysqld]部分添加:general_log = 1 general_log_file = /var/log/mysql/general.log log_output = FILE # 设置日志输出为文件(可选:TABLE、NONE) - 重启MySQL服务:
sudo systemctl restart mysql
查看命令: - 实时查看通用查询日志:
sudo tail -f /var/log/mysql/general.log - 动态开启(无需重启):
SET GLOBAL general_log = 'ON'; SET GLOBAL log_output = 'FILE'; SET GLOBAL general_log_file = '/var/log/mysql/general.log';
4. 二进制日志(Binary Log)
作用:记录所有修改数据的SQL语句(如INSERT、UPDATE、DELETE),用于数据恢复、主从复制。
启用步骤:
- 编辑配置文件,在
[mysqld]部分添加:log_bin = mysql-bin # 启用二进制日志(默认路径为/var/lib/mysql/) binlog_format = ROW # 推荐使用ROW格式(更精确) expire_logs_days = 7 # 自动清理7天前的日志(可选) - 重启MySQL服务:
sudo systemctl restart mysql
查看命令: - 查看当前二进制日志文件列表:
SHOW BINARY LOGS; - 使用
mysqlbinlog工具查看具体日志内容:sudo mysqlbinlog /var/lib/mysql/mysql-bin.000001 - 导出日志到SQL文件(用于恢复):
sudo mysqlbinlog /var/lib/mysql/mysql-bin.000001 > recovery.sql
二、日志管理技巧
1. 日志轮转(Logrotate)
作用:自动压缩、删除旧日志,避免日志文件占用过多磁盘空间。
默认配置:Ubuntu下MySQL的日志轮转配置通常位于/etc/logrotate.d/mysql,内容示例:
/var/log/mysql/*.log {
daily
missingok
rotate 7
compress
delaycompress
notifempty
create 640 mysql adm
sharedscripts
postrotate
systemctl restart mysql > /dev/null
endscript
}
参数说明:
daily:每日轮转;rotate 7:保留7个旧日志文件;compress:压缩旧日志;postrotate:轮转后重启MySQL以重新打开日志文件。
手动触发轮转:sudo logrotate -vf /etc/logrotate.d/mysql(-v显示详细信息,-f强制轮转)
2. 日志分析工具
- grep:搜索特定关键词(如错误信息):
grep "ERROR" /var/log/mysql/error.log - awk:统计错误数量:
awk '{print $1}' /var/log/mysql/error.log | sort | uniq -c | sort -nr - pt-query-digest:高级分析工具(支持慢查询、二进制日志),生成包含查询频率、执行时间、锁等待等信息的详细报告
三、注意事项
- 权限问题:查看日志文件需超级用户权限(使用
sudo),部分日志(如通用查询日志)可能需要调整log_output参数为FILE才能保存到文件。 - 性能影响:启用通用查询日志或慢查询日志会增加I/O开销,生产环境建议仅在需要时开启,分析完成后关闭。
- 日志清理:定期清理旧日志(如通过
logrotate或sudo journalctl --vacuum-size=500M清理journal日志),避免磁盘空间耗尽。
以上就是关于“ubuntu中mysql日志查看技巧”的相关介绍,筋斗云是国内较早的云主机应用的服务商,拥有10余年行业经验,提供丰富的云服务器、租用服务器等相关产品服务。云服务器资源弹性伸缩,主机vCPU、内存性能强悍、超高I/O速度、故障秒级恢复;电子化备案,提交快速,专业团队7×24小时服务支持!
简单好用、高性价比云服务器租用链接:https://www.jindouyun.cn/product/cvm