瑞士苏黎世 - 2022 年 3 月 14 日
pg_dumpbinary
pg_dumpbinary 是一个用于以二进制格式转储 PostgreSQL 数据库数据的程序。转储结果必须使用该工具附带的 pg_restorebinary 进行恢复。
pg_dumpbinary 2.7 已于今日发布,此版本为 pg_restorebinary 新增了两个选项:
-E, --exclude-ext EXTNAME 指定不恢复的扩展名称,可多次使用。
--schema-exists 在 CREATE SCHEMA 语句中添加 IF NOT EXISTS 子句。
这些选项可用于修复扩展依赖关系,例如当创建顺序发生变化时。扩展可以手动创建并从恢复中排除,扩展的配置表数据仍会被恢复,只是移除了扩展的创建语句。如果在恢复前 schema 已经存在,--schema-exists 选项将通过添加 IF NOT EXISTS 子句来避免命令在创建 schema 时失败。
pg_dumpbinary 2.6 于上周发布,为 pg_dumpbinary 新增了命令行选项 --load-via-partition-root,用于仅通过分区表转储/恢复数据,而非默认的按分区逐个操作的方式。它使 COPY 语句的目标指向分区层次结构的根表而非分区表,这在将数据重新加载到某些行不再落入与原始服务器相同分区的服务器上时非常有用。此选项等同于 pg_dump 的同名选项。
pg_dumpbinary 在以下场景中非常有用:
当 bytea 数据因 escape/hex 输出的总大小超过 1GB 而无法被 pg_dump 导出时。
当自定义类型在内部以 bytea 方式存储 \0,但数据以 char/varchar/text 类型返回,导致在 '\0' 之后的数据被截断时。在这种情况下,pg_dump 会以输出类型导出数据,从而导致数据丢失。
其他需要使用二进制格式的场景。
如果您遇到上述情况,pg_dumpbinary 将通过以二进制格式转储 PostgreSQL 数据库来帮助您。在其他所有情况下,您应使用 PostgreSQL 自带的 pg_dump/pg_restore 命令。
详细功能描述请参阅文档。
链接与致谢
pg_dumpbinary 是 LzLabs GmbH (https://www.lzlabs.com/) 的开源项目。欢迎任何有助于改进此工具的贡献。您可以通过 GitHub 工具提交想法、功能请求或补丁。
链接:
文档:https://github.com/lzlabs/pg_dumpbinary/blob/master/README.md (https://github.com/lzlabs/pg_dumpbinary/blob/master/README.md)
下载:https://github.com/lzlabs/pg_dumpbinary/releases/ (https://github.com/lzlabs/pg_dumpbinary/releases/)
支持:请使用 GitHub 报告工具 https://github.com/lzlabs/pg_dumpbinary/pg_dumpbinary/issues (https://github.com/lzlabs/pg_dumpbinary/pg_dumpbinary/issues)