↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

支持中的版本: 当前版本 (18) / 17
开发中的版本: 19 / 20devel

pg_combinebackup

pg_combinebackup — 从增量备份及其所依赖的备份重建完整备份

大纲

pg_combinebackup [option...] [backup_directory...]

描述

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 中的表空间重定位到 newdir。olddir 是命令行指定的最终备份中该表空间的绝对路径,newdir 是重建备份中要使用的绝对路径。若路径中需要包含等号(=),请在其前加反斜杠。可多次指定此选项以映射多个表空间。

--clone #

使用高效的文件克隆(某些系统将其称为“reflink”),代替向新数据目录复制文件,这样可能实现几乎瞬时的数据文件复制。

如果备份清单不可用,或者其中不包含正确类型的校验和,仍会使用文件克隆来复制文件,但也会按块读取该文件以计算校验和。

文件克隆仅在某些操作系统和文件系统上受支持。如果选择了该选项,但系统并不支持,pg_combinebackup 运行时将报错。目前,它在 Linux(内核 4.5 及以上)上的 Btrfs 和 XFS(在创建时启用了 reflink 支持的文件系统)以及 macOS 上的 APFS 上受支持。

--copy #

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

--copy-file-range #

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

如果备份清单不可用,或者其中不包含正确类型的校验和,仍会使用 copy_file_range 复制文件,但也会按块读取该文件以计算校验和。

--manifest-checksums=algorithm #

与 pg_basebackup 一样,pg_combinebackup 会在输出目录中写入备份清单。此选项指定对清单中每个文件使用的校验和算法。当前可用算法为 NONE、CRC32C、SHA224、SHA256、SHA384 和 SHA512。默认值为 CRC32C。

--no-manifest #

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

--sync-method=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 指定是否在诊断消息中使用颜色。可能的值为 always、auto 和 never。

报告文档问题

阅读 上游文档. 通过 PostgreSQL 文档反馈表单.