PostgreSQL 提供了两个逻辑解码输出插件: pgoutput 和 test_decoding。也可以开发自定义输出插件(详见 Section 47.7)。
pgoutput 是 PostgreSQL 提供的标准逻辑解码输出插件。 它用于内置的 逻辑复制。
proto_version (integer) #指定协议版本。目前支持版本 1、 2、3 和 4。必须提供有效的版本。
版本 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(默 认)、on 和 parallel。
当设置为 off 时, pgoutput 会先完整解码一个事务,再将其整体发 送。该模式适用于任何协议版本。
当设置为 on 时, pgoutput 会流式传送大型进行中事务。这要求协议 版本为 2 或更高。
当设置为 parallel 时, pgoutput 会流式传送大型进行中事务,并在某些消 息中额外发送信息,以支持并行处理。这要求协议版本为 4 或更高。
two_phase (boolean) #启用发送两阶段事务。开启该选项至少需要协议版本 3。默认值为 off。
origin (enum) #指定是否按来源发送更改。可选值包括 none,仅发送 没有关联来源的更改;以及 any,不论其来源为何都 发送更改。这可用于避免复制节点之间出现环路(同一数据的无限复制)。 默认值为 any。
pgoutput 产生的是二进制输出,因此那些期望文本数 据的函数( pg_logical_slot_peek_changes 和 pg_logical_slot_get_changes) 不能与它一起使用。请改用 pg_logical_slot_peek_binary_changes 或 pg_logical_slot_get_binary_changes。