瀚高HGHAC高可用集群配置逻辑复制槽方法

瀚高数据库
目录
文档用途
详细信息

文档用途
本文档用于指导使用hghactl集群命令配置逻辑复制槽; 若用数据库命令创建逻辑复制槽,在集群主备切换新主节点不会自动创建逻辑复制槽; 意外情况出现的逻辑复制断开,集群会识别该逻辑复制槽为unkown,删除逻辑复制槽。

详细信息
1.确认集群wal日志级别为logical
image.png

image.png

说明: 如果参数是logical,请跳过下方命令; 如果参数不是logical,请使用下方命令修改参数; 如果已经成功创建逻辑复制,证明该参数为logical,也请跳过下方命令。

[highgo@slave ~]$ hghactl edit-config -p "wal_level=logical"
---
+++
@@ -10,7 +10,7 @@
     max_replication_slots: 10
     max_wal_senders: 10
     wal_keep_size: 100
-    wal_level: replica
+    wal_level: logical
     wal_log_hints: 'on'
   use_pg_rewind: true
   use_slots: true

Apply these changes? [y/N]: y
Configuration changed
[highgo@slave ~]$ hghactl list
+ Cluster: highgo-see-cluster --+---------+-----------+----+-----------+-----------------+
| Member  | Host                | Role    | State     | TL | Lag in MB | Pending restart |
+---------+---------------------+---------+-----------+----+-----------+-----------------+
| see_216 | x.x.10.216:5866 | Replica | streaming | 18 |         0 | *               |
| see_60  | x.x.10.60:5866  | Leader  | running   | 18 |           | *               |
+---------+---------------------+---------+-----------+----+-----------+-----------------+
[highgo@slave ~]$ hghactl restart highgo-see-cluster
+ Cluster: highgo-see-cluster --+---------+-----------+----+-----------+-----------------+
| Member  | Host                | Role    | State     | TL | Lag in MB | Pending restart |
+---------+---------------------+---------+-----------+----+-----------+-----------------+
| see_216 | x.x.10.216:5866 | Replica | streaming | 18 |         0 | *               |
| see_60  | x.x.10.60:5866  | Leader  | running   | 18 |           | *               |
+---------+---------------------+---------+-----------+----+-----------+-----------------+
When should the restart take place (e.g. 2024-06-23T12:32)  [now]: now
Are you sure you want to restart members see_216, see_60? [y/N]: y
Restart if the PostgreSQL version is less than provided (e.g. 9.5.2)  []:
Success: restart on member see_216
Success: restart on member see_60
[highgo@slave ~]$ hghactl list
+ Cluster: highgo-see-cluster --+---------+---------+----+-----------+
| Member  | Host                | Role    | State   | TL | Lag in MB |
+---------+---------------------+---------+---------+----+-----------+
| see_216 | x.x.10.216:5866 | Replica | running | 18 |         0 |
| see_60  | x.x.10.60:5866  | Leader  | running | 18 |           |
+---------+---------------------+---------+---------+----+-----------+
[highgo@slave ~]$ psql
highgo=# show wal_level ;
 wal_level
-----------
 logical
(1 row)

2.确认hot_standby_feedback参数为on
hot_standby_feedback参数的作用是指定备库是否向主库发送有关当前在备库上执行的查询的反馈。此参数可用于消除由清理记录导致的查询取消,但对于某些工作负载,可能会导致主库膨胀。

--若测试为off需要执行命令修改
highgo=# show hot_standby_feedback ;
 hot_standby_feedback
----------------------
 off
(1 row)

--修改参数reload生效,所有节点都要执行。
highgo=# alter system set hot_standby_feedback =on;
ALTER SYSTEM
highgo=# select pg_reload_conf();
 pg_reload_conf
----------------
 t
(1 row)

highgo=# show hot_standby_feedback ;
 hot_standby_feedback
----------------------
 on
(1 row)
  1. 动态修改集群配置参数
--用命令修改集群配置参数
[highgo@slave ~]$ hghactl edit-config
slots:
  cdc_slot1:   #复制槽名称
    database: highgo  #数据库名称
    plugin: pgoutput  #逻辑解码插件
    type: logical  #插槽类型
  cdc_slot2:
    database: highgo
    plugin: pgoutput
    type: logical  
说明:
1、无需执行重启命令,修改即生效;
2、备节点自动重启,所有连接断开重连;
3、主节点不受影响,所有操作请在夜间执行 。
4、添加或删除复制槽都使用集群命令修改配置文件,不用的复制槽请及时删除。

--主备节点查看复制槽情况
highgo=# select * from pg_replication_slots;
  1. 逻辑复制使用逻辑复制槽
    方法一:创建订阅指定逻辑复制槽
highgo=# CREATE SUBSCRIPTION sub1 
    CONNECTION 'host=x.x.10.216 port=5866 dbname=highgo user=highgo password=Hello@123'
    PUBLICATION pub1
    WITH (copy_data = true, create_slot=false, enabled=true, slot_name='cdc_slot1');
CREATE SUBSCRIPTION 

方法二:修改订阅指定逻辑复制槽,不会影响已有逻辑复制

highgo=# ALTER SUBSCRIPTION sub2 SET (slot_name='cdc_slot2');
ALTER SUBSCRIPTION
注意:
01、创建订阅不指定复制槽参数,默认会自动创建逻辑复制槽。
02、订阅指定了新的逻辑复制槽,旧的逻辑复制槽集群会自动删除。
  1. 主备节点查看逻辑复制槽信息
    主库:

image.png

备库:

image.png

说明: 在备节点创建逻辑复制槽后,hghac集群使用pg_replication_slot_advance()向前更新槽。

6.集群切换逻辑复制槽不受影响,但是订阅端需要重新订阅
6.1切换后逻辑复制槽状态
新主库(逻辑复制槽active为f),已有订阅请参考6.3更改订阅信息,数据自动同步,若使用vip主备切换无需更改订阅信息: image.png

新备库(逻辑复制槽active为f):
image.png

6.2重新创建订阅之后,逻辑复制槽active变为tmage.pngimage.png

在这里插入图片描述

6.3更改订阅信息,逻辑复制槽active变为t
image.pngimage.png
在这里插入图片描述

7.断流测试
关掉逻辑复制订阅段数据库,逻辑复制槽依然存在

7.1关闭逻辑复制数据库,查看逻辑复制槽信息
image.pngimage.png
在这里插入图片描述

7.2启动逻辑复制数据库,查看逻辑复制槽信息
image.pngimage.png
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值