raft log 日志清理机制

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 数据的一致性和可靠性。