• 沒有找到結果。

4.2 入云同步使用须知

4.2.4 MySQL->GaussDB(DWS)

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

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

● 基于以下原因,建议您结合定时启动功能,选择业务低峰期开始运行同步任务。

– 在网络无瓶颈的情况下,全量同步会对源数据库增加约50MB/s的查询压力,

以及占用2~4个CPU。

– 正在同步的数据被其他事务长时间锁死,可能导致读数据超时。

– 由于MySQL固有特点限制,CPU资源紧张时,存储引擎为Tokudb的表,读取 速度可能下降至10%。

– DRS并发读取数据库,会占用大约6-10个session连接数,需要考虑该连接数 对业务的影响。

– 全量阶段读取表数据时,特别是大表的读取,可能会阻塞业务上对大表的独 占锁操作。

● 建议您结合数据对比的“稍后启动”功能,选择业务低峰期进行数据对比,以便 得到更为具有参考性的对比结果。由于同步具有轻微的时差,在数据持续操作过 程中进行对比任务,可能会出现少量数据不一致对比结果,从而失去参考意义。

操作要求

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

4-7 操作要求

类型名称 操作限制(需要人为配合)

注意事项 ● 表4-8中的环境要求均不允许在同步过程中修改,直至同步结

束。

● 相互关联的数据对象要确保同时同步,避免因关联对象缺失,导 致同步失败。常见的关联关系:索引引用表等。

● 不支持外键级联操作。

● 网络中断在30秒内恢复的,不影响实时同步,如果超过30秒,则 会导致同步任务失败。

● 不支持源数据库进行恢复操作。

● 索引同步不区分索引类型,同步到目标数据库都是默认的索引类 型。

● 目标数据库与源数据库字符集不一致可能会导致同步后数据不一 致或者同步失败。

● 若专属计算集群不支持4vCPU/8G或以上规格实例,则无法创建 同步任务。

● 数据类型不兼容时,可能引起同步失败。

● 源库为RDS for MySQL实例时,不支持带有TDE特性并建立具有 加密功能表。

● 源库为RDS for MySQL实例时,支持源端多张表对

GaussDB(DWS)一张表的映射。详细操作可参考MySQL数据库到 DWS同步实例(多对一场景)。

● 如果源库MySQL不支持TLS1.2协议,或者为版本较低的自建库

(低于5.6.46或在5.7-5.7.28之间),如果不支持TLS1.2协议,需 提交运维申请才能使用SSL测试连接。

● 支持目标数据库中的表比源数据库多列场景,但是需要避免以下 场景可能导致的任务失败。

– 目标端多的列要求非空且没有默认值,源端insert数据,同步 到目标端后多的列为null,不符合目标端要求。

– 目标端多的列设置固定默认值,且有唯一约束。源端insert多 条数据后,同步到目标端后多的列为固定默认值,不符合目标 端要求。

类型名称 操作限制(需要人为配合)

– 不支持 DROP_DATABASE、DROP_TABLE、

TRUNCATE_TABLE、CREATE_VIEW、DROP_VIEW。

– 支持创建表,例如 :

create table `ddl_test` (id int, c1 varchar(25), primary key(id));

create table `ddl_test_gho` like `ddl_test`;

– 支持表字段的增和改,不支持删列,例如:

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`;

说明alter table `ddl_test` add primary key(id)仅支持首列为主键列的同 步。

– 表级同步支持增加列、修改列、增加主键和普通索引。多对一 情况下执行colunm重命名操作,必须停业务操作,不然会有 数据不一致的风险,例如:

alter table `ddl_test` modify column `c1` varchar(50);

– 表级同步时由于rename后的表可能在目标库存在冲突,导致 任务失败,暂不支持表级同步任务rename table的DDL操作。

– 库级同步支持新建表、rename表、增加列、修改列、增加主 键和普通索引。

– 新增和修改表名、列名、索引名时不能超出63字符,否则任务 会失败。

– 源库无主键表增加主键的时候,必须含有第一列,否则任务会 失败。

● 增量同步过程中,库级同步不支持Online DDL,表级同步目前只 支持阿里云DMS产生的Online DDL。

● 不支持强制清理binlog,否则会导致同步任务失败。

● 建议将expire_log_day参数设置在合理的范围,确保恢复时断点 处的binlog尚未过期,以保证服务中断后的顺利恢复。

环境要求

4-8 环境要求

类型名称 使用限制(DRS自动检查)

数据库权限

设置 ● 源数据库帐户需要具备如下权限:SELECT、SHOW VIEW、

EVENT、LOCK TABLES、REPLICATION SLAVE、REPLICATION CLIENT。

● 目标数据库帐号必须具有每张表的如下权限:INSERT、

SELECT、UPDATE、DELETE、CONNECT、CREATE、

REFERENCES。

同步对象约

束 ● 支持表、索引、约束(主键、空、非空)的同步,不支持视图、

外键、存储过程、触发器、函数、事件、虚拟列的同步。

● 不支持的数据类型有:xml、geometry、point、lineString、

polygon、geometrycollection、multipoint、multilinestring、

multipolygon。

● 不支持非MyISAM和非InnoDB表的同步。

源数据库要

求 ● MySQL源数据库的binlog日志必须打开,且binlog日志格式必须 为Row格式。

● 在磁盘空间允许的情况下,建议源数据库binlog保存时间越长越 好,建议为3天。

● 源数据库expire_logs_days参数值为0,可能会导致同步失败。

● 必须设置MySQL源数据库的server-id,server-id的取值范围在 2-4294967296之间。

● 源数据库中的库名、表名不能包含:.<'>`/\"以及非ASCII字符。

目标数据库

要求 ● 目标数据库实例的运行状态必须正常。

● 目标数据库实例必须有足够的磁盘空间。

● 目标数据库的时区设置必须与源数据库一致。

4.2.5 MySQL->GaussDB(for MySQL)主备版

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

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

● 基于以下原因,建议您结合定时启动功能,选择业务低峰期开始运行同步任务。

– 在网络无瓶颈的情况下,全量同步会对源数据库增加约50MB/s的查询压力,

以及占用2~4个CPU。

– 同步无主键表时,为了确保数据一致性,会存在3s以内的单表级锁定。

– 正在同步的数据被其他事务长时间锁死,可能导致读数据超时。

– 由于MySQL固有特点限制,CPU资源紧张时,存储引擎为Tokudb的表,读取 速度可能下降至10%。

– DRS并发读取数据库,会占用大约6-10个session连接数,需要考虑该连接数 对业务的影响。

– 全量阶段读取表数据时,特别是大表的读取,可能会阻塞业务上对大表的独

● 若专属计算集群不支持4vCPU/8G或以上规格实例,则无法创建 同步任务。

● 源库和目标库为RDS for MySQL实例时,不支持带有TDE特性并 建立具有加密功能表。

● 如果源库MySQL不支持TLS1.2协议,或者为版本较低的自建库

(低于5.6.46或在5.7-5.7.28之间),需提交运维申请才能使用 SSL测试连接。

● 支持目标数据库中的表比源数据库多列场景,但是需要避免以下 场景可能导致的任务失败。

– 目标端多的列要求非空且没有默认值,源端insert数据,同步 到目标端后多的列为null,不符合目标端要求。

– 目标端多的列设置固定默认值,且有唯一约束。源端insert多 条数据后,同步到目标端后多的列为固定默认值,不符合目标 端要求。

类型名称 操作限制(需要人为配合)

操作须知 ● 同步过程中,不允许修改、删除连接源和目标数据库的用户的用 户名、密码、权限,或修改源和目标数据库的端口号。

● 不支持强制清理binlog,否则会导致同步任务失败。

● 当在全量同步过程中,对MyISAM表执行修改操作时,可能造成 数据不一致。

● 全量同步过程中不支持DDL操作。

● 增量同步支持部分DDL操作。

● 表级同步时由于rename后的表可能在目标库存在冲突,导致任务 失败,暂不支持表级同步任务rename table的DDL操作。

● 使用了附加列功能,单表的列数超过500时,对该表添加附加列 可能会超过列数上限,会导致任务失败。

● 建议将expire_log_day参数设置在合理的范围,确保恢复时断点 处的binlog尚未过期,以保证服务中断后的顺利恢复。

环境要求

设置 ● 源数据库帐户需要具备如下权限:SELECT、SHOW VIEW、

EVENT、LOCK TABLES、REPLICATION SLAVE、REPLICATION CLIENT。

● 目标数据库帐号必须拥有如下权限:SELECT、CREATE、

DROP、DELETE、INSERT、UPDATE、ALTER、CREATE VIEW、

CREATE ROUTINE、REFERENCES,GaussDB(for MySQL)实例 的root帐户默认已具备上述权限。

当目标库为8.0.14-8.0.18版本时,还需要有 SESSION_VARIABLES_ADMIN权限。

同步对象约

● 不支持非MyISAM和非InnoDB表的同步。

● 不支持已选择的表与未选择的表之间互相rename的DDL操作,否 则会导致同步任务失败。

类型名称 使用限制(DRS自动检查)

源数据库要

求 ● MySQL源数据库的binlog日志必须打开,且binlog日志格式必须 为Row格式。

● 在磁盘空间允许的情况下,建议源数据库binlog保存时间越长越 好,建议为3天。

● 源数据库expire_logs_days参数值为0,可能会导致同步失败。

● 增量同步时,必须设置MySQL源数据库的server_id。如果源数据 库版本小于或等于MySQL5.6,server_id的取值范围在2-

4294967296之间;如果源数据库版本大于或等于MySQL5.7,

server_id的取值范围在1-4294967296之间。

● 源数据库中的库名、表名、视图名不能包含:'<`>/\以及非ASCII 字符。

● 不支持非MyISAM和非InnoDB的表同步到RDS。

● 源数据库中的库名和库映射的名称不允许为ib_logfile。

● 数据库映射时,源库中存在视图、存储过程等对象,可能会导致

● 同步的对象中包含引擎为MyISAM的表,则目标数据库sql_mode 不能包含no_engine_substitution参数,否则可能会导致同步失 败。