受支持版本: 当前版本 (18) / 17 / 16 / 15 / 14
开发版本: 19 / devel
此文档适用于不受支持的 PostgreSQL 版本。
您可能需要查看当前版本的相同页面,或上面列出的其他受支持版本。

47.6. 逻辑解码输出插件 #

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

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

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

47.6.1.1. 选项 #

proto_version (integer) #

指定协议版本。目前支持版本 1234。必须提供有效的版本。

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

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

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

publication_names (string) #

一个以逗号分隔的 publication 名称列表,用于订阅。各个 publication 名称按标准对象名处理,并可在需要时按同样方式加引号。 至少需要一个 publication 名称。

binary (boolean) #

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

messages (boolean) #

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

streaming (enum) #

启用对进行中事务的流式传送。有效值为 off(默 认)、onparallel

当设置为 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_changespg_logical_slot_get_changes) 不能与它一起使用。请改用 pg_logical_slot_peek_binary_changespg_logical_slot_get_binary_changes