Ubuntu系统中,MySQL日志默认存储在/var/log/mysql/目录下,常见日志文件及用途如下:
error.log(记录服务器启动、运行及关闭过程中的诊断信息,如错误、警告);slow-query.log或mysql-slow.log(记录执行时间超过阈值的查询,用于性能优化);mysql.log或query.log(记录所有查询请求,用于审计操作);binlog.xxxxxx(记录数据变更操作,用于数据恢复或复制)。若未找到日志文件,需检查MySQL配置文件(/etc/mysql/mysql.conf.d/mysqld.cnf或/etc/my.cnf)中的log_error(错误日志路径)、slow_query_log_file(慢查询日志路径)、general_log_file(通用查询日志路径)等参数确认路径。
cat命令输出日志全部内容(适合小文件):sudo cat /var/log/mysql/error.log
less命令逐页浏览(支持上下滚动、搜索):sudo less /var/log/mysql/error.log
tail -f命令持续监控日志新增内容(适合排查实时问题,按Ctrl+C停止):sudo tail -f /var/log/mysql/error.log
用grep命令过滤日志中的关键词(如“ERROR”“slow query”),快速定位问题:
# 查找错误日志中的ERROR信息
sudo grep "ERROR" /var/log/mysql/error.log
# 查找慢查询日志中执行时间超过2秒的查询
sudo grep "Query_time: [2-9]" /var/log/mysql/slow-query.log
二进制日志需用mysqlbinlog工具解析(还原数据变更操作):
# 查看二进制日志文件列表
SHOW BINARY LOGS; # 在MySQL命令行中执行
# 解析具体的二进制日志文件
sudo mysqlbinlog /var/log/mysql/binlog.000001
解析后可看到具体的SQL语句(如INSERT、UPDATE),用于数据恢复或复制验证。
若日志文件不存在,需修改MySQL配置文件启用对应日志:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld]
# 启用错误日志(默认开启)
log_error = /var/log/mysql/error.log
# 启用通用查询日志(记录所有查询)
general_log = 1
general_log_file = /var/log/mysql/mysql.log
# 启用慢查询日志(记录执行时间超过2秒的查询)
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow-query.log
long_query_time = 2
sudo systemctl restart mysql
mysqldumpslow -s t /var/log/mysql/slow-query.log # 按执行时间排序
pt-query-digest /var/log/mysql/slow-query.log > slow_report.txt
通过以上方法,可全面查看和分析Ubuntu系统上的MySQL日志,帮助定位数据库运行问题、优化性能或满足审计需求。操作前需确保具备足够的权限(使用sudo),并注意保护日志中的敏感信息(如密码、用户数据)。