数据复制服务 DRS-将PostgreSQL同步到Kafka:使用须知

时间:2025-02-12 15:14:58

使用须知

DRS增量同步任务一般包含三个阶段:任务启动阶段、增量阶段、结束任务阶段。为了确保同步各个阶段的平顺,在创建同步任务前,请务必阅读以下使用须知。

表4 使用须知

类型名称

使用和操作约定

任务启动前须知

  • 源数据库要求

    源数据库参数wal_level必须配置为logical;

    源数据库需提前安装test_decoding插件;

    源数据库中无主键表的replica identity属性必须为full;

    源数据库的max_replication_slots参数值必须大于当前已使用的复制槽数量;

    源数据库的max_wal_senders参数值必须等于或大于max_replication_slots参数值。

    源数据库中表的主键列toast属性为main、external、extended时,其replica identity属性必须为full。

  • 目标数据库要求:
    • 目标库为社区Kafka。
    • Kafka的auto.create.topics.enable参数建议为false。
  • 其他使用须知
    • 若专属计算集群不支持4vCPU/8G或以上规格实例,则无法创建同步任务。
    • 源库必须为华为云RDS for PostgreSQ L实例
    • 库级同步时,增量同步中的任务,不支持“编辑”操作。
    • 表级同步时,增量同步中的任务,支持“编辑”操作,但是不支持更换数据库。
    • 在启动任务前,请确保源库中未启动长事务,源库启动长事务会阻塞逻辑复制槽的创建,进而引发任务失败。
    • 在任务启动后,仅支持以下版本的源库发生主备倒换:源库为RDS for PostgreSQL 12.6及以上的小版本、RDS for PostgreSQL 13及以上版本的所有小版本。
    • 由于长事务导致的创建逻辑复制槽失败或逻辑复制槽不存在的问题,需要通过重置任务来重新启动。

增量同步过程须知

  • 请勿修改源库和目标库的端口号,请勿修改、删除源库和目标库连接用户的密码、权限,否则可能导致任务失败。
  • 请勿删除源数据库表的主键,否则可能导致增量数据缺失或任务失败。
  • 请勿修改源数据库中表的replica identity属性,否则可能导致增量数据缺失或任务失败。
  • 请勿在Kafka上删除接收DRS数据的topic,否则可能导致任务失败。
  • 库级同步时,源库新增无主键表时,请务必同时将该无主键表的replica identity属性设置为full,然后再写入数据,否则可能导致增量数据缺失或任务失败。
  • 库级同步时,源库新增主键表时,如果主键列toast属性为main、external、extended时,请务必同时将该表的replica identity属性设置为full,然后再写入数据,否则可能导致数据不一致或任务失败。
  • 增量同步过程中暂停、任务异常续传,目标Kafka中可能会出现重复数据,请使用Kafka数据中的id字段进行去重。

结束任务须知

  • 正常结束任务:
    • 全量+增量实时同步任务正常结束时,将自动删除任务在源库创建的流复制槽。
  • 强制结束任务
    • 强制结束全量+增量实时同步任务,需要手动删除源库可能残留的复制槽,可参考PostgreSQL为源强制结束任务章节的指导进行操作。
    • 逻辑复制槽命名规则为“drs_唯一性标识”,其中唯一性标识需要将任务node id中的“-”替换为“_”获取。node id可在DRS任务同步日志页面查看task node id is ***日志找到。
support.huaweicloud.com/realtimesyn-drs/drs_11_0462.html