【 使用环境 】
测试环境
【 OB 】
【 使用版本 】
4.3.5.2
【问题描述】
observer日志只有当天的日志,之前的日志并没有产生归档,如下图
max_syslog_file_count设置的300,enable_syslog_recycle也是开启的
我的日志远没有300个,为什么就给清除了,只保留了今天的日志
【 使用环境 】
测试环境
【 OB 】
【 使用版本 】
4.3.5.2
【问题描述】
observer日志只有当天的日志,之前的日志并没有产生归档,如下图
max_syslog_file_count设置的300,enable_syslog_recycle也是开启的
我的日志远没有300个,为什么就给清除了,只保留了今天的日志
OceanBase 的 observer 日志没有生成历史归档文件,仅保留当天日志——是由于 系统运行日志的本地回收机制 触发了旧日志清理所致。以下是对相关参数和机制的专业分析:
您提到已设置 max_syslog_file_count=300 并开启 enable_syslog_recycle=true,理论上应保留最多 300 个日志文件,但实际上日志仍被清除,主要原因在于另一个关键参数:syslog_disk_size。
根据官方文档,日志清理策略由两个维度共同决定:
max_syslog_file_count:基于日志数量的限制observer.log、election.log 等)最多保留多少个文件enable_syslog_recycle = truemax_syslog_file_count > 0
注意:单个日志文件大小为 256MB(固定),所以若
max_syslog_file_count=300,理论上可占用约 75GB 空间。
参考文档:max_syslog_file_count 属性说明
syslog_disk_size:基于日志磁盘总大小的限制(更优先!)这是您问题的关键所在!
| 条件 | 行为 |
|---|---|
max_syslog_file_count=0, syslog_disk_size=0
|
不回收日志,直到磁盘写满 |
max_syslog_file_count=0, syslog_disk_size>0
|
按照 syslog_disk_size 配额回收旧日志 |
max_syslog_file_count>0, syslog_disk_size=0
|
按照最大文件数回收 |
max_syslog_file_count>0, syslog_disk_size>0
|
任一条件触发即开始删除最旧日志 |
重点:当两者都大于 0 时,系统将同时考虑数量和磁盘空间限制,一旦任一阈值达到,就开始清理。
此外:
syslog_compress_func != none),则在剩余空间 < 4GB 时启动压缩。这种现象通常表明:
syslog_disk_size 被设置为一个较小值(例如几 GB),不足以容纳多天日志;即使 max_syslog_file_count=300,如果总日志体积超过 syslog_disk_size 设定值,系统仍会删除旧文件。
– 查看当前配置 SELECT * FROM oceanbase.GV$OB_PARAMETERS WHERE NAME IN (‘max_syslog_file_count’, ‘enable_syslog_recycle’, ‘syslog_disk_size’);
需要特别说明:
observer.log 是 运行日志(diagnostic log),不属于数据库事务日志(WAL)。logrotate、rsync、ELK、SLS 等)定期备份至远程存储。若您指的是 事务日志归档(Log Archiving) 用于备份恢复,请参考 OceanBase 的 日志归档模式 功能,它独立于 observer.log 的管理机制。
| 参数 | 作用 | 是否关键 |
|---|---|---|
enable_syslog_recycle |
控制是否启用日志回收 |
|
max_syslog_file_count |
按文件数量限制日志保留 |
syslog_disk_size 影响 |
syslog_disk_size |
按总磁盘空间限制日志总量 |
|
| 磁盘剩余空间 | 小于 2GB 时强制清理 |
|
因此,您看到“只保留当天日志”的根本原因极可能是
syslog_disk_size设置过小或磁盘空间不足。
建议立即检查 syslog_disk_size 设置,并结合磁盘容量合理规划日志保留策略。
如需进一步诊断,可提供:
du -sh $OBDATA/log/*.log*
df -h $OBDATA
ob的系统日志清理有2个策略,如果是ocp管理的ob,ocp会监控安装目录磁盘大小,超过一定阀值会触发日志清理,如果没超过阀值按ob的日志保留个数策略进行。
可以确认下安装目录的磁盘大小是否接近80%左右。
https://www.oceanbase.com/docs/common-ocp-1000000003339297#1-title-OCP%20%E5%85%A8%E5%B1%80%E6%97%A5%E5%BF%97%E4%BF%9D%E7%95%99%E7%AD%96%E7%95%A5)
这个目录存储了observer的运行日志,先看下目录空间是否充足,ocp管理的集群,如果目录空间使用到了80%也会清理,另外你这个环境使用频繁吗,可以关闭enable_syslog_recycle,先不用自动回收看看是否能保留日志。
学习了