首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PostgreSQL 逻辑订阅挂主库还是只读实例,主备切换后如何不断流?

问PostgreSQL 逻辑订阅挂主库还是只读实例,主备切换后如何不断流?

提问于 2026-11-11 19:08:30
回答 3关注 0查看 53

场景:广州地域云数据库 PostgreSQL 14,双可用区主备,另有一台只读实例。主实例 wal_level=logical。下游同 VPC 用逻辑订阅同步 public.orders,发布 orders_pub,订阅连主实例内网,端口 5432,copy_data=off。没手工建槽,槽名与订阅同名,tencentdb_force_enable_failover_slot 保持默认。

现象:

  1. 主备切换后,新主上同名槽还在,active 能回到 true。另一次在备库接收 WAL 慢于逻辑订阅时切换,两端都报错,复制停住。failover_slot_timeline_diverged_option 仍是默认 error。
  2. 试过把订阅改连只读实例。连接串加了 options=-c tencentdb_force_enable_failover_slot=off,只读侧能看到本地槽。只读一延迟,confirmed_flush_lsn 就不走,只读侧 WAL 比主库涨得快。

已尝试:

  1. 主库查过 pg_replication_slots 和 pg_failover_slots,槽名在 failover 视图里。
  2. 只读实例对过 restart_lsn 和 confirmed_flush_lsn,延迟期间位点不走。
  3. 报错后没删槽,也没把参数改成 rewind,怕位点对不齐,下游重复入账。

问题:

  1. CDC 该留在主实例,还是下沉到只读实例?只读实例重建或释放后,本地槽还在不在?主备切换时挂在只读实例上的订阅会不会断?断了怎样重新对齐 LSN,才能不丢变更,也不整表重灌?
  2. 参数保持 error 时,两端报错、复制暂停后怎么恢复?改成 rewind 会不会从切换点重放,下游做不到幂等时重复入账?
  3. 订阅挂在只读实例且消费变慢,WAL 堆在只读侧,会不会拖住主库回收 WAL?磁盘打满前,能不能只丢掉落后订阅,保住主库写入?

回答

和开发者交流更多问题细节吧,去 写回答
相关文章

相似问题

相关问答用户
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档