我有两台服务器,一台主服务器和一台副本服务器,它们以异步复制模式协同工作;从服务器似乎工作正常,因为主服务器中的任何更改都会立即反射(reflect)在从服务器中。此外,还有一个归档过程,将 wal 文件从 master 复制到另一个文件系统以保证它们的安全。我的疑问是,我可以通过pg_archivecleanup删除哪些wal文件?我想我需要在 master 中查找扩展名为 .backup
的 wal 文件,然后我可以删除早于上次备份的 wal 文件。
例如,如果我在主服务器中有这些文件
000000010000000000000089
000000010000000000000088.00000028.backup
000000010000000000000088
000000010000000000000087
000000010000000000000086
...
我得出的结论是,删除 000000010000000000000088
和较旧的文件是安全的,并保留最新的文件。
问题是我在任何地方都找不到 .backup
文件:无论是在主文件中、在副本中还是在存档位置中都找不到。
最佳答案
如果您使用 pg_basebackup
或类似的工具执行在线备份,并且您使用archive_command
。
在这种情况下,您可以使用 pg_archivecleanup
并将此类文件作为参数来自动删除早于该备份的所有 WAL 存档。
您要么使用不同的备份方法(pg_dump
?),要么不使用archive_command
。
使用pg_dump
,您无法进行归档恢复,因此您根本不需要归档 WAL。如果您使用不同的存档方法,例如 pg_receivewal,您将不会获得 *.backup 文件,并且您必须考虑其他方法来删除旧的 WAL 存档.
清除旧 WAL 存档的一种简单方法是删除所有早于保留时间的存档。
关于postgresql - 找不到wal备份文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57861887/