如何在拍摄 LVM/ZFS 快照之前暂停 Postgres?

如何在拍摄 LVM/ZFS 快照之前暂停 Postgres?

我如何指示 Postgres 完成所有“正在进行的”事务,但延迟启动新的事务(不踢出客户端),直到我拍摄 ZFS 或 LVM 快照(这需要不到一秒钟)。

例如

  1. 暂停 Postgres,等待“正在进行的”事务完成
  2. 同步到磁盘
  3. 获取 ZFS/LVM 快照
  4. 恢复 Postgres

答案1

这个答案dba.stackexchange 上的内容似乎就是您所追求的。

评论似乎不会自动链接到侧边栏(网络内部),所以我需要写更多的东西来防止自动转换为评论......是的。

答案2

@user121391 回答中提到的帖子是正确的,但简而言之:

  • 你不能暂停postgresql 以任何方式(强制它继续打开事务并且不处理新事务)
  • 如果底层快照是原子的(ZFS 快照似乎是原子的),则在快照之前无需执行任何操作,如果 postgres在快照上运行新进程,数据库将以恢复模式启动(就像前一个进程异常停止时一样)。
  • pg_start_backup将使恢复过程更快一些(因为已建立检查点,并且 WAL 中的待处理写入将会减少)

相关内容