raft log 日志清理机制

image
这部分是数据落盘之前先写的日志,想问下这部分日志文件清理机制是怎样的,都是通过哪些参数控制的

mysql中是使用expire_logs_days 参数控制的

主要是以下几个参数配置的:


具体的可以参考如下链接 https://docs.pingcap.com/zh/tidb/stable/tikv-configuration-file#raft-log-gc-threshold

我觉得如果超过允许残余的 Raft 日志个数或者允许残余的 Raft 日志大小之后,集群可能就开始进行清理操作

1 个赞

主要是日志大小和天数

这些参数都是默认值,没有过修改,但是还不是很理解是以哪个为准还是说有内部的清理机制

TiKV 提供了 Raft Log 的清理机制,其具体过程如下:

  1. 每个 TiKV 实例根据配置的参数来计算 log 缩减的阈值,从而判断是否需要对 Raft Log 进行清理。
  2. 判断已经提交的 log index 和 compacted index 是否具有最小差别,如果不具有则暂时停止 Raft Log 的清理过程。
  3. 如果存在 Raft Log 缩减的空间,则可以使用一些数据结构来管理 Raft Log,比如 RocksDB。
  4. Raft Log 缩减策略使用一定时间窗口内所有 peer 的 log_storage_size 计算重叠部分的和,选取最小值进行压缩清理,同时删除已经压缩的 Raft Log。
  5. 对 Raft Log 进行压缩清理后,会同步更新 TiKV 实例内的 peer_cache 和 region_cache,保证 Raft 数据的一致性和可靠性。

日志大小和天数

首先肯定是数据从内存写入磁盘成功后才会启动清理日志,对于默认的配置项,只要有一个达到要求就会启动清理流程

好的 大体理解了 谢谢

还没学到这块,先收藏学习了

满足其中一个参数设置得值就会开始清理