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。