pg_combinebackup — 从一份增量备份及其依赖的备份重建一份完整备份
pg_combinebackup [option...] [backup_directory...]
pg_combinebackup 用于从一份 incremental backup 及其所依赖的更早的备份重建一份合成的完整备份。
在命令行上按从最旧到最新的顺序指定所有需要的备份。也就是说,第一个备份目录应该是完整备份的路径,最后一个应该是你希望恢复的最终增量备份的路径。重建的备份将被写到由 -o 选项指定的输出目录中。
pg_combinebackup 会尝试验证你指定的备份构成了一个合法的备份链,从中可以重建出正确的完整备份。不过,它的设计目的并不是帮你记录哪些备份依赖于哪些其他备份。如果你删除了你的增量备份所依赖的一个或多个先前的备份,你将无法恢复它。此外,pg_combinebackup 只会尝试验证这些备份彼此之间的关系是否正确,而不会验证每个备份本身是否完好无损;要做到这一点,请使用 pg_verifybackup。
由于 pg_combinebackup 的输出是一份合成的完整备份,因此它可以用作将来调用 pg_combinebackup 时的输入。在命令行上指定这份合成的完整备份,以替代重建出它的那条备份链。
-d--debug
在 stderr 上打印大量调试日志输出。
-k--link使用硬链接,而不是把文件复制到合成备份中。合成备份的重建可能会更快(无需复制文件)并且占用更少的磁盘空间,但在使用输出目录时必须小心,因为对该目录的任何修改(例如启动服务器)也会影响输入目录。同样,对输入目录的修改(例如在完整备份上启动服务器)也可能影响输出目录。因此,此选项最适合在输入目录只是副本、并且将在 pg_combinebackup 完成后被删除的情况下使用。
要求输入备份和输出目录位于同一个文件系统中。
如果备份清单不可用或者不包含正确类型的校验和,仍会创建硬链接,但还会逐块读取文件以计算校验和。
-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使用高效的文件克隆(在某些系统上也称为 “反射链接”),而不是把文件复制到新的数据目录,这可以近乎瞬时地复制数据文件。
如果备份清单不可用或者不包含正确类型的校验和,将使用文件克隆来复制文件,但还会逐块读取文件以计算校验和。
文件克隆只在某些操作系统和文件系统上受支持。如果选择了它但不被支持,pg_combinebackup 的运行将会报错。目前,在带有 Btrfs 和 XFS 的 Linux(内核 4.5 或更高版本)上、在以 reflink 支持创建的文件系统上,以及在带有 APFS 的 macOS 上,它都受支持。
--copy 执行普通文件复制。这是默认值。(另请参见 --copy-file-range、--clone 以及 -k/--link。)
--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 文件和每个表空间的文件系统。请参见 recovery_init_sync_method,以了解使用 syncfs 时需要注意的事项。
当使用 --no-sync 时,此选项没有效果。
-V--version打印 pg_combinebackup 的版本并退出。
-?--help显示关于 pg_combinebackup 命令行参数的帮助,然后退出。
pg_combinebackup 在写入输出目录时不会重新计算页校验和。因此,如果用于重建的备份中有一些是在禁用校验和的情况下获取的,而最终备份是在启用校验和的情况下获取的,则得到的目录中可能包含校验和无效的页。
为避免这个问题,建议在使用 pg_checksums 更改集群的校验和状态之后获取一份新的完整备份。否则,你可以在 pg_combinebackup 产生的目录上禁用校验和,然后根据需要重新启用,以纠正这个问题。
与大多数其他 PostgreSQL 工具一样,此工具使用 libpq 支持的环境变量(参见 Section 32.15)。
环境变量 PG_COLOR 指定是否在诊断消息中使用颜色。可能的值是 always、auto 和 never。