使用须知
DRS全量+增量同步过程一般包含四个阶段:任务启动阶段、全量阶段、增量阶段、结束任务阶段(单全量任务则包含三个阶段)。为了确保同步各个阶段的平顺,在创建同步任务前,请务必阅读以下使用须知。
表4 使用须知
类型名称 |
使用和操作约定 |
任务启动前须知 |
- 源数据库参数要求:
- 源数据库的分区表触发器不可以设置为disable。
- 全量同步支持源库备机状态,但需要设置hot_standby_feedback为on;增量同步不支持源库备机状态。
- 若要做增量同步:
源数据库的“pg_hba.conf” 文件中包含如下的配置:
host replication all 0.0.0.0/0 md5
源数据库参数wal_level必须配置为logical。 源数据库需提前安装test_decoding插件。 源数据库中无主键表的replica identity属性必须为full。 源数据库的max_replication_slots参数值必须大于当前已使用的复制槽数量。 源数据库的max_wal_senders参数值必须等于或大于max_replication_slots参数值。 源数据库中表的主键列toast属性为main、external、extended时,其replica identity属性必须为full。
- 源数据库对象要求:
- 同步对象依赖和关联的对象也须一起同步,否则可能导致同步失败。
说明:
常见的关联关系:主外键关联表、表继承子表引用父表、表分区子分区表引用分区表、表自增列引用序列等。
- 目标数据库参数要求:
- 目标数据库的block_size参数值必须大于源库中的对应参数值。
- 目标数据库对象要求:
- 其他使用须知:
- 若专属计算集群不支持4vCPU/8G或以上规格实例,则无法创建同步任务。
- 分区表只同步主表,转为普通表同步到目标库,分区表的数据将集中写入主表。
- 表名映射时,同步后表上的原索引名称变化为如下格式,其中哈希值由“原模式名_原表名_映射后模式名_映射后表名_原索引名”计算得到:i_+哈希值+原索引名(可能被截断)+_key。
- 表名映射时,同步后表上的原约束名称变化为如下格式,其中哈希值由“原模式名_原表名_映射后模式名_映射后表名_原约束名”计算得到:c_+哈希值+原约束名(可能被截断)+_key。
- 对于全量+增量和增量任务,启动任务前,请确保源库中未启动长事务,源库启动长事务会阻塞逻辑复制槽的创建,进而引发任务失败。
- 对于全量+增量和增量任务,任务启动后,仅支持以下版本的源库发生主备倒换:源库为RDS for PostgreSQL 12.6及以上的小版本、RDS for PostgreSQL 13及以上版本的所有小版本。
- DRS全量同步表结构时,源库中的character、character varying类型长度在目标库会按照字节长自动扩大(因为目标库为字节长),默认扩大4倍,最大长度为10485760。
|
全量同步过程须知 |
- 请勿修改源库和目标库的端口号,请勿修改、删除源库和目标库连接用户的密码、权限,否则可能导致任务失败。
- 请勿在源库执行任何DDL,否则可能导致数据不一致或任务失败。
- 请勿在目标库做写入操作,否则可能导致数据不一致。
|
增量同步过程须知 |
- 请勿修改源库和目标库的端口号,请勿修改、删除源库和目标库连接用户的密码、权限,否则可能导致任务失败。
- 请勿修改源数据库表的主键或者唯一键(主键不存在时),否则可能导致增量数据不一致或任务失败。
- 请勿修改源数据库中表的replica identity属性,否则可能导致增量数据不一致或任务失败。
- 请勿在目标库做写入操作,否则可能导致数据不一致。
- 库级同步时,源库新增无主键表时,请务必同时将该无主键表的replica identity属性设置为full,然后再写入数据,否则可能导致数据不一致或任务失败。
- 库级同步时,源库新增主键表时,如果主键列toast属性为main、external、extended时,请务必同时将该表的replica identity属性设置为full,然后再写入数据,否则可能导致数据不一致或任务失败。
|
同步对比使用须知 |
- 建议在源库的业务低峰期进行数据比对,防止误报不一致数据,以及减少对源库和DRS任务的冲击。
- 在增量同步过程中做对比时,源库若存在写入,则对比结果可能不一致。
- 不支持在全量同步过程中做对比。
- 不支持数据对比过程中做限速。
|
结束任务须知 |
- 正常结束任务:
- 全量+增量实时同步任务正常结束时,将自动删除任务在源库创建的流复制槽。
- 强制结束任务:
- 强制结束全量+增量实时同步任务,需要手动删除源库可能残留的复制槽,可参考PostgreSQL为源强制结束任务章节的指导进行操作。
- 逻辑复制槽命名规则为“drs_唯一性标识”,其中唯一性标识需要将任务node id中的“-”替换为“_”获取。node id可在DRS任务同步日志页面查看task node id is ***日志找到。
|