文档位于:
https://www.postgresql.org/docs/11/warm-standby.html#STREAMING-REPLICATION
开头是这样说的:
“与基于文件的日志传送相比,流式复制允许备用服务器保持更新。备用服务器连接到主服务器,主服务器在生成 WAL 记录时将其流式传输到备用服务器,而无需等待 WAL要填写的文件。”
这听起来很像流复制是 WAL 日志文件传输的替代品。但稍后 26.2.5 的说明说:
“要使用流复制,请按照第 26.2 节所述设置基于文件的日志传送备用服务器。将基于文件的日志传送备用服务器转换为流复制备用服务器的步骤是将 recovery.conf 文件中的 primary_conninfo 设置设置为指向主服务器。”
这听起来像是一个流复制辅助也必须是一个日志文件传输辅助,这似乎是多余的。我可以理解,到目前为止,辅助节点可能会在复制中落后,以至于主节点可能会在复制之前从其 xlog 目录中删除 WAL 段,这是 WAL 存档的一个参数。但是文档说,一个“复制槽”,显然是次级处理的最后一个 WAL 文件的指示器,将实现相同的目标,我想通过告诉主控器保留该段和后续段。在 26.2.5:
“如果您在没有基于文件的连续归档的情况下使用流复制,服务器可能会在备用数据库接收到它们之前回收旧的 WAL 段。如果发生这种情况,备用数据库将需要从新的基本备份重新初始化。您可以通过设置来避免这种情况wal_keep_segments 设置为一个足够大的值,以确保 WAL 段不会过早回收,或者通过为备用数据库配置一个复制槽。”
我正在进行实验,但如有任何解释,我们将不胜感激。
通过基本备份设置备用是相似的,并且在两个地方都没有详细描述。一个地方将您引向另一个地方。这就是全部的意思。您可以在没有 WAL 存档的情况下进行流式传输。