clog日志回收策略

【 使用环境 】生产环境 or 测试环境
【 OB or 其他组件 】
【 使用版本 】
【问题描述】clog日志回收策略到底是什么


1.clog日志回收的或者说复用,图中的80%,95%的基准是log_disk_size设置的大小么??,还是clog目录所在的磁盘分区的总空间
2.

log_pool是什么怎么占了那么大的空间
3.新建租户的时候分配的LOG_DISK_SIZE大小又有啥用,能限制哪个文件的大小

2 个赞

1.基准是log_disk_size设置大小,超过80%进行复用,超过95%停写。
2. log_pool 是 clog 目录下的一个子目录(不是单个文件),由 ObServerLogBlockMgr 类管理。它的核心作用是充当 日志块(log block)的预分配缓冲池,需要时快速 rename 出去,回收时 rename 回来,避免频繁的磁盘 fallocate 操作带来的性能损耗。本质上是一个日志磁盘空间管理器
3. LOG_DISK_SIZE是租户的日志盘大小,如搭建1002租户限制的为上图中 tenant_1002+1001大小

4 个赞

感谢

学习了

谢谢你的分享,有学到了

@论坛小助手

根据提供的文档片段,可以总结出关于clog日志回收策略的以下几点:

  1. clog日志回收的基准是clog目录所在的磁盘分区的总空间,而非单独设置的log_disk_size。有两个关键参数控制日志磁盘的使用:

    • log_disk_utilization_threshold:默认值为80%,表示在超过设定阈值后,会将可以回收的日志文件回收掉。
    • log_disk_utilization_limit_threshold:默认值为95%,表示clog大小达到该阈值后,会禁止写入和日志同步。
  2. log_pool可能是clog的一部分,具体占用空间较大的原因可能是因为它包含了大量未被回收的日志文件。当clog日志未被及时回收或回收过程出现问题时,可能会导致log_pool占用较多空间。

  3. 新建租户时分配的LOG_DISK_SIZE主要用于预估clog磁盘空间的大小,建议设置为memory_limit * 3。这个参数主要用于控制clog磁盘的预占用空间,确保有足够的空间供clog使用。然而,实际的日志回收和复用策略依然依赖于log_disk_utilization_thresholdlog_disk_utilization_limit_threshold参数。

综上所述,log_disk_size更多是一个预估值,而log_disk_utilization_thresholdlog_disk_utilization_limit_threshold则是实际控制clog日志回收的关键参数。

详情请参考:

  1. oceanbase clog盘如何瘦身
  2. oceanbase数据库运行过程中手动删除clog日志
  3. Redo 日志
  4. clog_disk_usage_limit_percentage
  5. clog_disk_utilization_threshold
  6. OceanBase 数据库性能的影响因素

:call_me_hand: :call_me_hand: :call_me_hand: :call_me_hand:

假设log_disk_size 我分配了200G,那么他和这几个是什么关系,是他们的和么,但是log_pool占用那么大,其他的占用那么少
image

多问下,clog开始回收时,回收粒度是租户本身的日志盘空间吗?是按照checkpoint位点推动来进行的吗?这里能否展开说下

CLOG 回收 = 各模块 checkpoint 推进到安全 SCN(clog_checkpoint_scn) → 元数据与 PALF base_lsn 对齐推进 → PALF 删除早于 base_lsn 的日志块;磁盘紧张时额外 按盘占用阈值触发强制 flush,用 recycle_scn 把各 handler 往前赶;

1 个赞

好的,谢谢

https://open.oceanbase.com/blog/5203648257
可以看一下这个信息