Linux下查看MariaDB日志的方法
MariaDB的日志文件默认存储在/var/log/mariadb/(如mariadb.log)或/var/log/mysql/目录下,具体路径可通过以下方式确认:
/etc/my.cnf或/etc/mysql/my.cnf,在[mysqld]部分查找log_error(错误日志)、general_log_file(查询日志)、slow_query_log_file(慢查询日志)等参数,明确日志文件的绝对路径。错误日志记录了MariaDB启动、运行及关闭过程中的错误信息(如启动失败、权限问题、数据库损坏等),是最常用的日志类型。
cat、less或tail命令查看(需root权限):sudo cat /var/log/mariadb/mariadb.log # 默认路径
sudo tail -f /var/log/mysql/error.log # 若路径不同,替换为实际路径
sudo journalctl -u mariadb.service -f # 实时查看服务日志
可结合grep过滤关键词(如“error”“failed”)快速定位问题:sudo grep -i "error\|failed" /var/log/mariadb/mariadb.log
查询日志记录了所有客户端与服务器之间的通信(包括SQL语句、连接/断开信息),用于分析客户端操作行为。
/etc/my.cnf,在[mysqld]部分添加:[mysqld]
general_log = 1
general_log_file = /var/log/mysql/query.log
重启MariaDB使配置生效:sudo systemctl restart mariadb
sudo cat /var/log/mysql/query.log # 启用后查看
sudo tail -f /var/log/mysql/query.log # 实时查看
慢查询日志记录了执行时间超过long_query_time阈值(默认10秒)的SQL语句,用于优化数据库性能(如识别慢查询、未使用索引的语句)。
/etc/my.cnf,在[mysqld]部分添加:[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
sudo cat /var/log/mysql/slow-query.log # 启用后查看
sudo tail -f /var/log/mysql/slow-query.log # 实时查看
可使用mysqlbinlog工具分析二进制日志中的慢查询(若启用了二进制日志):mysqlbinlog --start-datetime="2025-11-01 00:00:00" --stop-datetime="2025-11-01 23:59:59" /var/log/mysql/mysql-bin.000001
二进制日志记录了对数据库执行的所有更改操作(如INSERT、UPDATE、DELETE),用于数据复制、备份及恢复。
/etc/my.cnf,在[mysqld]部分添加:[mysqld]
log_bin = /var/log/mysql/mysql-bin.log
server_id = 1 # 唯一标识符(主从复制必需)
expire_logs_days = 10 # 日志保留天数(自动清理旧日志)
重启MariaDB:sudo systemctl restart mariadb
mysqlbinlog工具解析日志(需指定日志文件路径):mysqlbinlog /var/log/mysql/mysql-bin.000001
可结合--start-datetime和--stop-datetime参数查看指定时间段的日志,或使用--start-position和--stop-position查看指定位置的日志。tail -f命令(如sudo tail -f /var/log/mariadb/mariadb.log),实时跟踪日志更新。grep命令(如sudo grep -i "access denied" /var/log/mariadb/mariadb.log),快速定位特定问题。sudo rm /var/log/mysql/*.log(删除所有.log文件)。logrotate工具(编辑/etc/logrotate.d/mysql),设置日志轮转规则(如保留7天、压缩旧日志):/var/log/mysql/*.log {
daily
missingok
rotate 7
compress
notifempty
create 640 root adm
}
sudo systemctl restart mariadb)使配置生效。