2024年9月26日: PostgreSQL 17 发布!
支持版本:当前 (17)
开发版本:devel

pg_combinebackup

pg_combinebackup — 从增量备份和相关备份重建完整备份

概要

pg_combinebackup [选项...] [备份目录...]

描述

pg_combinebackup 用于从增量备份及其依赖的早期备份重建一个合成完整备份。

在命令行中从旧到新指定所有所需的备份。也就是说,第一个备份目录应该是完整备份的路径,最后一个应该是您希望恢复的最终增量备份的路径。重建的备份将写入由-o选项指定的输出目录。

pg_combinebackup 将尝试验证您指定的备份是否形成了一个合法的备份链,从中可以重建正确的完整备份。但是,它并非旨在帮助您跟踪哪些备份依赖于哪些其他备份。如果您删除了增量备份所依赖的一个或多个先前备份,则将无法恢复它。此外,pg_combinebackup 仅尝试验证备份之间是否具有正确的关联关系,而不是验证每个单独备份是否完整;为此,请使用pg_verifybackup

由于pg_combinebackup 的输出是合成完整备份,因此它可以作为将来调用pg_combinebackup 的输入。合成完整备份将在命令行中指定,以代替重建它的备份链。

选项

-d
--debug

stderr上打印大量的调试日志输出。

-n
--dry-run

-n/--dry-run选项指示pg_combinebackup找出将执行的操作,而无需实际创建目标目录或任何输出文件。它与--debug结合使用特别有用。

-N
--no-sync

默认情况下,pg_combinebackup将等待所有文件安全地写入磁盘。此选项导致pg_combinebackup在不等待的情况下返回,这更快,但意味着后续的操作系统崩溃可能会导致输出备份损坏。通常,此选项适用于测试,但不应在创建生产安装时使用。

-o outputdir
--output=outputdir

指定应将合成完整备份写入的输出目录。目前,此参数是必需的。

-T olddir=newdir
--tablespace-mapping=olddir=newdir

在备份期间将目录olddir中的表空间重新定位到newdirolddir是表空间在命令行上指定的最终备份中存在的绝对路径,newdir是在重建的备份中用于表空间的绝对路径。如果任一路径需要包含等号(=),则在其前面加上反斜杠。此选项可以为多个表空间多次指定。

--clone

使用高效的文件克隆(在某些系统上也称为reflinks),而不是将文件复制到新的数据目录,这可以导致数据文件几乎立即复制。

如果备份清单不可用或不包含正确类型的校验和,则将使用文件克隆来复制文件,但也会逐块读取文件以进行校验和计算。

文件克隆仅在某些操作系统和文件系统上受支持。如果已选择但不受支持,则pg_combinebackup运行将出错。目前,它在使用Btrfs和XFS的Linux(内核4.5或更高版本)(在具有reflink支持的文件系统上创建)以及使用APFS的macOS上受支持。

--copy

执行常规文件复制。这是默认值。(另请参见--copy-file-range--clone。)

--copy-file-range

使用copy_file_range系统调用进行高效复制。在某些文件系统上,这会产生类似于--clone的结果,共享物理磁盘块,而在其他文件系统上,它可能仍然会复制块,但通过优化的路径执行。目前,它在Linux和FreeBSD上受支持。

如果备份清单不可用或不包含正确类型的校验和,则将使用copy_file_range复制文件,但也会逐块读取文件以进行校验和计算。

--manifest-checksums=算法

pg_basebackup类似,pg_combinebackup在输出目录中写入备份清单。此选项指定应应用于备份清单中包含的每个文件的校验和算法。目前,可用的算法为NONECRC32CSHA224SHA256SHA384SHA512。默认为CRC32C

--no-manifest

禁用备份清单的生成。如果未指定此选项,则重建备份的备份清单将写入输出目录。

--sync-method=方法

当设置为fsync(默认值)时,pg_combinebackup将递归打开和同步备份目录中的所有文件。当使用普通格式时,对文件的搜索将遵循WAL目录和每个配置的表空间的符号链接。

在Linux上,可以使用syncfs代替,以要求操作系统同步包含备份目录的整个文件系统。当使用普通格式时,pg_combinebackup还将同步包含WAL文件和每个表空间的文件系统。有关使用syncfs时需要注意的注意事项,请参阅recovery_init_sync_method

当使用--no-sync时,此选项无效。

-V
--version

打印pg_combinebackup版本并退出。

-?
--help

显示有关pg_combinebackup命令行参数的帮助,并退出。

限制

pg_combinebackup在写入输出目录时不会重新计算页面校验和。因此,如果用于重建的任何备份都是禁用校验和的情况下创建的,但最终备份是在启用校验和的情况下创建的,则生成的目录可能包含具有无效校验和的页面。

为了避免此问题,建议在使用pg_checksums更改集群的校验和状态后,创建一个新的完整备份。否则,您可以禁用然后选择性地在pg_combinebackup生成的目录上重新启用校验和,以解决此问题。

环境

此实用程序与大多数其他PostgreSQL实用程序一样,使用libpq支持的环境变量(请参阅第 32.15 节)。

环境变量PG_COLOR指定是否在诊断消息中使用颜色。可能的值为alwaysautonever

另请参阅

pg_basebackup

提交更正

如果您在文档中看到任何不正确的内容,与您对特定功能的体验不符,或者需要进一步澄清,请使用此表单报告文档问题。