我有一个运行Azure VM的PostgreSQL 9.5实例。正如here所述,我必须指定一个后期和一个处方来告诉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-service才能使fs-backup有效。 Another place我已经读过,点击pg_start_backup()
应足以保证有效的独立物理备份。
答案 0 :(得分:1)
如果您计划拍摄的快照是真正原子的,也就是说,恢复的快照代表某个时间点的文件系统状态,您只需从这样的快照重新启动数据库,它就会执行崩溃恢复并且处于一致的状态。
在这种情况下,无需关心WAL归档或备份模式。你可以设置archive_mod = off
而不用担心它。
如果快照不是真正的原子,或者您想要时间点恢复(将数据库还原到备份之间的某个时间点的能力) ,你需要WAL归档设置和运行,因为你需要WALs将数据库恢复到一致的状态。
在这种情况下,archive_mode
必须是on
,而archive_command
必须是只有在WAL文件成功归档后才能返回成功的命令。如果在上次备份和恢复数据库的时间之间只缺少一个WAL,则无法正常工作。