TiCDC 运行一段时间后本地磁盘占用持续升高,排查确认是日志文件不断累积所致。在日志配置项 log.file 中,有两个控制日志保留策略的参数:
max-days:日志文件最大保留天数,默认值为 0,表示不按天数自动删除。
max-backups:日志文件最大保留数量,默认值为 0,表示保留全部日志文件。
请问当两个参数均配置为非 0 值时,日志清理的实际执行逻辑是什么?
TiCDC 运行一段时间后本地磁盘占用持续升高,排查确认是日志文件不断累积所致。在日志配置项 log.file 中,有两个控制日志保留策略的参数:
max-days:日志文件最大保留天数,默认值为 0,表示不按天数自动删除。
max-backups:日志文件最大保留数量,默认值为 0,表示保留全部日志文件。
请问当两个参数均配置为非 0 值时,日志清理的实际执行逻辑是什么?
写个定时任务自动归档清理
上面两个参数就是用来控制自动清理的,只是不知道两个参数同时配会不会有问题。比如:
max-days:7,滚动清理7天前的日志。
max-backups:20,兜底瞬间大量错误日志,别把磁盘撑满。
理想的结果是,任一参数触发就清理。非理想情况是,两个同时满足才清理。
谢谢大哥
定时任务自动归档清理
我理解的是:两个条件独立生效,任一超限即清理
建议把 max-days 设为 7,max-backups 设为 10,这样日志保留7天或最多10个文件,取两者中更严格的条件执行清理。实际逻辑是:TiCDC 会按文件修改时间判断,先检查 max-days 超期文件删除,再检查 max-backups 超出数量删除。你可以试试在 cdc server 启动配置或 config 文件中加:
log.file:
max-days: 7
max-backups: 10
重启生效,观察磁盘占用。
完整执行逻辑:
iCDC 运行时日志滚动机制 当日志文件大小达到 max-size,执行切割: ticdc.log → 重命名为 ticdc.log.1,新建空 ticdc.log;多次滚动生成 ticdc.log.1, ticdc.log.2, ticdc.log.3 ...。
后台日志清理循环触发条件(每次产生新切割文件后执行一轮清理) 遍历所有切割后的备份日志文件,依次判断两条规则:
now - max-days → 删除TiCDC 的文件日志底层依赖 lumberjack v2,所有日志滚动、旧日志删除逻辑由 lumberjack 实现。
此话题已在最后回复的 7 天后被自动关闭。不再允许新回复。