外观
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恢复:利用事务日志进行时间点恢复
- 归档日志:定期归档重要日志,便于长期保存和查询
