更新时间:2022-05-25 GMT+08:00
分享

DDM->MySQL

使用技巧(需要人为配合)

推荐提前2-3天启动任务,并配合如下使用技巧和操作要求,以确保任务稳定运行。

  • 基于以下原因,建议您结合定时启动功能,选择业务低峰期开始运行同步任务。
    • 在网络无瓶颈的情况下,全量同步会对源数据库增加约50MB/s的查询压力,以及占用2~4个CPU。
    • 同步无主键表时,为了确保数据一致性,会存在3s以内的单表级锁定。
    • 正在同步的数据被其他事务长时间锁死,可能导致读数据超时。
    • DRS并发读取数据库,会占用大约6-10个session连接数,需要考虑该连接数对业务的影响。
    • 全量阶段读取表数据时,特别是大表的读取,可能会阻塞业务上对大表的独占锁操作。
  • 建议您结合数据对比的“稍后启动”功能,选择业务低峰期进行数据对比,以便得到更为具有参考性的对比结果。由于同步具有轻微的时差,在数据持续操作过程中进行对比任务,可能会出现少量数据不一致对比结果,从而失去参考意义。

操作要求

针对一些无法预知或人为因素及环境突变导致同步失败的情况,数据复制服务提供以下常见的操作限制,供您在同步过程中参考。
表1 操作要求

类型名称

操作限制(需要人为配合)

注意事项

  • 表2中的环境要求均不允许在同步过程中修改,直至同步结束。
  • 支持断点续传功能,在主机系统崩溃的情况下,对于无主键的表可能会出现重复插入数据的情况。
  • 创建同步任务时,不允许同步任务将目标库设为只读。
  • 暂不支持跨VPC场景的实时同步
  • 源数据库中存在主键或唯一键重复的数据时, 直接同步将导致目标库数据比源库少, 请务必检查并订正数据后启动同步。
  • 若专属计算集群不支持4vCPU/8G或以上规格实例,则无法创建同步任务。
  • 数据类型不兼容时,可能引起同步失败。
  • 目标库为RDS for MySQL实例时,不支持带有TDE特性并建立具有加密功能表。
  • 如果目标库MySQL不支持TLS1.2协议,或者为版本较低的自建库(低于5.6.46或在5.7-5.7.28之间),需提交运维申请才能使用SSL测试连接。
  • 支持目标数据库中的表比源数据库多列场景,但是需要避免以下场景可能导致的任务失败。
    • 目标端多的列要求非空且没有默认值,源端insert数据,同步到目标端后多的列为null,不符合目标端要求。
    • 目标端多的列设置固定默认值,且有唯一约束。源端insert多条数据后,同步到目标端后多的列为固定默认值,不符合目标端要求。

操作须知

  • 同步过程中,不允许修改、删除连接源和目标数据库的用户的用户名、密码、权限,或修改源和目标数据库的端口号。
  • 增量同步过程中,不允许对源库需要同步的表结构进行修改。
  • 增量同步场景下,不支持源数据库进行恢复操作
  • 同步过程中不支持DDL操作。
  • 创建任务后,不支持增加逻辑库或修改旧逻辑库关联新的RDS,否则会导致同步任务失败。

环境要求

实时同步对环境有一些特定的要求,请确保环境配置满足以下条件。该类型的要求系统会自动检查,并给出处理建议。
表2 环境要求

类型名称

使用限制(DRS自动检查)

数据库权限设置

  • 源物理分片数据库帐户需要具备如下权限:SELECT、SHOW VIEW、EVENT、LOCK TABLES、REPLICATION SLAVE、REPLICATION CLIENT。
  • 提供的目标数据库帐号必须拥有如下权限:SELECT、CREATE、DROP、DELETE、INSERT、UPDATE。RDS for MySQL实例的root帐户默认已具备上述权限。

同步对象约束

  • 全量同步支持数据、表结构和索引的同步。
  • 源库不允许存在拆分键为timestamp类型的表。
  • 源表的分库分表键要加到目标表的主键和唯一键中(也就是目标表的主键和唯一键中的列应该包含源表的分片列),避免数据冲突出现数据不一致问题。

源数据库要求

  • MySQL源数据库的binlog日志必须打开,且binlog日志格式必须为Row格式。
  • 在磁盘空间允许的情况下,建议源数据库binlog保存时间越长越好,建议为3天。
  • 增量同步时,必须设置MySQL源数据库的server_id。如果源数据库版本小于或等于MySQL5.6,server_id的取值范围在2-4294967296之间;如果源数据库版本大于或等于MySQL5.7,server_id的取值范围在1-4294967296之间。
  • 源分库分表中间件中的库名、表名不能包含:'<>/\以及非ASCII字符。
  • MySQL源数据库建议开启skip-name-resolve,减少连接超时的可能性。
  • 源数据库GTID状态建议为开启状态。

目标数据库要求

  • 目标数据库为自建MySQL。
  • 目标数据库实例必须有足够的磁盘空间。
  • 除了MySQL系统数据库之外,当目标库和源库同名时,目标数据库中若存在与源库同名的表,则表结构必须与源库保持一致。
  • 目标数据库的字符集必须与源数据库一致。
  • 目标数据库的时区设置必须与源数据库一致。
  • DRS同步时会有大量数据写入目标库,目标库max_allowed_packet 参数过小会导致无法写入,建议将目标库max_allowed_packet参数值设置为大于100MB。
分享:

    相关文档

    相关产品

close