作为PostgreSQL数据库管理员并每天管理备份,我最喜欢的Barman 2.10的新功能之一是.partial恢复期间对WAL文件的透明管理。而且,如果您一直在将Barman与WAL流一起使用,并被要求执行实例的完全恢复,则很可能会感同身受。
在Barman 2.10中恢复部分WAL文件
新的Barman 2.10通过自动管理部分文件来增强用户的体验并修复恢复过程中的问题。
这是可以通过新功能实现的,.partial由于添加了新功能,该功能允许自动恢复WAL文件。–partial/-P option to the get-wal command.
该get-wal命令负责从Barman检索WAL文件,从1.5.0版开始将Barman服务器转换为服务器的WAL集线器。使用–partial/ -P选项,如果WAL文件已经交付给Barman,但尚未归档,则该get-wal命令还可以检索在streaming目录中搜索的部分WAL文件。
如果主PostgreSQL服务器突然出现不可恢复的故障,这特别有用。.partial流到Barman 的文件包含非常重要的信息,标准存档程序(通过PostgreSQL的archive_command)尚未传递给Barman。现在,执行恢复时,您可以在启用状态下运行该recover命令get-wal,而无需运行–standby-mode。在这种情况下,Barman会自动将-P选项添加到恢复选项中barman-wal-restore(然后将其中继到远程get-wal命令)restore_command。
注意:barman-wal-restore是barman-cli包装的一部分。
让我们使用Barman 2.10执行恢复:
barman recover \
--remote-ssh-command 'ssh postgres@pg02' \
pg01 latest /opt/postgres/data/
恢复将产生以下recovery.conf文件(PostgreSQL 11或更早版本)或postgresql.auto.conf(PostgreSQL 12及更高版本):
# The barman-wal-restore command is provided in the barman-cli package
restore_command = 'barman-wal-restore -P -U barman backup node1 %f %p'
如您所见,barman-wal-restore包含的-P选项将把请求传播到Barman的get-wal命令,同时还返回最新的部分文件的内容:
2019-11-17 15:30:56,826 [19952] barman.server INFO: Sending WAL '000000010000000000000014.partial' for server 'pg01' to standard output (SSH host: XXX.XXX.XX.X)
结论
与任何新发行的Barman一样,我们建议每个人都将其系统更新为最新版本。2.10包含一些错误修复和增强功能,包括:
- 在check命令中验证PostgreSQL实例的系统标识符
- 名为的新服务器/全局选项create_slot,用于控制自动创建复制插槽
- barman-cloud-wal-archive 脚本直接将WAL文件发送到AWS S3以在云中永久存储
- barman-cloud-backup 脚本来执行完整的基本备份,并将其直接发送到AWS S3以在云中永久存储。




