You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GCP CloudSQL PostgreSQL中pglogical订阅Down状态修复求助

解决GCP CloudSQL PostgreSQL pglogical订阅Down状态的问题

1. 手动清理发布端残留的复制槽

删除订阅时提示无法自动删除发布端的复制槽,这会导致新订阅无法正常工作,需先手动清理:

  • 登录发布端数据库,执行命令查看目标复制槽:
    SELECT * FROM pg_replication_slots WHERE slot_name = 'pgl_development_provider_consent_sub';
    
  • 确认槽存在后,执行删除命令:
    SELECT pg_drop_replication_slot('pgl_development_provider_consent_sub');
    

    注意:删除前确认该槽无其他订阅使用,且已不再需要。

2. 排查发布端逻辑复制启动失败原因

发布端日志显示logical replication launcher退出码1,需开启详细日志定位问题:

  • 在GCP CloudSQL控制台进入发布端实例的数据库标志设置,添加/修改以下参数:
    log_min_messages = debug1
    log_statement = all
    
  • 重启数据库实例后,查看最新日志,找到启动失败的具体错误(如权限不足、配置错误等)。
  • 核心检查项:
    • 确认发布端已安装pglogical扩展:
      SELECT * FROM pg_extension WHERE extname = 'pglogical';
      
    • 验证wal_level设置为logical:
      SHOW wal_level;
      
    • 检查max_replication_slots、max_wal_senders参数是否满足需求(可在CloudSQL控制台调整)。

3. 排查订阅端apply进程失败原因

订阅端日志显示pglogical apply进程退出码1,同样需开启详细日志:

  • 在订阅端实例的数据库标志中添加相同日志参数,重启后查看详细错误。
  • 核心检查项:
    • 确认订阅端已安装pglogical扩展。
    • 检查复制用户权限:发布端需授予REPLICATION权限,订阅端需授予目标表的INSERT/UPDATE/DELETE/CREATE权限。
    • 验证网络连通性:确保订阅端可通过授权网络或VPC对等访问发布端的5432端口。

4. 重新创建订阅并验证状态

清理残留槽并解决配置问题后,重新创建订阅:

  • 删除订阅端现有无效订阅(若存在):
    SELECT pglogical.drop_subscription('你的订阅名称');
    
  • 在订阅端创建新订阅,指定正确参数:
    SELECT pglogical.create_subscription(
      subscription_name := '你的订阅名称',
      provider_dsn := 'host=发布端IP port=5432 dbname=发布端库名 user=复制用户 password=复制用户密码',
      replication_sets := ARRAY['default'],
      synchronize_data := true
    );
    
  • 查看订阅状态:
    SELECT * FROM pglogical.subscription;
    
    等待状态从initialising切换为replicating,期间可通过日志确认同步进度。

5. 验证同步效果

  • 查看订阅详细状态:
    SELECT * FROM pglogical.show_subscription_status('你的订阅名称');
    
  • 在发布端插入测试数据,检查订阅端目标表是否同步成功,确认无延迟。

内容的提问来源于stack exchange,提问作者SRJ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 12:43:06