Postgres 存档版本
Postgres archive versions
尝试在本地导入夜间生产备份,我 运行 进入此:
pg_restore: [archiver] unsupported version (1.14) in file header
现在,至于在这种情况下该怎么办,the question has been asked before or 。
不过我还有一些推论问题:
- 如何从命令行检查 Postgres 转储使用哪个版本的存档格式?
- 我如何知道哪些 Postgres 版本支持哪些版本的存档格式?
我发现 Postgres 版本和 Postgres 归档格式之间没有明显的 link,同时在 Google 或 Postgresql.org 中搜索“1.14”没有帮助。
就我而言:
- 虽然我仍然可以导入由 Heroku Postgres 本身生成的转储,但夜间导出(由 Autobus 附加组件生成)生成我无法在本地导入的存档版本。
- 从 Postgres 9.6.14 升级到 9.6.16 没有帮助。 (我认为 Autobus 使用的是 9.6 以上的 Postgres 版本。)
我想知道他们何时通过查找最后 X 个转储的信息来更改存档格式......以及从那里我的 options/requirements 用于导入他们的转储。
pg_restore -l filename
将告诉您 PostgreSQL 转储的存档版本。
要了解哪个 PostgreSQL 版本使用哪种存档格式,您必须查看来源:pg_backup_archiver.h
,例如:
/* Historical version numbers (checked in code) */
#define K_VERS_1_0 MAKE_ARCHIVE_VERSION(1, 0, 0)
#define K_VERS_1_2 MAKE_ARCHIVE_VERSION(1, 2, 0) /* Allow No ZLIB */
#define K_VERS_1_3 MAKE_ARCHIVE_VERSION(1, 3, 0) /* BLOBs */
#define K_VERS_1_4 MAKE_ARCHIVE_VERSION(1, 4, 0) /* Date & name in header */
#define K_VERS_1_5 MAKE_ARCHIVE_VERSION(1, 5, 0) /* Handle dependencies */
#define K_VERS_1_6 MAKE_ARCHIVE_VERSION(1, 6, 0) /* Schema field in TOCs */
#define K_VERS_1_7 MAKE_ARCHIVE_VERSION(1, 7, 0) /* File Offset size in
* header */
#define K_VERS_1_8 MAKE_ARCHIVE_VERSION(1, 8, 0) /* change interpretation
* of ID numbers and
* dependencies */
#define K_VERS_1_9 MAKE_ARCHIVE_VERSION(1, 9, 0) /* add default_with_oids
* tracking */
#define K_VERS_1_10 MAKE_ARCHIVE_VERSION(1, 10, 0) /* add tablespace */
#define K_VERS_1_11 MAKE_ARCHIVE_VERSION(1, 11, 0) /* add toc section
* indicator */
#define K_VERS_1_12 MAKE_ARCHIVE_VERSION(1, 12, 0) /* add separate BLOB
* entries */
#define K_VERS_1_13 MAKE_ARCHIVE_VERSION(1, 13, 0) /* change search_path
* behavior */
#define K_VERS_1_14 MAKE_ARCHIVE_VERSION(1, 14, 0) /* add tableam */
我建议您使用最新版本的 pg_restore
:较新的版本可以读取较旧的存档格式。
请注意,将使用旧版本 pg_dump
进行的转储恢复到较新版本的数据库中不受很好的支持,并且会产生令人惊讶的结果。
尝试在本地导入夜间生产备份,我 运行 进入此:
pg_restore: [archiver] unsupported version (1.14) in file header
现在,至于在这种情况下该怎么办,the question has been asked before or
不过我还有一些推论问题:
- 如何从命令行检查 Postgres 转储使用哪个版本的存档格式?
- 我如何知道哪些 Postgres 版本支持哪些版本的存档格式?
我发现 Postgres 版本和 Postgres 归档格式之间没有明显的 link,同时在 Google 或 Postgresql.org 中搜索“1.14”没有帮助。
就我而言:
- 虽然我仍然可以导入由 Heroku Postgres 本身生成的转储,但夜间导出(由 Autobus 附加组件生成)生成我无法在本地导入的存档版本。
- 从 Postgres 9.6.14 升级到 9.6.16 没有帮助。 (我认为 Autobus 使用的是 9.6 以上的 Postgres 版本。)
我想知道他们何时通过查找最后 X 个转储的信息来更改存档格式......以及从那里我的 options/requirements 用于导入他们的转储。
pg_restore -l filename
将告诉您 PostgreSQL 转储的存档版本。
要了解哪个 PostgreSQL 版本使用哪种存档格式,您必须查看来源:pg_backup_archiver.h
,例如:
/* Historical version numbers (checked in code) */
#define K_VERS_1_0 MAKE_ARCHIVE_VERSION(1, 0, 0)
#define K_VERS_1_2 MAKE_ARCHIVE_VERSION(1, 2, 0) /* Allow No ZLIB */
#define K_VERS_1_3 MAKE_ARCHIVE_VERSION(1, 3, 0) /* BLOBs */
#define K_VERS_1_4 MAKE_ARCHIVE_VERSION(1, 4, 0) /* Date & name in header */
#define K_VERS_1_5 MAKE_ARCHIVE_VERSION(1, 5, 0) /* Handle dependencies */
#define K_VERS_1_6 MAKE_ARCHIVE_VERSION(1, 6, 0) /* Schema field in TOCs */
#define K_VERS_1_7 MAKE_ARCHIVE_VERSION(1, 7, 0) /* File Offset size in
* header */
#define K_VERS_1_8 MAKE_ARCHIVE_VERSION(1, 8, 0) /* change interpretation
* of ID numbers and
* dependencies */
#define K_VERS_1_9 MAKE_ARCHIVE_VERSION(1, 9, 0) /* add default_with_oids
* tracking */
#define K_VERS_1_10 MAKE_ARCHIVE_VERSION(1, 10, 0) /* add tablespace */
#define K_VERS_1_11 MAKE_ARCHIVE_VERSION(1, 11, 0) /* add toc section
* indicator */
#define K_VERS_1_12 MAKE_ARCHIVE_VERSION(1, 12, 0) /* add separate BLOB
* entries */
#define K_VERS_1_13 MAKE_ARCHIVE_VERSION(1, 13, 0) /* change search_path
* behavior */
#define K_VERS_1_14 MAKE_ARCHIVE_VERSION(1, 14, 0) /* add tableam */
我建议您使用最新版本的 pg_restore
:较新的版本可以读取较旧的存档格式。
请注意,将使用旧版本 pg_dump
进行的转储恢复到较新版本的数据库中不受很好的支持,并且会产生令人惊讶的结果。