Skip to content

MariaDB 特有日志

MariaDB 特有日志概述

MariaDB 除了提供标准的错误日志、慢查询日志和二进制日志外,还包含一些特有的日志类型,这些日志主要用于监控和管理 MariaDB 特有的功能和存储引擎,如 Galera Cluster、Aria、ColumnStore 等。

Galera Cluster 日志

什么是 Galera Cluster 日志

Galera Cluster 日志是记录 Galera Cluster 集群状态、节点间通信和复制信息的日志文件,是管理和监控 Galera Cluster 的重要工具。

Galera 日志类型

  1. 系统日志

    • 位置:通常在 /var/log/messages/var/log/syslog
    • 包含 Galera Cluster 的启动、关闭和错误信息
    • 记录格式:timestamp hostname mysqld: [Note] WSREP: ...
  2. 错误日志

    • 位置:与 MariaDB 错误日志相同
    • 包含 Galera 相关的错误和警告信息
    • 记录格式:与标准错误日志相同
  3. Galera 特定日志

    • 位置:可通过 wsrep_provider_options 配置
    • 包含更详细的 Galera 集群信息

Galera 日志配置

ini
# my.cnf
[mysqld]
# Galera 提供者选项
wsrep_provider_options="gcache.size=1G; gcache.page_size=1G; log_level=INFO"

# 启用 Galera 调试日志
# wsrep_provider_options="log_level=DEBUG"

查看 Galera 日志

bash
# 查看系统日志中的 Galera 信息
grep -i wsrep /var/log/messages

# 查看错误日志中的 Galera 信息
grep -i wsrep /var/log/mariadb/mariadb-error.log

# 实时监控 Galera 日志
tail -f /var/log/mariadb/mariadb-error.log | grep -i wsrep

常见 Galera 日志信息

  1. 集群状态

    [Note] WSREP: Cluster state synced: Primary
    [Note] WSREP: New cluster view: global state: 763e0a71-9a1a-11e9-9c8e-8a3c56e8f000:1234, view# 5: Primary, number of nodes: 3, my index: 0, protocol version 3
  2. 节点加入

    [Note] WSREP: Member 1.2 (node2) requested state transfer from '*any*'. Selected 0.0 (node1)(SYNCED) as donor.
    [Note] WSREP: Shifting PRIMARY -> JOINER (TO: 1234)
  3. 状态传输

    [Note] WSREP: State transfer required: 
    [Note] WSREP: New cluster view: global state: 763e0a71-9a1a-11e9-9c8e-8a3c56e8f000:0, view# 1: Primary, number of nodes: 1, my index: 0, protocol version 3
  4. 复制错误

    [ERROR] WSREP: Failed to prepare for incremental state transfer: Local state UUID (00000000-0000-0000-0000-000000000000) does not match group state UUID (763e0a71-9a1a-11e9-9c8e-8a3c56e8f000): 1 (Operation not permitted)

Galera 日志分析工具

  1. wsrep_tool
    bash
    # 安装 wsrep_tool

git clone https://github.com/codership/wsrep-utils.git cd wsrep-utils make

使用工具分析 Galera 日志

./wsrep_tool /var/log/mariadb/mariadb-error.log


2. **Galera Cluster Manager (galera-cm)**
- 商业工具,提供 Galera 集群的监控和管理功能
- 支持可视化展示 Galera 日志信息

## Aria 日志

### 什么是 Aria 日志
Aria 日志是 Aria 存储引擎使用的日志文件,用于崩溃恢复和数据一致性保证,类似于 InnoDB 的 Redo Log。

### Aria 日志类型

1. **事务日志**
- 位置:通常在数据目录下,文件名为 `aria_log.00000001`
- 记录 Aria 表的事务操作
- 用于崩溃恢复

2. **崩溃恢复日志**
- 位置:数据目录下的 `aria_recover.log`
- 记录 Aria 表的崩溃恢复过程
- 用于调试和分析崩溃恢复问题

### Aria 日志配置

```ini
# my.cnf
[mysqld]
# Aria 日志目录
aria_log_dir = /var/lib/mysql

# Aria 日志文件大小
aria_log_file_size = 100M

# Aria 日志缓冲区大小
aria_log_buffer_size = 8M

# 自动清理 Aria 日志
aria_force_start_after_recovery_failures = 1

查看 Aria 日志

bash
# 查看 Aria 事务日志
hls -la /var/lib/mysql/aria_log.*

# 查看 Aria 崩溃恢复日志
cat /var/lib/mysql/aria_recover.log

管理 Aria 日志

sql
-- 查看 Aria 日志状态
SHOW ENGINE ARIA LOGS;

-- 刷新 Aria 日志
FLUSH LOGS;

-- 重置 Aria 日志
RESET MASTER;

ColumnStore 日志

什么是 ColumnStore 日志

ColumnStore 日志是 MariaDB ColumnStore 存储引擎使用的日志文件,用于记录 ColumnStore 的操作和状态信息。

ColumnStore 日志类型

  1. 系统日志

    • 位置:/var/log/mariadb/columnstore 目录下
    • 包含 ColumnStore 系统的启动、关闭和错误信息
    • 主要文件:csmonitor.log, examined.log, writeengine.log
  2. 查询日志

    • 位置:/var/log/mariadb/columnstore/querylog 目录下
    • 记录 ColumnStore 执行的查询
    • 用于性能分析和调试
  3. 事务日志

    • 位置:/var/lib/columnstore/data1/systemFiles 目录下
    • 记录 ColumnStore 的事务操作
    • 用于崩溃恢复

ColumnStore 日志配置

ini
# /etc/columnstore/Columnstore.xml
<SystemConfig>
  <Log>
    <Level>INFO</Level>
    <MaxSize>100</MaxSize>
    <MaxFiles>10</MaxFiles>
  </Log>
  <QueryLog>
    <Enabled>true</Enabled>
    <Level>INFO</Level>
    <MaxSize>100</MaxSize>
    <MaxFiles>10</MaxFiles>
  </QueryLog>
</SystemConfig>

查看 ColumnStore 日志

bash
# 查看 ColumnStore 系统日志
tail -n 100 /var/log/mariadb/columnstore/csmonitor.log

# 查看 ColumnStore 查询日志
tail -n 100 /var/log/mariadb/columnstore/querylog/querylog.log

# 实时监控 ColumnStore 日志
tail -f /var/log/mariadb/columnstore/csmonitor.log

Spider 存储引擎日志

Spider 日志配置

ini
# my.cnf
[mysqld]
# 启用 Spider 日志
spider_log = ON

# Spider 日志级别 (0-3)
spider_log_level = 2

# Spider 日志文件路径
spider_log_file = /var/log/mariadb/spider.log

查看 Spider 日志

bash
# 查看 Spider 日志
tail -n 100 /var/log/mariadb/spider.log

# 实时监控 Spider 日志
tail -f /var/log/mariadb/spider.log

MyRocks 存储引擎日志

MyRocks 日志类型

  1. ** RocksDB 日志**

    • 位置:数据目录下的 rocksdb/LOG
    • 记录 RocksDB 引擎的状态和错误信息
    • 用于调试和分析 RocksDB 问题
  2. ** RocksDB 统计信息**

    • 位置:可通过 rocksdb_stats_dump_period_sec 配置
    • 记录 RocksDB 的性能统计信息
    • 用于性能分析和优化

MyRocks 日志配置

ini
# my.cnf
[mysqld]
# RocksDB 日志级别
rocksdb_log_level = INFO

# RocksDB 统计信息转储周期(秒)
rocksdb_stats_dump_period_sec = 3600

# 启用 RocksDB 详细统计
rocksdb_stats_level = 2

查看 MyRocks 日志

bash
# 查看 RocksDB 日志
tail -n 100 /var/lib/mysql/rocksdb/LOG

# 查看 RocksDB 统计信息
mysql -e "SHOW ENGINE ROCKSDB STATUS LIKE 'rocksdb.stats';"

MariaDB 企业版特有日志

Enterprise Audit 日志

  • 位置:可通过 server_audit_file_path 配置
  • 记录详细的审计信息
  • 支持多种审计格式
  • 可集成到 SIEM 系统

Enterprise Monitor 日志

  • 位置:/var/log/mariadb/enterprise/monitor 目录下
  • 记录 Enterprise Monitor 的操作和状态信息
  • 用于监控和管理 MariaDB Enterprise 环境

特有日志管理最佳实践

  1. 合理配置日志级别

    • 生产环境:使用 INFO 级别,记录必要信息
    • 测试环境:可使用 DEBUG 级别,便于调试
    • 避免使用过高的日志级别,导致日志量过大
  2. 定期清理日志

    • 配置合适的日志轮换策略
    • 使用 logrotate 自动清理旧日志
    • 定期归档重要日志
  3. 集中管理日志

    • 使用 ELK Stack、Graylog 等工具集中管理日志
    • 实现日志的统一存储、搜索和分析
    • 便于跨节点和跨组件的日志关联分析
  4. 监控日志大小和性能

    • 监控日志文件大小,避免磁盘空间不足
    • 监控日志写入对系统性能的影响
    • 及时调整日志配置,平衡日志完整性和性能
  5. 安全管理日志

    • 限制日志文件的访问权限
    • 加密敏感日志内容
    • 确保日志的完整性和不可篡改性

常见问题(FAQ)

Q: 如何启用 Galera Cluster 详细日志?

A: 启用 Galera 详细日志的方法:

  • 在配置文件中添加 wsrep_provider_options="log_level=DEBUG"
  • 重启 MariaDB 服务
  • 注意:DEBUG 级别会产生大量日志,仅用于调试,生产环境建议使用 INFO 级别

Q: 如何查看 Aria 表的崩溃恢复日志?

A: 查看 Aria 崩溃恢复日志的方法:

  • 查看数据目录下的 aria_recover.log 文件
  • 内容包含 Aria 表的崩溃恢复过程和结果
  • 用于分析 Aria 表的崩溃恢复问题

Q: ColumnStore 日志过大怎么办?

A: 解决方法:

  • 调整 /etc/columnstore/Columnstore.xml 中的日志配置
  • 减小日志级别,如从 DEBUG 改为 INFO
  • 减小日志文件大小和保留数量
  • 增加日志轮换频率

Q: 如何监控 MyRocks 存储引擎的性能?

A: 监控方法:

  • 启用 RocksDB 统计信息,设置 rocksdb_stats_dump_period_sec
  • 使用 SHOW ENGINE ROCKSDB STATUS 查看 RocksDB 状态
  • 分析 RocksDB 日志文件
  • 使用性能监控工具,如 Prometheus + Grafana

Q: 如何集成 MariaDB 特有日志到 ELK Stack?

A: 集成步骤:

  • 配置 Filebeat 收集 MariaDB 特有日志
  • 配置 Logstash 解析和处理日志
  • 将日志存储到 Elasticsearch
  • 使用 Kibana 创建可视化仪表板
  • 配置告警规则,及时发现异常

总结

MariaDB 特有日志是管理和监控 MariaDB 特有功能和存储引擎的重要工具,包括 Galera Cluster 日志、Aria 日志、ColumnStore 日志等。通过合理配置和分析这些日志,可以更好地了解 MariaDB 系统的运行状态,及时发现和解决问题,确保系统的稳定运行。

建议 DBA 建立完善的日志管理机制,包括合理的日志配置、定期的日志清理、集中的日志管理和监控,以及安全的日志存储,从而充分发挥 MariaDB 特有日志的价值。