无法使用 pg_dump 进行 WAL 备份?

Rom*_*man 5 postgresql

我希望从 pg_dump 转移到 WAL 备份。但是我对 4.3 文档中的这个注释感到困惑:

使用任何方便的文件系统备份工具(例如 tar 或 cpio)执行备份。

在 postgres 9.0 文档中:

使用任何方便的文件系统备份工具执行备份,例如 tar 或 cpio (不是 pg_dump 或 pg_dumpall)

所以我不允许运行 pg_dump?或者它不允许仅用于 9.x ?文件系统转储对我来说没用,因为我需要在 32 位上恢复 64 位机器转储。而且我需要能够恢复单独的数据库。

如果 pg_dump 被禁止,是我设置从属复制并在从属上运行 pg_dump 的唯一解决方案吗?

tsc*_*cho 5

您很困惑,因为您将数据库基础备份SQL 转储(使用pg_dumppg_dumpall)混为一谈,这实际上是两个完全不同的东西。仔细查看有关备份和还原的 PostgreSQL 文档。这些是 9.1 文档的链接,但这些东西的基本原理至少从 8.3 版开始没有改变(除了9.0 引入的流复制

  • 数据库基本备份基本上是在某一时间点数据目录(以及任何附加表目录)的文件系统级副本。可以使用您喜欢的任何工具(例如 tar 或 cpio)创建此文件系统级备份。但是为了能够从这个备份中恢复需要额外的信息:备份期间创建的WAL 段(二进制事务日志)加上确切的开始结束备份创建过程在 WAL 段中的位置。在恢复模式下,PostgreSQL 以备份数据目录启动,它将重放可用 WAL 存档中的所有事务(除非为时间点恢复配置了​​某个结束时间或事务 ID)。基本备份的范围是一个数据库集群
  • SQL转储是明文或架构和/或一种(数据信息的二进制格式表示pg_dump)或全部(pg_dumpall数据库的集群中的)。也可以只转储某些模式或表。与基本备份相比,SQL 转储仅涵盖数据库在单个时间点的准确快照。与基本备份的本质区别在于 SQL 转储独立于物理数据库布局。系统架构、操作系统、文件系统和大部分数据库版本都无关紧要,SQL 转储只是构成数据库的信息,因此可以轻松地在另一个系统上恢复。

因此,在您的情况下,使用pg_dumppg_dumpall用于备份和pg_restorepsql来恢复转储是要走的路。

希望有帮助。