4.2 入云同步使用须知
4.2.2 MySQL->PostgreSQL
使用技巧(需要人为配合)
推荐提前2-3天启动任务,并配合如下使用技巧和操作要求,以确保任务稳定运行。
● 基于以下原因,建议您结合定时启动功能,选择业务低峰期开始运行同步任务。
– 在网络无瓶颈的情况下,全量同步会对源数据库增加约50MB/s的查询压力,
以及占用2~4个CPU。
– 同步无主键表时,为了确保数据一致性,会存在3s以内的单表级锁定。
– 正在同步的数据被其他事务长时间锁死,可能导致读数据超时。
– 由于MySQL固有特点限制,CPU资源紧张时,存储引擎为Tokudb的表,读取 速度可能下降至10%。
– DRS并发读取数据库,会占用大约6-10个session连接数,需要考虑该连接数 对业务的影响。
表4-3 操作要求
● 若专属计算集群不支持4vCPU/8G或以上规格实例,则无法创建 同步任务。
● 数据类型不兼容时,可能引起同步失败。
● 仅支持记录违反非空约束的异常数据、char类型或varchar类型超 出字段长度限制的异常数据。
● 源库和目标库为RDS for MySQL实例时,不支持带有TDE特性并 建立具有加密功能表。
● 如果源库MySQL不支持TLS1.2协议,或者为版本较低的自建库
(低于5.6.46或在5.7-5.7.28之间),需提交运维申请才能使用 SSL测试连接。
● 支持目标数据库中的表比源数据库多列场景,但是需要避免以下 场景可能导致的任务失败。
– 目标端多的列要求非空且没有默认值,源端insert数据,同步 到目标端后多的列为null,不符合目标端要求。
– 目标端多的列设置固定默认值,且有唯一约束。源端insert多 条数据后,同步到目标端后多的列为固定默认值,不符合目标 端要求。
类型名称 操作限制(需要人为配合)
操作须知 ● 实时同步过程中,若源库为RDS时,支持修改端口,修改之后同 步任务失败,需要通过重试后继续进行同步。
● 实时同步过程中,若源库为非RDS时,不支持修改端口。
● 实时同步过程中,不支持IP、账号、密码修改。
● 不支持强制清理binlog,否则会导致同步任务失败。
● 全量同步过程中不支持DDL操作。
● 增量同步过程中,支持部分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`;
– 支持表字段的增删改,例如:
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`;
– 表级同步支持增加列、修改列、增加主键和普通索引。多对一 情况下执行colunm重命名操作,必须停业务操作,不然会有 数据不一致的风险,例如:
alter table `ddl_test` modify column `c1` varchar(50);
– 新增和修改表名、列名、索引名时不能超出63字符,否则任务 会失败。
● 建议将expire_log_day参数设置在合理的范围,确保恢复时断点 处的binlog尚未过期,以保证服务中断后的顺利恢复。
● 全量同步过程中,DRS会向目标库PostgreSQL写入大量数据,会 导致PostgreSQL的wal日志量急剧增长,PostgreSQL的磁盘有被 写满的风险。可以通过在全量同步前关闭PostgreSQL的日志备份 功能,减少wal日志的生产,同步完成后再将其打开的方式进行 规避(具体操作方法可参考设置自动备份策略)。
表4-4 环境要求
类型名称 使用限制(DRS自动检查)
数据库权限
设置 ● 源数据库帐户需要具备最小权限:
– 全量同步最小权限:SELECT。
– 全量+增量同步最小权限:SELECT、LOCK TABLES、
REPLICATION SLAVE、REPLICATION CLIENT。
● 目标数据库帐户需要具备最小权限:RDS for PostgreSQL实例的 帐号默认已具有权限。 法,PostgreSQL不支持,可能会导致视图同步失败。
● 不支持的数据类型有:xml、geometry、point、lineString、
polygon、geometrycollection、multipoint、multilinestring、
multipolygon、json。
● 不支持非MyISAM和非InnoDB表的同步。
源数据库要
求 ● MySQL源数据库的binlog日志必须打开,且binlog日志格式必须 为Row格式。
● 在磁盘空间允许的情况下,建议源数据库binlog保存时间越长越 好,建议为3天。
● 源数据库expire_logs_days参数值为0,可能会导致同步失败。
● 必须设置MySQL源数据库的server-id,server-id的取值范围在 2-4294967296之间。
● 源数据库中的库名、表名不能包含:.<'>`/\"以及非ASCII字符。
目标数据库
要求 ● 目标数据库实例的运行状态必须正常,若关系型数据库实例是主 备实例,复制状态也必须正常。
● 目标数据库实例必须有足够的磁盘空间。
● 目标数据库的时区设置必须与源数据库一致。