Skip to content

OceanBase 日志参数配置

日志参数核心概念

OceanBase 数据库的日志系统是其可靠性和一致性的重要保障,包括事务日志(WAL)、运行日志、审计日志等多种类型。日志参数用于控制日志的生成、存储、清理和性能等方面。合理配置日志参数对于保证 OceanBase 集群的稳定性、可靠性和性能至关重要。

日志类型

  • 事务日志(WAL):记录所有数据修改操作,用于数据恢复和副本同步
  • 运行日志:记录集群运行状态、错误信息和警告
  • 审计日志:记录用户操作和访问行为
  • 慢查询日志:记录执行时间超过阈值的SQL语句
  • 事件日志:记录数据库事件和状态变化

事务日志(WAL)参数

1. 日志写入参数

log_disk_utilization_threshold

  • 描述:控制事务日志磁盘使用率阈值,超过该阈值后会触发日志清理
  • 默认值:90
  • 单位:百分比
  • 调整建议:根据实际磁盘容量和业务需求调整,建议设置为80-90%
sql
ALTER SYSTEM SET log_disk_utilization_threshold = 85;

log_io_bandwidth_limit

  • 描述:限制事务日志的IO带宽
  • 默认值:0(不限制)
  • 单位:MB/s
  • 调整建议:在IO资源紧张的环境中,可以设置适当的限制,避免影响其他业务
sql
ALTER SYSTEM SET log_io_bandwidth_limit = 200;

log_buffer_size

  • 描述:事务日志缓冲区大小
  • 默认值:67108864(64MB)
  • 单位:字节
  • 调整建议:对于写入频繁的业务,可以适当增大缓冲区大小,减少IO次数
sql
ALTER SYSTEM SET log_buffer_size = 134217728;

2. 日志同步参数

log_sync_time_warn_threshold

  • 描述:日志同步时间警告阈值
  • 默认值:200000(200ms)
  • 单位:微秒
  • 调整建议:根据集群性能和业务需求调整,建议设置为100-300ms
sql
ALTER SYSTEM SET log_sync_time_warn_threshold = 300000;

log_sync_timeout

  • 描述:日志同步超时时间
  • 默认值:10000000(10s)
  • 单位:微秒
  • 调整建议:对于网络延迟较高的环境,可以适当增大超时时间
sql
ALTER SYSTEM SET log_sync_timeout = 15000000;

log_sync_method

  • 描述:日志同步方式
  • 取值范围:0(异步)、1(同步)
  • 默认值:1(同步)
  • 调整建议:对于对数据一致性要求极高的业务,使用同步方式;对于追求高性能的业务,可以考虑异步方式
sql
ALTER SYSTEM SET log_sync_method = 1;

3. 日志归档参数

log_archive_min_retained_log_count

  • 描述:日志归档保留的最小日志数量
  • 默认值:0
  • 单位:个
  • 调整建议:根据备份策略和恢复需求调整,建议设置为720(对应30天,每天24个日志文件)
sql
ALTER SYSTEM SET log_archive_min_retained_log_count = 720;

log_archive_max_retained_log_count

  • 描述:日志归档保留的最大日志数量
  • 默认值:0(不限制)
  • 单位:个
  • 调整建议:根据磁盘容量和恢复需求调整,建议设置为1440(对应60天)
sql
ALTER SYSTEM SET log_archive_max_retained_log_count = 1440;

运行日志参数

1. 日志级别参数

syslog_level

  • 描述:系统日志级别
  • 取值范围:DEBUG、INFO、WARN、ERROR、FATAL
  • 默认值:INFO
  • 调整建议:生产环境建议设置为WARN或ERROR,避免日志过多影响性能
sql
ALTER SYSTEM SET syslog_level = 'WARN';

enable_syslog_wf

  • 描述:是否启用警告和错误日志写入独立文件
  • 默认值:True
  • 调整建议:建议保持启用,便于问题定位
sql
ALTER SYSTEM SET enable_syslog_wf = True;

2. 日志文件参数

syslog_file

  • 描述:系统日志文件路径
  • 默认值:observer.log
  • 调整建议:建议配置绝对路径,并确保磁盘空间充足
sql
ALTER SYSTEM SET syslog_file = '/home/admin/oceanbase/log/observer.log';

syslog_wf_file

  • 描述:警告和错误日志文件路径
  • 默认值:observer.wf.log
  • 调整建议:建议配置绝对路径,并与系统日志分开存储
sql
ALTER SYSTEM SET syslog_wf_file = '/home/admin/oceanbase/log/observer.wf.log';

max_syslog_file_size

  • 描述:单个日志文件的最大大小
  • 默认值:0(不限制)
  • 单位:MB
  • 调整建议:建议设置为100-500MB,便于日志管理和归档
sql
ALTER SYSTEM SET max_syslog_file_size = 200;

max_syslog_files

  • 描述:保留的最大日志文件数量
  • 默认值:0(不限制)
  • 单位:个
  • 调整建议:建议设置为10-50个,根据磁盘容量调整
sql
ALTER SYSTEM SET max_syslog_files = 30;

审计日志参数

1. 审计日志开关

enable_audit_log

  • 描述:是否启用审计日志
  • 默认值:False
  • 调整建议:对于安全要求较高的环境,建议启用审计日志
sql
ALTER SYSTEM SET enable_audit_log = True;

audit_log_level

  • 描述:审计日志级别
  • 取值范围:0(只记录成功操作)、1(记录成功和失败操作)
  • 默认值:0
  • 调整建议:根据安全需求调整,建议设置为1
sql
ALTER SYSTEM SET audit_log_level = 1;

2. 审计日志存储参数

audit_log_file

  • 描述:审计日志文件路径
  • 默认值:audit.log
  • 调整建议:建议配置绝对路径,并确保磁盘空间充足
sql
ALTER SYSTEM SET audit_log_file = '/home/admin/oceanbase/log/audit.log';

max_audit_log_file_size

  • 描述:单个审计日志文件的最大大小
  • 默认值:100
  • 单位:MB
  • 调整建议:建议设置为100-500MB
sql
ALTER SYSTEM SET max_audit_log_file_size = 200;

max_audit_log_files

  • 描述:保留的最大审计日志文件数量
  • 默认值:10
  • 单位:个
  • 调整建议:建议设置为10-50个,根据磁盘容量调整
sql
ALTER SYSTEM SET max_audit_log_files = 30;

慢查询日志参数

1. 慢查询开关和阈值

enable_sql_audit

  • 描述:是否启用SQL审计(包括慢查询日志)
  • 默认值:True
  • 调整建议:建议保持启用,便于性能分析
sql
ALTER SYSTEM SET enable_sql_audit = True;

slow_query_time

  • 描述:慢查询阈值
  • 默认值:1000000(1s)
  • 单位:微秒
  • 调整建议:根据业务需求调整,建议设置为500000(500ms)或1000000(1s)
sql
ALTER SYSTEM SET slow_query_time = 500000;

trace_log_slow_query_watermark

  • 描述:慢查询跟踪日志水印值
  • 默认值:1000000(1s)
  • 单位:微秒
  • 调整建议:建议与slow_query_time保持一致或稍大
sql
ALTER SYSTEM SET trace_log_slow_query_watermark = 1000000;

2. 慢查询存储参数

max_sql_audit_size

  • 描述:SQL审计数据的最大存储大小
  • 默认值:10737418240(10GB)
  • 单位:字节
  • 调整建议:根据集群规模和查询量调整,建议设置为5-20GB
sql
ALTER SYSTEM SET max_sql_audit_size = 21474836480;

sql_audit_slow_query_watermark

  • 描述:SQL审计慢查询水印值
  • 默认值:1000000(1s)
  • 单位:微秒
  • 调整建议:建议与slow_query_time保持一致
sql
ALTER SYSTEM SET sql_audit_slow_query_watermark = 500000;

日志参数调优最佳实践

1. 性能优先场景

  • 事务日志:适当增大log_buffer_size,考虑使用异步日志同步方式
  • 运行日志:设置syslog_level为WARN或ERROR,减少日志生成量
  • 慢查询日志:适当增大slow_query_time阈值,减少慢查询日志数量

2. 可靠性优先场景

  • 事务日志:使用同步日志同步方式,确保数据一致性
  • 运行日志:设置syslog_level为INFO,保留更多日志信息
  • 审计日志:启用审计日志,记录所有用户操作

3. 存储空间优化

  • 设置合理的日志文件大小和数量限制:避免日志占用过多磁盘空间
  • 定期清理过期日志:根据业务需求设置合适的日志保留期限
  • 压缩日志文件:对于归档日志,可以考虑压缩存储

4. 日志管理建议

  • 集中管理日志:使用日志收集工具(如ELK、Loki)集中管理和分析日志
  • 设置合理的日志级别:根据环境和需求调整日志级别
  • 监控日志磁盘使用率:避免日志占满磁盘导致集群故障
  • 定期备份重要日志:对于审计日志和关键运行日志,定期进行备份

日志参数查询与修改

1. 查询日志参数

查询所有日志相关参数

sql
SHOW PARAMETERS LIKE '%log%';

查询特定日志参数

sql
SHOW PARAMETERS LIKE 'syslog_level';

查询参数的详细信息

sql
SELECT * FROM oceanbase.gv$ob_para_info WHERE name LIKE '%log%';

2. 修改日志参数

全局修改(影响所有节点)

sql
ALTER SYSTEM SET parameter_name = value;

节点级修改(只影响当前节点)

sql
ALTER SYSTEM SET parameter_name = value SCOPE = SERVER;

会话级修改(只影响当前会话)

sql
ALTER SESSION SET parameter_name = value;

3. 参数修改生效时间

  • 立即生效:大部分日志参数修改后立即生效
  • 重启生效:部分核心参数需要重启节点才能生效

常见问题(FAQ)

Q1: 如何调整日志级别以减少日志量?

A1: 减少日志量的方法:

  • 设置syslog_level为WARN或ERROR
  • 关闭不必要的日志功能
  • 调整慢查询阈值,减少慢查询日志数量
  • 设置合理的日志文件大小和数量限制

Q2: 事务日志同步方式如何选择?

A2: 事务日志同步方式的选择依据:

  • 同步方式:适用于对数据一致性要求极高的场景,如金融业务
  • 异步方式:适用于对性能要求较高,对一致性要求相对较低的场景
  • 半同步方式:介于同步和异步之间,平衡性能和一致性

Q3: 如何监控日志磁盘使用率?

A3: 监控日志磁盘使用率的方法:

  • 使用OCP监控日志磁盘使用率
  • 设置log_disk_utilization_threshold参数,超过阈值时自动清理日志
  • 定期检查日志目录的磁盘使用情况
  • 配置监控告警,当磁盘使用率超过阈值时发送告警

Q4: 慢查询日志过多怎么办?

A4: 处理慢查询日志过多的方法:

  • 分析慢查询原因,优化SQL语句
  • 适当增大slow_query_time阈值
  • 调整max_sql_audit_size参数,限制慢查询日志存储大小
  • 定期清理过期的慢查询日志
  • 使用性能分析工具识别和优化慢查询

Q5: 如何备份和恢复OceanBase日志?

A5: 备份和恢复OceanBase日志的方法:

  • 备份:使用OceanBase内置的备份功能,或使用第三方备份工具
  • 恢复:根据备份类型和恢复需求,使用OceanBase的恢复命令进行恢复
  • PITR恢复:利用事务日志进行时间点恢复
  • 归档日志:定期归档重要日志,便于长期保存和查询