这部分是数据落盘之前先写的日志,想问下这部分日志文件清理机制是怎样的,都是通过哪些参数控制的
mysql中是使用expire_logs_days 参数控制的
主要是以下几个参数配置的:
具体的可以参考如下链接 https://docs.pingcap.com/zh/tidb/stable/tikv-configuration-file#raft-log-gc-threshold
我觉得如果超过允许残余的 Raft 日志个数或者允许残余的 Raft 日志大小之后,集群可能就开始进行清理操作
1 个赞
主要是日志大小和天数
这些参数都是默认值,没有过修改,但是还不是很理解是以哪个为准还是说有内部的清理机制
TiKV 提供了 Raft Log 的清理机制,其具体过程如下:
- 每个 TiKV 实例根据配置的参数来计算 log 缩减的阈值,从而判断是否需要对 Raft Log 进行清理。
- 判断已经提交的 log index 和 compacted index 是否具有最小差别,如果不具有则暂时停止 Raft Log 的清理过程。
- 如果存在 Raft Log 缩减的空间,则可以使用一些数据结构来管理 Raft Log,比如 RocksDB。
- Raft Log 缩减策略使用一定时间窗口内所有 peer 的 log_storage_size 计算重叠部分的和,选取最小值进行压缩清理,同时删除已经压缩的 Raft Log。
- 对 Raft Log 进行压缩清理后,会同步更新 TiKV 实例内的 peer_cache 和 region_cache,保证 Raft 数据的一致性和可靠性。
日志大小和天数
首先肯定是数据从内存写入磁盘成功后才会启动清理日志,对于默认的配置项,只要有一个达到要求就会启动清理流程
好的 大体理解了 谢谢
还没学到这块,先收藏学习了
满足其中一个参数设置得值就会开始清理