根据PostgreSQL官方对恢复的解释,是通过以下方式完成的:
我的问题是:如果我们在运行检查点时已经刷写了从REDO点到最新检查点记录的所有数据,为什么还需要从REDO点到最新检查点记录的WAL?看起来直到最新检查点记录的所有数据都已经在磁盘上...但是算法是从 REDO 点开始的...有人可以澄清这个过程吗?根据我的理解,从 REDO 点到最新检查点记录的所有 WAL 都是恢复步骤中的额外内容
如果我们在运行检查点时已经刷新了从REDO点到最新检查点记录的所有数据,
因为你还没有。 或者至少,你不知道你有。 检查点仅保证开始时脏的数据在结束时被刷新。 在检查点期间(开始之后但结束之前)脏的数据不一定会在检查点期间刷新。直到下一个之前它可能不会被冲走。