postgresql - 找不到wal备份文件

标签 postgresql replication database-backups wal

我有两台服务器,一台主服务器和一台副本服务器,它们以异步复制模式协同工作;从服务器似乎工作正常,因为主服务器中的任何更改都会立即反射(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/

相关文章:

postgresql - 在一个查询中删除 Postgresql 9.3 中的普通 View 或物化 View

postgresql - 将 postgresql 中的 UTC 时区转换为 EST(本地时间)

postgresql - 在 postgres 热备服务器上创建只读用户

mysql - 如何使用基于 binlog 的 Ansible Playbook 在 mysql 中实现 'incremental backup with 1 hour timing' 周期?

sql-server - 将 SQL Server 备份恢复到 Azure SQL 数据库

node.js - 如何在 sequelize 迁移中添加列

PostgreSQL 同步复制一致性

MySQL复制: Prevent a specific procedure call on slave

java - 有没有办法以编程方式启动数据存储备份?

postgresql - Postgres,排序