注意事项
为保证任务的正常运行,DRS提供了自动化的检查方法,在您启动DRS任务前,会针对源数据库和目标数据库的相关配置、条件进行检查。主要的检查项和对应的处理建议请参考预检查项。除了预检查项目之外,您还需要注意的事情参见表4。
表4 注意事项
类型名称 |
使用和操作限制 |
源数据库限制 |
- 不支持reset master或reset master to命令,可能会导致DRS任务失败或者数据不一致。
- 源数据库不允许存在与目标库同名的无主键表。
- 如果源数据库MySQL不支持TLS1.2协议,或者为版本较低的自建库(低于5.6.46或在5.7.0-5.7.28之间),需提交运维申请才能使用SSL测试连接。
|
使用限制 |
通用:
- 不建议修改、删除连接源和目标数据库的用户的用户名、密码、权限,或修改源和目标数据库的端口号。
- 不允许对正在同步中的目标数据库进行修改操作(包括但不限于DDL、DML操作)。
- 不允许源库和目标库执行清除Binlog的操作。
- 需要DRS任务同步索引的情况下,目标库对应表上不能存在同名但不同列信息的索引。全量阶段DRS会忽略对应表上已存在的同名索引,增量阶段DDL根据索引名操作索引时会触发错位问题。
- 数据同步过程中,不允许源数据库MySQL跨大版本升级,否则可能导致数据不一致或者同步任务失败(跨版本升级后数据、表结构、关键字等信息均可能会产生兼容性改变),建议在该场景下重建同步任务。
全量同步阶段:
- 任务启动和全量数据同步阶段,请不要在源数据库执行DDL操作,否则可能导致任务异常。
- 对MyISAM表执行修改操作时,可能造成数据不一致。
增量同步阶段:
- 如果设置session变量character_set_client为binary,可能导致乱码。
- 正向任务的增量同步支持任务再编辑追加同步对象。
- 支持断点续传功能,在主机系统崩溃的情况下,对于非事务性的无主键的表可能会出现重复插入数据的情况。
- 双向同步任务不支持任务重置功能。
- 正向任务的增量同步过程中支持部分DDL语句。
- 一对一的场景下,默认同步的DDL类型有CREATE_TABLE,RENAME_TABLE,ADD_COLUMN,MODIFY_COLUMN,CHANGE_COLUMN,DROP_COLUMN,DROP_INDEX,ADD_INDEX,CREATE_INDEX,RENAME_INDEX,DROP_TABLE,TRUNCATE_TABLE,DROP_PARTITION,RENAME_COLUMN,DROP_PRIMARY_KEY,ADD_PRIMARY_KEY,客户可以根据自身需求,在对象选择页面选择需要同步的DDL类型。
- 增量同步支持表的重命名,源表和目标表必须都在对象选择里。
- 反向任务的增量同步中不支持同步DDL。
- 不支持源数据库进行恢复到某个备份点的操作(PITR)。
- 不支持目标数据库恢复到全量同步时间段范围内的操作(PITR)。
结束任务:
常见故障排查:
- 在任务创建、启动、全量同步、增量同步、结束等过程中,如有遇到问题,可先参考“故障排查”章节进行排查。
|
其他限制 |
- 若专属计算集群不支持4vCPU/8G或以上规格实例,则无法创建同步任务。
- 表名映射时,不支持同步视图、存储过程、函数依赖的表,不支持同步表的外键约束。
- 对于表中的物理生成列,如果列是根据一个时间类型生成的,会存在此列数据不一致的可能性。
- 进行表级多对一同步时,源库不允许存在无主键表。
- 源库和目标库是相同的RDS实例时,不支持没有库映射的实时同步。
- 使用非字母、非数字、非下划线等字符作为库表名称,或库表映射后名称包含中划线、井号时,名称的长度请不要超过42个字符。
- 源数据库中的库名、表名如果存在非成对的{},可能导致表结构同步失败。进行数据映射后,映射到目标库中的库名、表名如果存在非成对{},可能导致表结构同步失败。
- 不支持分区表的分区字段进行列映射。
- 源库如果存在非标浮点类型,且非标浮点类型存在宽松模式可以写入但严格模式下无法写入的数据,同步过程可能会有数据不一致的风险。
- 若源库表开启了TDE透明 数据加密 ,目标库也需要开启TDE特性,否则会导致表结构创建失败,任务异常。
- 在创建DRS任务之前,如果源或者目标数据库实例开启并设置了SQL限流规则,可能会导致DRS任务失败。
- 创建任务时,正向任务和反向任务对象选择的维度(表级、库级、对象文件导入)需要保持一致。
- 同步任务创建后,源和目标数据库不能设置为“只读”。
- 支持目标数据库中的表比源数据库多列场景,但是需要避免以下场景可能导致的任务失败。
- 目标数据库多的列要求非空且没有默认值,源库insert数据,同步到目标数据库后多的列为null,不符合目标数据库要求。
- 目标数据库多的列设置固定默认值,且有唯一约束。源库insert多条数据后,同步到目标数据库后多的列为固定默认值,不符合目标数据库要求。
- 如果涉及表级汇集的多对一同步任务,则不支持DDL,否则会导致同步全部失败。
- 已选择的表与未选择的表之间互相rename的DDL操作,在任务同步中会被过滤掉,可能会导致任务失败或数据不一致。
- 对于一个DDL中存在一个rename的情况(例如:rename A TO B),只支持rename前后库表都在已选择库表中的rename操作(A和B都在已选择库表中),其他情况的rename DDL会被过滤。
- 对于一个DDL中存在多个rename的情况(例如:rename A TO B, B TO C),只支持rename前后库表都在已选择库表中的部分rename操作 ,其他情况的rename DDL会被过滤(A和B在已选择库表中,C不在,仅执行rename A TO B)。
- 不建议在多对一同步场景下的进行rename操作,可能会导致任务失败或数据不一致。
- 请不要在同一时间在正向任务的源库和反向任务的源库对同一张表中的同一条数据进行业务操作,这样可能会造成数据不一致。
|