4.2 入云同步使用须知
4.2.17 DDM->MySQL
使用技巧(需要人为配合)
推荐提前2-3天启动任务,并配合如下使用技巧和操作要求,以确保任务稳定运行。
● 基于以下原因,建议您结合定时启动功能,选择业务低峰期开始运行同步任务。
– 在网络无瓶颈的情况下,全量同步会对源数据库增加约50MB/s的查询压力,
以及占用2~4个CPU。
– 同步无主键表时,为了确保数据一致性,会存在3s以内的单表级锁定。
– 正在同步的数据被其他事务长时间锁死,可能导致读数据超时。
– DRS并发读取数据库,会占用大约6-10个session连接数,需要考虑该连接数 对业务的影响。
– 全量阶段读取表数据时,特别是大表的读取,可能会阻塞业务上对大表的独 占锁操作。
● 建议您结合数据对比的“稍后启动”功能,选择业务低峰期进行数据对比,以便 得到更为具有参考性的对比结果。由于同步具有轻微的时差,在数据持续操作过 程中进行对比任务,可能会出现少量数据不一致对比结果,从而失去参考意义。
操作要求
针对一些无法预知或人为因素及环境突变导致同步失败的情况,数据复制服务提供以 下常见的操作限制,供您在同步过程中参考。
表4-33 操作要求
类型名称 操作限制(需要人为配合)
注意事项 ● 表4-34中的环境要求均不允许在同步过程中修改,直至同步结
束。
● 支持断点续传功能,在主机系统崩溃的情况下,对于无主键的表 可能会出现重复插入数据的情况。
● 创建同步任务时,不允许同步任务将目标库设为只读。
● 暂不支持跨VPC场景的实时同步。
● 源数据库中存在主键或唯一键重复的数据时, 直接同步将导致目 标库数据比源库少, 请务必检查并订正数据后启动同步。
● 若专属计算集群不支持4vCPU/8G或以上规格实例,则无法创建 同步任务。
● 数据类型不兼容时,可能引起同步失败。
● 目标库为RDS for MySQL实例时,不支持带有TDE特性并建立具 有加密功能表。
● 支持目标数据库中的表比源数据库多列场景,但是需要避免以下 场景可能导致的任务失败。
– 目标端多的列要求非空且没有默认值,源端insert数据,同步 到目标端后多的列为null,不符合目标端要求。
– 目标端多的列设置固定默认值,且有唯一约束。源端insert多 条数据后,同步到目标端后多的列为固定默认值,不符合目标 端要求。
类型名称 操作限制(需要人为配合)
操作须知 ● 同步过程中,不允许修改、删除连接源和目标数据库的用户的用 户名、密码、权限,或修改源和目标数据库的端口号。
● 增量同步场景下,不支持源数据库进行恢复操作
● 增量同步过程中,支持部分DDL操作。
– 不支持 DROP_DATABASE、DROP_TABLE、
TRUNCATE_TABLE、CREATE_VIEW、DROP_VIEW。
– 不支持使用Online DDL。
– 支持创建表,例如 :
create table `ddl_test` (id int, c1 varchar(25), primary key(id));
create table `ddl_test_gho` like `ddl_test`;
– 支持表的重命名,源表和目标表必须都在对象选择里面,例 如:rename table `ddl_test` to `ddl_test_new`;
– 支持表字段的增和改,不支持删列,例如:
alter table `ddl_test` add column `c2` varchar(25);
alter table `ddl_test` modify column `c1` varchar(50);
alter table `ddl_test` alter c1 set default 'xxx';
– 支持修改表索引,例如:
alter table `ddl_test` drop primary key;
alter table `ddl_test` add primary key(id);
alter table `ddl_test` add index `ddl_test_uk`(id);
alter table `ddl_test` drop index `ddl_test_uk`;
– 表级同步支持增加列、修改列、增加主键和普通索引。
– 库级同步支持新建表、rename表、增加列、修改列、增加主 键和普通索引。
– 新增和修改表名、列名、索引名时不能超出63字符,否则任务 会失败。
– 源库无主键表增加主键的时候,必须含有第一列,否则任务会 失败。
● 创建任务后,不支持增加逻辑库或修改旧逻辑库关联新的RDS,
否则会导致同步任务失败。
环境要求
实时同步对环境有一些特定的要求,请确保环境配置满足以下条件。该类型的要求系 统会自动检查,并给出处理建议。
表4-34 环境要求
类型名称 使用限制(DRS自动检查)
数据库权限
设置 ● 源数据库DDM帐户需要具备SELECT权限,DDM物理分片数据库 帐户需要具备如下权限: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,减少连接超时的 可能性。
max_allowed_packet 参数过小会导致无法写入,建议将目标库 max_allowed_packet参数值设置为大于100MB。