PostgreSQL 18 preview - pg_recvlogical 支持创建 failover slot
PostgreSQL 18 preview - pg_recvlogical 支持创建 failover slot
failover slot是16引入的概念, 解决了用户在使用了逻辑订阅时, 如果上游结点发生了基于流复制的主从切换后, slot需要重建, 并且丢失逻辑数据的风险.
pg_recvlogical 是一个用于从 PostgreSQL 服务器接收逻辑解码产生的变更流的客户端工具。通常用于测试、调试逻辑复制或构建自定义的复制解决方案。
使用 pg_recvlogical 创建一个新的逻辑复制槽 (logical replication slot) 时,如果同时指定了 --failover 选项,那么创建出来的这个槽就会被标记为启用了故障转移 (failover) 功能。
https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=cf2655a9029aff63dd567dbbdcdee15ec969905d
pg_recvlogical: Add --failover option.
author Masahiko Sawada <[email protected]>
Fri, 4 Apr 2025 17:39:57 +0000 (10:39 -0700)
committer Masahiko Sawada <[email protected]>
Fri, 4 Apr 2025 17:39:57 +0000 (10:39 -0700)
commit cf2655a9029aff63dd567dbbdcdee15ec969905d
tree f44b8d2018d11e917f59a04f6d122455de9ada95 tree
parent 3556c89321e8baa2242288bd4f015efd1e9d6be0 commit | diff
pg_recvlogical: Add --failover option. This new option instructs pg_recvlogical to create the logical
replication slot with the failover option enabled. It can be used in
conjunction with the --create-slot option.
Author: Hayato Kuroda <[email protected]>
Reviewed-by: Michael Banck <[email protected]>
Reviewed-by: Masahiko Sawada <[email protected]>
Discussion: https://postgr.es/m/OSCPR01MB14966C54097FC83AF19F3516BF5AC2@OSCPR01MB14966.jpnprd01.prod.outlook.com
<option>--failover</option>
Enables the slot to be synchronized to the standbys. This option may only be specified with <option>--create-slot</option>
AI 解读
补丁名称:pg_recvlogical: Add --failover option. (为 pg_recvlogical 添加 --failover 选项)
核心内容:
这个补丁为 PostgreSQL 的命令行工具 pg_recvlogical 增加了一个新的选项:--failover。
pg_recvlogical是什么?它是一个用于从 PostgreSQL 服务器接收逻辑解码产生的变更流的客户端工具。通常用于测试、调试逻辑复制或构建自定义的复制解决方案。 --failover选项的作用是什么?当你在使用 pg_recvlogical创建一个新的逻辑复制槽 (logical replication slot) 时,如果同时指定了--failover选项,那么创建出来的这个槽就会被标记为启用了故障转移 (failover) 功能。如何使用?
这个 --failover选项必须与--create-slot选项一起使用。因为--failover是在 创建 槽的时候指定的一个属性。示例命令(概念性): pg_recvlogical --create-slot --slot my_slot_name --plugin test_decoding --dbname=mydb --failover“启用故障转移 (failover option enabled)”意味着什么?
这是 PostgreSQL 16 引入的一个特性。对于标记为支持 failover的逻辑复制槽,如果当前消费该槽的连接意外断开,服务器允许另一个连接(通常是在备库或其他高可用节点上)接管这个槽并继续消费数据流,而不会丢失数据。这对于构建高可用的逻辑复制下游至关重要。
总结:
这个补丁非常直接:它让用户能够通过 pg_recvlogical 这个标准工具,在创建逻辑复制槽时就指定其需要支持故障转移。这简化了在高可用性 (HA) 环境下配置逻辑复制槽的过程。以前可能需要通过 SQL 命令 CREATE_REPLICATION_SLOT ... (FAILOVER) 来创建这样的槽,现在可以直接用 pg_recvlogical 的命令行选项完成。