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

PostgreSQL 15跨机器逻辑复制失效,需排查额外配置项

PostgreSQL 15逻辑复制故障排查:未覆盖的配置与检查项

发布端(Machine 1)需确认项

  • 检查max_replication_slots:逻辑复制需要预留复制槽,执行SHOW max_replication_slots;确认值≥发布数量,不足则在postgresql.conf中调整后重启实例。
  • 验证max_wal_senders:该参数控制WAL发送进程数,需≥订阅数量+预留值,通过SHOW max_wal_senders;查看,修改后重启生效。
  • 权限验证:创建发布的用户需拥有REPLICATION权限或为超级用户;发布涉及的表需对该用户开放SELECT权限。
  • 调整wal_sender_timeout:若网络不稳定,适当调大该参数避免连接被过早断开,修改后重启。
  • 配置pg_hba.conf:添加允许订阅端(Machine 2)IP的访问规则,示例:
    host    replication     订阅用户名     Machine2_IP/32     scram-sha-256
    
    修改后执行pg_ctl reload加载配置。

订阅端(Machine 2)需确认项

  • 调整逻辑复制工作进程参数:在postgresql.conf中设置:
    max_logical_replication_workers = 4
    max_sync_workers_per_subscription = 2
    
    确保有足够进程处理复制任务,修改后重启实例。
  • 订阅用户权限:订阅端用户需在发布端拥有REPLICATION权限,且能访问发布的表;同时订阅端用户需具备表创建(初始化同步时)或修改权限。
  • 核对订阅连接参数:pgAdmin中创建订阅时的连接字符串需包含正确的发布端主机、端口、数据库名、用户名及密码,无拼写或配置错误。
  • 检查订阅状态:执行以下SQL查看订阅是否正常:
    SELECT subname, substate FROM pg_subscription;
    SELECT relname, srsubstate FROM pg_subscription_rel;
    
    确认状态为ready,无报错信息。

通用与网络检查

  • 网络连通性:验证两台机器可正常访问PostgreSQL默认端口(5432),可通过nc -zv Machine1_IP 5432测试。
  • 表结构要求:发布的表必须有主键,或通过ALTER TABLE 表名 REPLICA IDENTITY USING INDEX 唯一索引名;指定副本标识,否则无法进行行级逻辑复制。
  • 日志排查:查看发布端与订阅端的PostgreSQL日志(通常在pg_log目录),日志中会包含具体错误信息(如权限不足、表结构不匹配、连接失败等),是定位问题的核心依据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 06:50:13