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

Debezium与AWS RDS Postgres数据同步异常排查请求:仅初始快照同步,后续变更未捕获

排查RDS Postgres 10.18 Debezium CDC无法捕获后续变更的问题

我完全理解你现在的困扰——快照同步得好好的,但数据库的新变更就是抓不到,Kafka Connect日志还一直刷“flushing 0 outstanding messages for offset commit”,这种卡壳的情况确实让人着急。结合你提供的操作步骤和背景信息,咱们来梳理几个重点排查方向:

1. 确认RDS逻辑复制参数是否真正生效

虽然你已经修改了参数组并重启RDS,但有时候可能存在参数组未正确关联、重启未完全生效的情况:

  • 登录RDS控制台,确认当前实例使用的是你修改过的参数组;
  • 用超级用户执行SQL查询关键参数,确保和配置一致:
    SHOW wal_level; -- 必须返回logical
    SHOW max_replication_slots; -- 应等于你设置的15
    SHOW max_wal_senders; -- 应等于你设置的10
    SHOW wal_keep_segments; -- Postgres 10用这个参数,建议值不低于64,避免WAL被过早回收
    

2. 检查Debezium创建的复制槽状态

Debezium依赖Postgres的复制槽来追踪WAL日志,槽异常是常见的问题根源:

  • 执行SQL查询复制槽信息:
    SELECT slot_name, active, restart_lsn, confirmed_flush_lsn FROM pg_replication_slots;
    
    你要找的是名为debezium_db.test的槽(对应你配置的database.server.name):
    • 如果槽不存在:说明Debezium未能成功创建槽,可能是权限问题(虽然你给了rds_replication和rds_superuser,但可以手动尝试创建测试槽验证:CREATE_REPLICATION_SLOT test_slot LOGICAL pgoutput;);
    • 如果槽存在但active为false:说明复制连接已断开,可能是Kafka Connect连接器异常,试试重启连接器:
      curl -X POST localhost:8083/connectors/db-test/restart
      
    • 如果槽存在但restart_lsn长时间未更新:说明槽没有在消费WAL日志,可能是WAL被回收(对应上面的wal_keep_segments参数),或者publication配置有问题。

3. 验证Publication的有效性

你手动创建了dbz_publication FOR ALL TABLES,需要确认它确实包含了你要同步的表,且复制用户有权限读取:

  • 查询publication包含的表:
    SELECT * FROM pg_publication_tables WHERE pubname = 'dbz_publication';
    
    确保所有需要同步的表都在列表中;
  • 虽然你已经给了ALL PRIVILEGES,但可以额外给复制用户明确的SELECT权限(Postgres 10中某些权限可能需要显性授予):
    GRANT SELECT ON ALL TABLES IN SCHEMA public TO db_replica;
    GRANT SELECT ON ALL SEQUENCES IN SCHEMA public TO db_replica;
    

4. 调整Debezium连接器配置

试试让Debezium自动管理publication,避免手动创建的潜在冲突:

  • 先删除你手动创建的publication:DROP PUBLICATION dbz_publication;;
  • 修改连接器配置,去掉手动创建的步骤,Debezium会自动创建符合其要求的publication(默认名称为dbz_publication);
  • 另外,Postgres 10的pgoutput插件可以尝试添加publication.autocreate.mode: all_tables参数,确保所有表都被纳入同步范围。

5. 检查RDS CloudWatch日志

Kafka Connect日志没报错,但RDS的系统日志可能藏着线索:

  • 登录AWS CloudWatch,找到对应RDS实例的日志组,搜索replication、wal_sender、slot相关的关键词,看看有没有权限错误、WAL回收异常等信息。

6. 对比测试环境与生产环境的差异

你提到测试用的10.18实例运行正常,那重点对比:

  • 参数组的所有参数(尤其是和WAL、复制相关的);
  • 安全组/网络配置(虽然快照能同步,但逻辑复制的连接是否有特殊限制?);
  • 数据库中表的结构差异(比如有没有包含不支持CDC的字段类型?不过快照能成功的话,这个概率较低)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 08:57:32