【发布时间】:2018-04-11 15:11:27
【问题描述】:
我正在尝试在 Postgres 中设置连续存档和时间点恢复 (PITR)。当我通过documentation 它说:
归档命令通常应设计为拒绝覆盖任何预先存在的归档文件。这是一项重要的安全功能,可在出现管理员错误(例如将两个不同服务器的输出发送到同一存档目录)时保持存档的完整性。
但是当我打开一个连接并不时进行一些更改时,我看到同一个 WAL 文件正在多次更改。例如,当我第一次连接数据库并进行一些更改(例如删除或插入一些行)时,它会创建一个名为 000000010000000000000090 的 WAL 文件,并且我的 archive_command 会立即运行。我的 archive_command 是
test ! -f /mnt/server/archivedir/%f && cp %p /mnt/server/archivedir/%f
这是基于文档,它检查文件是否已经存在于存档目录中,如果存在,它不会复制并且仅当文件不存在时才复制。因此,第一次条件通过并复制文件时,但是当我使用相同的连接进行更多更改时(当我从同一台 PC 重新连接时,我什至遇到相同的问题)原始 WAL 文件正在更改。但是下次复制不起作用,因为文件已经存在。
如果允许发生这种情况,我们可能会丢失备份中的一些更改。任何人都知道任何解决方案,因此它会为每次更改创建一个新文件而不是修改旧文件?
我在本地计算机 (Mac) 上使用 Postgres 版本 10.2。
【问题讨论】:
标签: postgresql database-backups