功能背景
功能介绍
Failover Slot 功能可以将 Slot 信息从主库同步到备库,如此可以在 HA 切换之后避免逻辑订阅断开,用户可以无感知地继续使用逻辑订阅。我们提供了一个插件 tencent_failover_slot,用户使用该插件可以完成 Failover Slot 的创建、转换为普通 Slot、查看 Failover Slot 信息、删除 Failover Slot 等操作。同时,我们新增了 GUC 参数方便客户针对异常的情况的设置。下面详细介绍。
一、创建 Failover Slot
为便于操作,在用户创建 slot 时,系统将默认创建 failover slot 。你可登录数据库,直接执行以下命令创建 failover slot。
— 创建插件create extension tencentdb_failover_slot;– 创建 failover slotSELECT pg_create_logical_replication_slot('slotname', 'pluginname');
若你希望默认创建普通 slot ,请进入 控制台,单击实例 ID 后,进入参数设置页面,通过搜索框找到 tencentdb_force_enable_failover_slot 参数,修改其值为 off,保存修改。
参数值修改为 off 后,需要依次执行以下命令创建 failover slot。若你此时使用创建 slot 语句,则会创建普通 slot。
— 创建插件create extension tencentdb_failover_slot;– 创建 failover slotselect pg_create_logical_failover_slot('slotname','pluginname');
二、将 Failover Slot 转换为普通 Slot
select transform_slot_to_nonfailover('slotname');
注意:说明:
三、查看 Failover Slot 信息
postgres=# select * from pg_failover_slots; slot_name —————– fs fsg (2 rows)
注意:说明:
注意:pg_failover_slots 视图包含一列,展示了当前所有的 Failover Slot 的名字,更多 Failover Slot 信息请查看 pg_replication_slots 视图。
四、删除 Failover Slot
select * from pg_drop_replication_slot('slotname');
注意:说明:
注意:slotname:slot 名称。
五、参数设置
新增参数 failover_slot_timeline_diverged_option,类型为 enum,方便用户针对异常情况的处理设置,设置路径为 云数据库 PostgreSQL 控制台 > 实例详情 > 参数设置。该参数默认值为 error,可选值 error、rewind。当极端情况下会发生备机日志接收速度比逻辑复制慢并发生 HA 的情况,此时如果设置 error,代表逻辑复制将暂停,发布端和订阅端都能收到报错,等待用户来处理。如果设置为 rewind,那么逻辑复制将从切换时间点开始。
注意事项
当前只支持逻辑复制槽(logical replication slot)故障转移,不支持物理复制槽(physical slot)故障转移。