关于wal日志的删除问题

在用importer导入数据的时候遇到了wal日志膨胀的问题,看了文档是因为默认的wal日志保留时间是4个小时,我想要把wal日志改小,改成10分钟,但是这个时候我想到一个问题,我看wal的清理解释是:

有一个背景线程会不断去检查哪些 wal 可以删掉了,比如说默认值 4 个小时之后,一旦发现时过期的 wal 系统便会删掉。

我想问下这个线程去检查wal哪些过期时候,会先检查这部分日志是否已经持久化到磁盘吗,如果设置为10分钟,会出现集群存在问题导致这部分wal日志并没有实际持久化而被删除吗?

不会的。当前wal文件的删除必须满足以下条件:
1)最新的wal文件的lastLogId 大于等于commitlogId 时才进行删除。
并且要删除的wal 文件 lastlogId 小于commitlogId
2) 至少保留两个最新的wal 文件
3)要删除的wal文件的最后修改时间到现在的时间断 大于walttl

所以,没有提交wal 文件不会删除的。

2 个赞