了解 PostgreSQL 恢复和 REDO

问题描述 投票:0回答:1

根据PostgreSQL官方对恢复的解释,是通过以下方式完成的:

  1. 阅读pg_control
  2. 获取最新检查点记录
  3. 获取重做点
  4. 从REDO点开始将WAL应用到服务器(不是最新的检查点记录)

我的问题是:如果我们在运行检查点时已经刷写了从REDO点到最新检查点记录的所有数据,为什么还需要从REDO点到最新检查点记录的WAL?看起来直到最新检查点记录的所有数据都已经在磁盘上...但是算法是从 REDO 点开始的...有人可以澄清这个过程吗?根据我的理解,从 REDO 点到最新检查点记录的所有 WAL 都是恢复步骤中的额外内容

postgresql
1个回答
0
投票

如果我们在运行检查点时已经刷新了从REDO点到最新检查点记录的所有数据,

因为你还没有。 或者至少,你不知道你有。 检查点仅保证开始时脏的数据在结束时被刷新。 在检查点期间(开始之后但结束之前)脏的数据不一定会在检查点期间刷新。直到下一个之前它可能不会被冲走。

© www.soinside.com 2019 - 2024. All rights reserved.