1. 日志文件定位
Debian系统中,MariaDB的日志文件默认存储在/var/log/mysql/目录下,常见日志类型及路径如下:
error.log;slow-query.log);mysql-bin.log;/etc/mysql/mariadb.conf.d/50-server.cnf)中的log_error、slow_query_log_file、log_bin等参数确认。2. 基础日志查看命令
tail -f /var/log/mysql/error.log可实时监控错误日志的新增内容,便于快速定位正在发生的故障;tail -n 50 /var/log/mysql/error.log显示错误日志的最后50行,适合快速检查最近的错误;grep -i "error" /var/log/mysql/error.log筛选出包含“error”(不区分大小写)的日志行,缩小问题范围;less /var/log/mysql/error.log可分页浏览日志,支持上下翻页(空格键)及关键词搜索(/keyword)。3. 慢查询日志分析
慢查询日志是优化数据库性能的关键,分析步骤如下:
/etc/mysql/mariadb.conf.d/50-server.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 # 记录未使用索引的查询
保存后重启MariaDB服务:sudo systemctl restart mariadb。pt-query-digest是Percona Toolkit中的工具,可生成慢查询报告(包含执行次数、平均时间、最长查询等)。安装工具:sudo apt install percona-toolkit,分析命令:sudo pt-query-digest /var/log/mysql/slow-query.log。报告会按查询耗时排序,优先处理耗时久、频率高的查询。mysqldumpslow(MariaDB自带)查看慢查询统计:mysqldumpslow -s t /var/log/mysql/slow-query.log(按时间排序),或结合grep筛选特定表的慢查询:grep "SELECT.*FROM users" /var/log/mysql/slow-query.log。4. 二进制日志分析
二进制日志用于数据恢复或复制,分析工具为mysqlbinlog:
mysqlbinlog /var/log/mysql/mysql-bin.000001(替换为实际文件名),可看到SQL语句的执行记录;mysqlbinlog --start-datetime="2025-11-01 00:00:00" --stop-datetime="2025-11-01 23:59:59" /var/log/mysql/mysql-bin.000001,提取指定时间段内的操作;mysqlbinlog /var/log/mysql/mysql-bin.000001 > recovery.sql,可将日志内容导出为SQL文件,用于数据恢复。5. 自动化与工具辅助
logrotate工具防止日志文件过大,编辑/etc/logrotate.d/mysql配置文件(若不存在则创建),添加以下内容:/var/log/mysql/*.log {
daily
missingok
rotate 7
compress
notifempty
create 640 mysql adm
}
该配置表示每天轮转日志,保留最近7天(压缩存储),避免日志占满磁盘。/var/log/mysql/error.log),导入Elasticsearch后,用Kibana创建仪表盘展示错误趋势、慢查询分布等,适合大规模环境。6. 故障排查中的应用
tail -n 30 /var/log/mysql/error.log,常见原因包括配置文件错误(如datadir路径不存在)、数据目录权限问题(需chown -R mysql:mysql /var/lib/mysql)、端口冲突(检查3306端口是否被占用)。EXPLAIN分析查询执行计划(如是否缺少索引),优化表结构(如分区、拆分大表)或调整配置参数(如增大innodb_buffer_pool_size)。