MariaDB在Ubuntu上的日志管理指南
MariaDB作为Ubuntu系统上常用的数据库服务,其日志管理涵盖配置、查看、轮转、分析等多个环节,以下是具体操作步骤:
MariaDB的主要日志类型及Ubuntu下的默认配置路径如下:
/etc/mysql/mariadb.conf.d/50-server.cnflog_error = /var/log/mysql/mariadb-error.log(指定日志路径)、log_error_verbosity = 3(记录错误、警告、提示信息,默认值为3,覆盖即可)。slow_query_log = 1(启用)、slow_query_log_file = /var/log/mysql/mariadb-slow.log(日志路径)、long_query_time = 2(慢查询阈值,单位:秒)、log_queries_not_using_indexes = 1(记录未使用索引的查询)。general_log = 1(启用)、general_log_file = /var/log/mysql/mariadb-query.log(日志路径)、general_log_output = FILE(输出到文件)。log_bin = /var/log/mysql/mariadb-bin(日志路径)、binlog_format = ROW(推荐行格式,更安全)、expire_logs_days = 7(日志保留天数,自动删除过期日志)。配置完成后,重启MariaDB服务使更改生效:
sudo systemctl restart mariadb
使用logrotate工具自动轮换、压缩、删除旧日志,避免单个日志文件占用过多磁盘空间。
/etc/logrotate.d/mariadb文件,添加以下内容:/var/log/mysql/*.log {
daily # 每天轮换
rotate 7 # 保留7个旧日志
missingok # 忽略缺失的日志文件
compress # 压缩旧日志(如.gz格式)
delaycompress # 延迟压缩(当前轮换的日志不压缩,下一个周期再压缩)
notifempty # 空日志不轮换
create 640 mysql mysql # 创建新日志时的权限和所有者
postrotate # 轮换后执行的命令
if test -x /usr/bin/mysqladmin && \
/usr/bin/mysqladmin ping &>/dev/null; then
/usr/bin/mysqladmin flush-logs
fi
endscript
}
-v显示详细过程,-f强制轮换):sudo logrotate -vf /etc/logrotate.d/mariadb
logrotate默认由系统cron任务(/etc/cron.daily/logrotate)每日自动运行,无需额外配置。sudo tail -f /var/log/mysql/mariadb-error.log
sudo tail -f /var/log/mysql/mariadb-slow.log
使用grep命令查找包含关键字的日志(如“error”):
sudo grep 'error' /var/log/mysql/mariadb-error.log
使用awk统计特定时间段(如2025-11-06)的日志数量:
awk '/2025-11-06/ {count++} END {print count}' /var/log/mysql/mariadb-error.log
mysqldumpslow -s c /var/log/mysql/mariadb-slow.log # 按出现次数排序
pt-query-digest /var/log/mysql/mariadb-slow.log > slow_report.txt
使用mysqlbinlog工具查看二进制日志内容(如查看特定时间段的变更):
mysqlbinlog /var/log/mysql/mariadb-bin.000001 # 查看指定日志文件
mysqlbinlog --start-datetime="2025-11-01 00:00:00" --stop-datetime="2025-11-31 23:59:59" /var/log/mysql/mariadb-bin.000001 # 按时间范围查看
日志审计用于记录数据库的所有活动(如连接、查询、表操作),满足合规性要求。
SHOW GLOBAL VARIABLES LIKE 'plugin_dir';
/etc/mysql/mariadb.conf.d/50-server.cnf,添加以下内容:plugin_load_add = server_audit
server_audit_events = CONNECT,QUERY,TABLE # 记录连接、查询、表操作
server_audit_file_rotate_now = ON # 立即轮换日志
server_audit_file_rotate_size = 1000000 # 单个日志文件大小(1MB)
server_audit_file_rotations = 5 # 保留5个旧日志
sudo systemctl restart mariadb
/var/log/mysql/server_audit.log,可使用tail或grep命令查看。mysql用户,查看时需使用sudo提升权限。SHOW VARIABLES LIKE 'log_error'(错误日志)、SHOW VARIABLES LIKE 'slow_query_log_file'(慢查询日志)等命令确认。通过以上步骤,可实现MariaDB在Ubuntu上的高效日志管理,确保数据库运行的可追溯性和安全性。