searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

PostgreSQL数据库逻辑复制槽故障转移的一种实现方式

2024-11-12 09:25:11
0
0

1.逻辑复制槽创建与使用

        首先设置postgresql.conf,max_wal_sender和max_replication_slots可以适当调整。

wal_level = logical  
max_wal_senders = 10 
max_replication_slots = 10

       在重启后执行SELECT pg_create_logical_replication_slot( 'slot_name', 'pgoutput');创建逻辑复制槽。

       主库执行CREATE PUBLICATION publication FOR TABLE table_name;创建PUBLICATION。

       备库执行CREATE SUBSCRIPTION sub CONNECTION 'host=172.168.18.50 port=5432 user=repl dbname=testdb' PUBLICATION publication --连接信息根据实际情况填写

       至此完成复制槽的创建和订阅

2.在failover发生时,迁移逻辑复制槽到备库

       可以观察到,当数据库运行在只读模式下时(这是备库的运行模式),复制槽并不会丢失

那么,1.设置hot_standby_feedback=on防止主库自动清理提前删除备库仍在使用的行版本2.调用pg_read_binary_file() 将备库中缺少的slot复制过去,保证在切换后同名的逻辑复制槽仍然存在3.定期调用pg_replication_slot_advance()来更新备库复制槽的LSN位点。

Patroni2.1.0已经自动化了这个过程,用户也可以编写脚本来实现上述步骤。

0条评论
0 / 1000
李****恒
2文章数
0粉丝数
李****恒
2 文章 | 0 粉丝
李****恒
2文章数
0粉丝数
李****恒
2 文章 | 0 粉丝
原创

PostgreSQL数据库逻辑复制槽故障转移的一种实现方式

2024-11-12 09:25:11
0
0

1.逻辑复制槽创建与使用

        首先设置postgresql.conf,max_wal_sender和max_replication_slots可以适当调整。

wal_level = logical  
max_wal_senders = 10 
max_replication_slots = 10

       在重启后执行SELECT pg_create_logical_replication_slot( 'slot_name', 'pgoutput');创建逻辑复制槽。

       主库执行CREATE PUBLICATION publication FOR TABLE table_name;创建PUBLICATION。

       备库执行CREATE SUBSCRIPTION sub CONNECTION 'host=172.168.18.50 port=5432 user=repl dbname=testdb' PUBLICATION publication --连接信息根据实际情况填写

       至此完成复制槽的创建和订阅

2.在failover发生时,迁移逻辑复制槽到备库

       可以观察到,当数据库运行在只读模式下时(这是备库的运行模式),复制槽并不会丢失

那么,1.设置hot_standby_feedback=on防止主库自动清理提前删除备库仍在使用的行版本2.调用pg_read_binary_file() 将备库中缺少的slot复制过去,保证在切换后同名的逻辑复制槽仍然存在3.定期调用pg_replication_slot_advance()来更新备库复制槽的LSN位点。

Patroni2.1.0已经自动化了这个过程,用户也可以编写脚本来实现上述步骤。

文章来自个人专栏
数据库相关技术-PG数据库
2 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0