↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

支持中的版本: 当前版本 (18) / 17 / 16 / 15 / 14
开发中的版本: 19 / 20devel
已结束支持的版本: 13 / 12 / 11 / 10 / 9.6 / 9.5 / 9.4
开发快照。 PostgreSQL 20devel 尚未正式发布,内容仍可能变化。

47.6. 逻辑解码输出插件 #

PostgreSQL 提供了两个逻辑解码输出插件:pgoutput 和 test_decoding。也可以开发自定义输出插件(详见第 47.7 节)。

47.6.1. pgoutput — 标准逻辑解码输出插件 #

pgoutput 是 PostgreSQL 提供的标准逻辑解码输出插件。它用于内置的逻辑复制。

47.6.1.1. 选项 #

proto_version (integer) #

指定协议版本。目前支持版本 1、2、3 和 4。必须提供有效的版本。

版本 2 在服务器版本 14 及以上受支持;当 streaming 设置为 on 以流式传输大型进行中事务时,必须使用该版本。

版本 3 在服务器版本 15 及以上受支持;当启用 two_phase 以流式传输两阶段提交时,必须使用该版本。

版本 4 在服务器版本 16 及以上受支持;当 streaming 设置为 parallel 流式传输大型进行中事务以供并行应用时,必须使用该版本。

publication_names (string) #

要订阅的发布名称列表,以逗号分隔。各个发布名称按标准对象名处理,可按需加引号。至少需要一个发布名称。

binary (boolean) #

启用二进制传输模式。二进制模式比文本模式更快,但稳健性略差。默认值为 off。

messages (boolean) #

启用发送由 pg_logical_emit_message 写入的消息。默认值为 off。

streaming (enum) #

启用对进行中事务的流式传输。有效值为 off(默认)、on 和 parallel。

当设置为 off 时,pgoutput 会先完整解码一个事务,再将其整体发送。该模式适用于任何协议版本。

当设置为 on 时,pgoutput 会流式传输大型进行中事务。这要求协议版本为 2 或更高。

当设置为 parallel 时,pgoutput 会流式传输大型进行中事务,并在某些消息中额外发送信息,以支持并行处理。这要求协议版本为 4 或更高。

two_phase (boolean) #

启用发送两阶段事务。开启该选项至少需要协议版本 3。默认值为 off。

origin (enum) #

指定是否按来源发送更改。可选值包括 none,仅发送没有关联来源的更改;以及 any,不论其来源为何都发送更改。这可用于避免复制节点之间出现环路(同一数据的无限复制)。默认值为 any。

47.6.1.2. 注意 #

pgoutput 产生的是二进制输出,因此那些期望文本数据的函数(pg_logical_slot_peek_changes 和 pg_logical_slot_get_changes)不能与它一起使用。请改用 pg_logical_slot_peek_binary_changes 或 pg_logical_slot_get_binary_changes。

报告文档问题

阅读 上游文档. 反馈更正前请先核对 当前版本手册.