繁体   English   中英

找不到沃尔玛备份文件

[英]Can't find wal backup files

我有两个服务器,一个主服务器和一个副本服务器,它们以异步复制模式一起工作; 从服务器似乎运行良好,因为主服务器中的任何更改都会立即反映在从服务器中。 此外,还有一个存档过程,可将wal文件从主文件复制到另一个文件系统,以确保它们的安全。 我的疑问是,我可以通过pg_archivecleanup删除哪些wal文件? 我想我需要在主数据库中查找扩展名为.backup wal文件,然后才能删除比上次备份更早的wal文件。

例如,如果我在主服务器中有这些文件

000000010000000000000089
000000010000000000000088.00000028.backup
000000010000000000000088
000000010000000000000087
000000010000000000000086
...

我得出的结论是,可以安全删除000000010000000000000088和较旧的文件,并保留最新的文件。

问题是我在任何地方都找不到.backup文件:既不在主数据库中,也不在副本数据库中,也没有在存档位置。

如果使用pg_basebackup或类似文件执行在线备份, 并且正在使用archive_command归档WAL文件, pg_basebackup创建*.backup文件。

在那种情况下,您可以将pg_archivecleanup与这样的文件作为参数一起使用,以自动删除所有早于该备份的WAL存档。

您要么使用其他备份方法( pg_dump ?),要么不使用archive_command

使用pg_dump不能进行归档恢复,因此根本不需要归档WAL。 如果您使用的是pg_receivewal类的其他存档方法,则不会获得*.backup文件,您必须考虑其他方法来删除旧的WAL存档。

清除旧的WAL存档的一种简单方法是简单地删除所有比保留时间更旧的存档。

仍在生成和存档文件(除非您将其关闭)作为主文件。 它们也通过流传递到副本,并保存在pg_wal中,但是副本会在每个重新启动点自动清除它们。 您可以通过在副本上始终设置archive_mode = always来使副本永久保留,但这听起来像您不想要那样。

如果存档的唯一目的(由主数据库保存)是为了保存副本以供副本使用,以防副本滞后于流传输(而不是用于灾难恢复或PITR),则可以使用“ pg_archivecleanup”自动清除它们。 这是在副本数据库(不是主数据库)上调用的,但是必须具有对存档目录的写访问权。 因此,您可以将其挂载为网络文件共享,可以将pg_archivecleanup封装在ssh中,以便它可以在主服务器而不是副本服务器上运行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM