MariaDB 日志详解:错误日志、慢查询日志与集群日志实战

MariaDB 日志中文详解:错误日志(log_error)、通用查询日志(general_log)、慢查询日志(slow_query_log/long_query_time/log_slow_filter)、二进制日志(binlog)、Galera 集群日志特点,以及观测云 DataKit 采集告警落地方案。

最佳实践
MariaDB 日志详解:错误日志、慢查询日志与集群日志实战技术指南封面

MariaDB 从 MySQL 分叉而来,日志体系同源但有细节差异(变量命名默认值、特有开关如 log_slow_filter、Galera 集群日志)。本文讲解 MariaDB 各类日志的配置与实战要点,并给出观测云平台的落地方案。

核心要点速览

  • 四大日志与 MySQL 同源:错误日志、通用查询日志、慢查询日志、binlog,概念一致、参数略有差异。
  • MariaDB 独有的慢日志增强log_slow_filterlog_slow_rate_limit 等细粒度控制。
  • Galera 集群另有 wsrep 日志:集群状态、SST/IST 事件都进错误日志。
  • 落地路径与 MySQL 相同:DataKit 采集文件,Pipeline 解析,监控器告警。

1. 错误日志

[mariadb]
log_error = /var/log/mariadb/error.log
log_warnings = 2        # 记录连接警告(1-9,越大越详细)

记录启动/关闭、崩溃恢复、连接异常。MariaDB 默认把错误输出到 systemd journal(发行版包安装时),确认实际位置:

SHOW VARIABLES LIKE 'log_error';

值为空时说明走了 journal——用 journalctl -u mariadb 查看,或显式设置 log_error 落盘以便文件采集。

2. 慢查询日志(MariaDB 增强版)

[mariadb]
slow_query_log = 1
slow_query_log_file = /var/log/mariadb/slow.log
long_query_time = 1
log_queries_not_using_indexes = 1
log_slow_filter = 'full_scan,filesort'     # MariaDB 独有:按原因过滤
log_slow_rate_limit = 100                   # MariaDB 独有:每 100 条慢查询记 1 条

MariaDB 的差异化能力:

  • log_slow_filter:按"全表扫描、filesort、临时表"等原因选择性记录,聚焦特定类型的问题查询;
  • log_slow_rate_limit:慢查询风暴时的采样阀门,防止日志爆炸;
  • log_slow_verbosity:控制每条记录的详细程度(query_plan 附带执行计划摘要)。

3. 通用查询日志

SET GLOBAL general_log = 'ON';   -- 短期排障用,完事即关
SET GLOBAL log_output = 'FILE';  -- 或 'TABLE' 写入 mysql.general_log

与 MySQL 同理:全量 SQL 记录,量巨大,生产不常开。

4. 二进制日志

[mariadb]
log_bin = /var/log/mariadb/mariadb-bin
binlog_expire_logs_seconds = 604800
max_binlog_size = 1G

复制与时间点恢复的基石,治理要点同 MySQL:保留期与磁盘水位。

5. Galera 集群日志

MariaDB 常搭配 Galera 做同步多主集群。Galera 的集群事件(节点加入/离开、SST 全量同步、IST 增量同步、流控暂停)全部写入错误日志——排查集群分裂、脑裂、同步风暴时,错误日志就是 wsrep 的日记本。采集时集群所有节点的错误日志都应收齐,按节点字段区分。

观测云落地:MariaDB 日志采集与分析

  1. 采集:DataKit conf.d/log/logging.conf 配置 logfiles 覆盖错误日志与慢日志,source: mariadbservice 标识实例/集群;Galera 各节点统一采集。
  2. 解析:Pipeline 提取慢日志的 Query_time、Rows_examined 等字段;错误日志级别映射标准 status
  3. 告警:监控器对 crash、wsrep 异常(WSREP: ... failed)、连接警告风暴设规则,通知钉钉/企业微信/飞书。
  4. 分析:日志查看器按节点/库/耗时聚合;慢查询趋势入仪表板。
  5. 成本控制:错误与慢日志标准索引,全量审计(若开)走低频/归档索引。

常见问题(FAQ)

MariaDB 和 MySQL 的日志配置能直接互抄吗?

大部分能,但注意差异:慢日志的 MariaDB 独有参数(log_slow_filter 等)在 MySQL 不存在;默认错误日志去向可能不同(MariaDB 常走 journald);部分变量默认值不同。互抄前先核对当前版本文档。

log_warnings 设多少合适?

生产推荐 2:记录连接失败与放弃连接等关键警告,又不至于太吵。排障连接问题时临时调到 4+。

Galera 节点日志时间对不上怎么办?

集群排障依赖跨节点时间对齐——所有节点配置 NTP 校时;观测云侧按日志内时间戳(Pipeline 解析 time 字段)统一事件时间,减少主机时钟偏差的影响。

慢日志分析和 MySQL 工具通用吗?

通用。mysqldumpslow 与 pt-query-digest 都能解析 MariaDB 慢日志(格式兼容),MariaDB 自带的 mysqldumpslow 用法一致。

系列阅读


获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台