Ubuntu 中 MariaDB 日志位置与查看方法
一、常见日志路径
- 错误日志:通常在 /var/log/mariadb/mariadb.log;部分安装或发行版会放在 /var/log/mysql/error.log。
- 通用查询日志(general log):默认多为关闭;若启用,常见路径为 /var/log/mysql/query.log 或 /var/log/mariadb/query.log。
- 慢查询日志(slow query log):默认多为关闭;若启用,常见路径为 /var/log/mysql/slow-query.log 或 /var/log/mariadb/slow-query.log。
- 二进制日志(binlog):用于复制与时间点恢复,路径由配置 log_bin 指定,常见在 /var/lib/mysql/ 下,文件名类似 mysql-bin.000001。
- 系统服务日志:通过 journalctl 查看,服务名可能是 mariadb 或 mysql(两者在 Ubuntu 上常见并存)。
二、快速查看命令
- 实时查看错误日志:
sudo tail -f /var/log/mariadb/mariadb.log
或(若使用 mysql 目录):sudo tail -f /var/log/mysql/error.log
- 查看服务日志(systemd):
sudo journalctl -u mariadb -f
或:sudo journalctl -u mysql -f
- 按时间过滤服务日志:
sudo journalctl -u mariadb --since “2025-11-30 09:00:00” --until “2025-11-30 18:00:00”
- 在数据库中确认错误日志路径:
mysql -u root -p -e “SHOW VARIABLES LIKE ‘log_error%’;”
- 在数据库中确认通用查询日志与慢查询日志配置:
mysql -u root -p -e “SHOW VARIABLES LIKE ‘general_log%’;”
mysql -u root -p -e “SHOW VARIABLES LIKE ‘slow_query_log%’;”
三、找不到日志时的排查
- 确认 MariaDB 使用的服务名:
systemctl list-units --type=service | grep -E ‘mariadb|mysql’
- 用 SQL 查询实际日志路径(见上条命令),或检查配置文件:
grep -i “log_error|general_log|slow_query_log” /etc/mysql/my.cnf /etc/my.cnf.d/*.cnf 2>/dev/null
- 若日志被写入 systemd 而未落文件,优先用 journalctl -u mariadb/mysql 查看。
四、开启可选日志的简要配置
- 编辑配置文件(如 /etc/mysql/my.cnf 或 /etc/mysql/my.cnf.d/server.cnf),在 [mysqld] 段添加:
- 通用查询日志(谨慎开启,生产环境可能影响性能):
general_log = ON
general_log_file = /var/log/mysql/query.log
- 慢查询日志:
slow_query_log = ON
slow_query_log_file = /var/log/mysql/slow-query.log
long_query_time = 1
- 创建日志目录并授权(如路径不在默认位置):
sudo mkdir -p /var/log/mysql
sudo chown mysql:mysql /var/log/mysql/*.log
- 重启使配置生效:
sudo systemctl restart mariadb