【发布时间】:2017-05-22 10:01:28
【问题描述】:
我有一个在 Azure VM 上运行的 PostgreSQL 9.5 实例。如here 所述,我必须指定一个 post- 和一个 prescript 来告诉 Azure:“是的,我已经将 VM 置于一个状态,所以整个 VM/blob 可以作为一个备份可以恢复为工作新 VM 的快照” 和 “现在我完成了”,因此 Azure 会将备份标记为 Application consistent。
就 PostgreSQL 而言,我已阅读 the docs on continuous archiving,它说明了为什么以及如何启用 WAL 归档以允许备份。我的问题来了:
如果我设置archive_mode = on 和wal_level = archive,我可以将archive_command 留空吗?这是否有意义?或者 - 我应该在此处进行某种归档(例如,将日志段复制到另一个位置/磁盘),并且在我的场景中还原 VM 时确保数据库正常工作是否有必要进行归档?
我只需要告诉 PostgreSQL“等一下 / 保持你的数据写入(或其他任何事情),同时我会创建整个 VM 的快照”。计划是先执行pg_start_backup(),拍摄快照,然后再执行pg_stop_backup()。
我确实意识到,这种方法(如果它甚至是有效的)本质上是一个文件系统级别的备份,according to docs,必须关闭 postgres 服务才能使 fs-backup 有效。 Another place 我读到点击pg_start_backup() 应该足以保证有效的独立物理备份。
【问题讨论】:
-
no - 如果您以后不打算将已保存的 WALS 与 restore_command 一起使用,则不必使用
archive_command -
@VaoTsun 好的,所以如果我理解正确,WALS 用于实际的连续备份,您可以在其中使用 WALS 修补“完整备份”,以便始终拥有最近的还原点?正如您可能推断的那样,我是深水区的 .NET/Azure 开发人员;)
-
啊,我只是想我可能会给你不好的建议 :) WAL 用于恢复 - 你 pg_start_backup、复制文件、pg_stop_backup 并开始复制 db - 它会从你复制的 WAL 中读取并如果原始服务器在您复制它们之前删除了 WALS - 恢复应该会失败。事实上,我从未尝试过以这种方式复制 VM :) 让我们等待 smbd 体验
-
我也从未尝试过,但我想在没有累积 WAL 的情况下尝试启动副本时,您会收到“无效的检查点记录”或类似错误。
标签: postgresql azure wal