将DRDS同步到MySQL 使用须知 在创建同步任务前,请务必阅读以下使用须知。 说明 建议创建单独用于DRS任务连接的数据库帐号,避免因为数据库帐号密码修改,导致的任务连接失败。 连接源或目标数据库的帐号密码修改后,请尽快修改连接信息,避免任务连接失败后自动重试,导致数据库帐号被锁定影响使用。 表使用须知 类型名称 使用和操作限制 数据库权限设置 l 源数据库DRDS帐户至少需要具备一个权限,比如SELECT;DRDS物理分片数据库帐号需要具备如下权限:SELECT、SHOW VIEW、EVENT、LOCK TABLES、REPLICATION SLAVE、REPLICATION CLIENT。 l 提供的目标数据库帐号必须拥有如下权限:SELECT、CREATE、ALTER、DROP、DELETE、INSERT、UPDATE。RDS for MySQL实例的root帐户默认已具备上述权限。 同步对象约束 l 全量同步支持数据、表结构和索引的同步。 l 源库不允许存在拆分键为timestamp类型的表。 l 源表的分库分表键要加到目标表的主键和唯一键中(也就是目标表的主键和唯一键中的列应该包含源表的分片列),避免数据冲突出现数据不一致问题。 源数据库要求 l 增量同步时,源物理分片数据库的binlog日志必须打开,且binlog日志格式必须为Row格式。 l 在磁盘空间允许的情况下,建议源数据库binlog保存时间越长越好,建议为3天。 l 增量同步时,必须设置MySQL源数据库的serverid。如果源数据库版本小于或等于MySQL5.6,serverid的取值范围在2-4294967296之间;如果源数据库版本大于或等于MySQL5.7,serverid的取值范围在1-4294967296之间。 l 源分库分表中间件中的库名、表名不能包含:'<>/以及非ASCII字符。 l MySQL源数据库建议开启skipnameresolve,减少连接超时的可能性。 l 源物理分片数据库GTID状态建议为开启状态。 目标数据库要求 l 目标数据库实例的运行状态必须正常,若数据库实例是主备实例,复制状态也必须正常。 l 目标数据库实例必须有足够的磁盘空间。 l 除了MySQL系统数据库之外,当目标库和源库同名时,目标数据库中若存在与源库同名的表,则表结构必须与源库保持一致。 l 目标数据库的字符集必须与源数据库一致。 l 目标数据库的时区设置必须与源数据库一致。 l DRS同步时会有大量数据写入目标库,目标库maxallowedpacket 参数过小会导致无法写入,建议将目标库maxallowedpacket参数值设置为大于100MB。 操作须知 l 数据类型不兼容时,可能引起同步失败。 l 支持断点续传功能,在主机系统崩溃的情况下,对于无主键的表可能会出现重复插入数据的情况。 l 源数据库中存在主键或唯一键重复的数据时, 直接同步将导致目标库数据比源库少, 请务必检查并订正数据后启动同步。 l 目标库为RDS for MySQL实例时,不支持带有TDE特性并建立具有加密功能表。 l 支持目标数据库中的表比源数据库多列场景,但是需要避免以下场景可能导致的任务失败。 − 目标端多的列要求非空且没有默认值,源端insert数据,同步到目标端后多的列为null,不符合目标端要求。 − 目标端多的列设置固定默认值,且有唯一约束。源端insert多条数据后,同步到目标端后多的列为固定默认值,不符合目标端要求。 l 任务创建后,目标库不能设置为只读。 l 任务创建后,源数据库不支持增加逻辑库或修改旧逻辑库关联新的RDS,否则会导致数据无法正常同步或任务失败。 l 同步过程中,不允许修改、删除连接源和目标数据库的用户的用户名、密码、权限,或修改源和目标数据库的端口号。 l 同步过程中,不允许源端DRDS正在同步的表做改变拆分键的操作;也不允许将单表/广播表改为拆分表,拆分表改为单表/广播表。 l 增量同步阶段,不支持源数据库进行恢复操作 l 增量同步阶段,支持部分DDL操作。 − 不支持 DROPDATABASE、DROPTABLE、TRUNCATETABLE、CREATEVIEW、DROPVIEW。 − 不支持使用Online DDL。 − 支持创建表,例如 : create table ddltest (id int, c1 varchar(25), primary key(id)); create table ddltestgho like ddltest; − 支持表的重命名,源表和目标表必须都在对象选择里面,例如: rename table ddltest to ddltestnew; − 支持表字段的增和改,不支持删列,例如: alter table ddltest add column c2 varchar(25); alter table ddltest modify column c1 varchar(50); alter table ddltest alter c1 set default 'xxx'; − 支持修改表索引,例如: alter table ddltest drop primary key; alter table ddltest add primary key(id); alter table ddltest add index ddltestuk(id); alter table ddltest drop index ddltestuk; − 表级同步支持增加列、修改列、增加主键和普通索引。 − 库级同步支持新建表、rename表、增加列、修改列、增加主键和普通索引。 − 新增和修改表名、列名、索引名时不能超出63字符,否则任务会失败。 − 源库无主键表增加主键的时候,必须含有第一列,否则任务会失败。 l 增量同步阶段,对同一张表或列做DDL操作,需要在业务低峰期,并且时间间隔1分钟以上。