文档首页 > > 快速入门> 数据同步> 使用须知

使用须知

分享
更新时间: 2020/03/20 GMT+08:00

数据复制服务在使用上有一些固定的限制,用来提高数据同步的稳定性和安全性。在进行正式的数据同步之前,请先阅读以确保各存储引擎已满足使用限制条件。

表1 使用技巧

类型名称

操作限制(需要人为配合)

使用技巧

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

  • 基于以下原因,建议您结合定时启动功能,选择业务低峰期开始运行同步任务。
    • 全量同步会对源数据库有一定的访问压力。
    • 同步无主键表时,为了确保数据一致性,会存在3s以内的单表级锁定。
    • 正在同步的数据被其他事务长时间锁死,可能导致读数据超时。
    • 由于MySQL固有特点限制,CPU资源紧张时,存储引擎为Tokudb的表,读取速度可能下降至10%。
  • 建议您结合数据对比的“稍后启动”功能,选择业务低峰期进行数据对比,以便得到更为具有参考性的对比结果。由于同步具有轻微的时差,在数据持续操作过程中进行对比任务,可能会出现少量数据不一致对比结果,从而失去参考意义。

MySQL->RDS for MySQL同步场景

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

    类型名称

    操作限制(需要人为配合)

    注意事项

    • 表3中的环境要求均不允许在同步过程中修改,直至同步结束。
    • 相互关联的数据对象要确保同时同步,避免因关联对象缺失,导致同步失败。常见的关联关系:视图引用表、视图引用视图、存储过程/函数/触发器引用视图/表、主外键关联表等。
    • 不支持源数据库恢复到之前时间点的操作(PITR)。
    • 支持断点续传功能,但是对于无主键的表可能会出现重复插入数据的情况。
    • 创建同步任务时,不允许将目标库设为只读。
    • 当前仅MySQL->MySQL的同步支持多对一任务同步,进行表级多对一同步时,源库不允许存在无主键表。
    • 源库和目标库是相同的RDS实例时,不支持没有库映射的数据同步。
    • 源库不允许存在与目标库同名的无主键表。
    • 不支持目标数据库恢复到全量迁移时间段范围内的PITR操作。
    • 进行多对一同步任务时,若多个同步任务同步同一张表,则在任务启动之后,系统会自动创建一个父任务来关联多个同步任务,父任务的命名规则为“DRS-Group-(目标库实例名)”。
    • 若专属计算集群不支持4vCPU/8G或以上规格实例,则无法创建同步任务。

    操作须知

    • 数据同步过程中,如果修改了源库或者目标库的用户名、密码,会导致同步任务失败,需要在数据复制服务控制台将上述信息重新修改正确,然后重试任务可继续进行数据同步。一般情况下不建议在同步过程中修改上述信息。
    • 数据同步过程中,如果修改了源库或者目标库端口,会导致同步任务失败。针对该情况,数据复制服务提供不同的处理机制。
      • 对于源库端口,需要在数据复制服务控制台修改为正确的端口,然后重试任务可继续进行数据同步。
      • 对于目标库端口,系统自动更新为正确的端口,需要重试任务即可进行同步。

        一般情况下不建议在同步过程中修改端口。

    • 数据同步过程中,如果源库为非本云关系型数据库实例,不支持修改IP地址。如果是本云关系型数据库实例,对于因修改IP地址导致同步任务失败的情况,系统自动更新为正确的IP地址,需要重试任务可继续进行同步。一般情况下,不建议修改IP地址。
    • 不支持强制清理binlog,否则会导致同步任务失败。
    • 当在全量同步过程中,对mysiam表执行修改操作时,可能造成数据不一致。
    • 全量同步过程中不支持DDL操作。
    • 表级同步时,增量同步过程中只支持表的ddl操作。
    • 选择表级对象迁移时,增量迁移过程中不建议对表进行重命名操作。
    • 建议将expire_log_day参数设置在合理的范围,确保恢复时断点处的binlog尚未过期,以保证服务中断后的顺利恢复。
  • 数据同步对环境有一些特定的要求,请确保环境配置满足以下条件。该类型的要求系统会自动检查,并给出处理建议。
    表3 环境要求

    类型名称

    使用限制(DRS自动检查)

    数据库权限设置

    • 源数据库帐户需要具备如下权限:SELECT、SHOW VIEW、EVENT、LOCK TABLES、REPLICATION SLAVE、REPLICATION CLIENT。
    • 提供的目标数据库帐号必须拥有如下权限:SELECT、CREATE、DROP、DELETE、INSERT、UPDATE。RDS for MySQL实例的root帐户默认已具备上述权限。

    同步对象约束

    • 支持表、主键索引、唯一索引、普通索引、存储过程、视图、函数的同步,不支持事件、触发器的同步。
    • 库映射时源库中不允许存在存储过程、视图、函数对象。
    • 映射的库中不允许存在除表外的对象且在同步过程中不允许创建这些对象,否则会导致同步任务失败。
    • 不支持非Myisam、InnoDB表的同步。

    源数据库要求

    • 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字符。
    • 源数据库中的表名、视图名不能包含:'<>/\以及非ASCII字符。
    • 源数据库中的库名和库映射的名称不允许为ib_logfile。
    • 不支持非Myisam、InnoDB的表同步到RDS。
    • 数据库映射时,源库中存在视图、存储过程等对象,可能会导致数据同步失败。

    目标数据库要求

    • 目标数据库实例的运行状态必须正常,若数据库实例是主备实例,复制状态也必须正常。
    • 目标数据库实例必须有足够的磁盘空间。
    • 除了MySQL系统数据库之外,当目标库和源库同名时,目标数据库中若存在与源库同名的表,则表结构必须与源库保持一致。
    • 目标数据库的字符集必须与源数据库一致。
    • 目标数据库的时区设置必须与源数据库一致。
    • DRS同步时会有大量数据写入目标库,目标库max_allowed_packet 参数过小会导致无法写入,建议将目标库max_allowed_packet参数值设置为大于100MB。
    • 同步的对象中包含引擎为MyISAM的表,则目标数据库sql_mode不能包含no_engine_substitution参数,否则可能会导致同步失败。
    • 映射到目标库中的库名不能包含:“.”、 “<”、“>”、“”、和“'”。

MySQL->RDS for PostgreSQL同步场景

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

    类型名称

    操作限制(需要人为配合)

    注意事项

    • 表5中的环境要求均不允许在同步过程中修改,直至同步结束。
    • 相互关联的数据对象要确保同时同步,避免因关联对象缺失,导致同步失败。常见的关联关系:视图引用表、视图引用视图等。
    • 网络中断在30秒内恢复的,不影响数据同步,如果超过30秒,则会导致同步任务失败。
    • 支持通过映射方式实现多个库对一个库的数据同步,且映射库之间不允许存在同名表,该功能目前仅支持白名单用户使用,您可以通过提交工单的方式进行申请使用。
    • 不支持源数据库进行恢复操作。
    • 由于无主键表缺乏行的唯一性标志,在网络不稳定情况下,同步后,可能存在目标和源库数据不一致的情况。
    • 索引迁移不区分索引类型,迁移到目标数据库都是btree索引。
    • 目标数据库与源数据库字符集不一致可能会导致同步后数据不一致或者同步失败。
    • 若专属计算集群不支持4vCPU/8G或以上规格实例,则无法创建同步任务。

    操作须知

    • 数据同步过程中,若源库为RDS时,支持修改端口,修改之后同步任务失败,需要通过重试后继续进行同步。
    • 数据同步过程中,若源库为非RDS时,不支持修改端口。
    • 数据同步过程中,不支持IP、账号、密码修改。
    • 不支持强制清理binlog,否则会导致同步任务失败。
    • 不支持已选择同步的对象在同步过程中修改对象名。
    • 同步过程中,不支持DROP操作。
    • 增量同步支持部分DDL操作,仅包括:
      • CREATE TABLE建表语法。
      • ALTER TABLE [ADD| DROP|MODIFY|CHANGE] COLUMN单列操作语法。
      • ALTER TABLE [ADD| DROP|RENAME] [INDEX|UNIQUE]单索引操作语法。
      • ALTER TABLE ADD CONSTRAINT [PRIMARY KEY|UNIQUE|FOREIGN KEY|]单约束操作语法。
      • CREATE VIEW创建涉及单表视图语法。
      • CREATE [INDEX|UNIQUE|UNIQUE CONSTRAINT]创建单索引语法。
    • 选择表级对象迁移时,增量迁移过程中不建议对表进行重命名操作。
    • 建议将expire_log_day参数设置在合理的范围,确保恢复时断点处的binlog尚未过期,以保证服务中断后的顺利恢复。
  • 数据同步对环境有一些特定的要求,请确保环境配置满足以下条件。该类型的要求系统会自动检查,并给出处理建议。
    表5 环境要求

    类型名称

    使用限制(DRS自动检查)

    数据库权限设置

    • 源数据库帐户需要具备如下权限:SELECT、SHOW VIEW、EVENT、LOCK TABLES、REPLICATION SLAVE、REPLICATION CLIENT。
    • 提供的目标数据库帐号必须具有每张表的如下权限:INSERT、SELECT、UPDATE、DELETE。RDS for PostgreSQL实例的root帐号默认已具有上述权限。

    同步对象约束

    • 支持表、视图、索引、约束(主键、唯一键、空、非空)的同步,不支持外键、存储过程、触发器、函数、事件、虚拟列的同步。
    • 由于mysql中视图支持as select ... from a join b where ...等语法,pg不支持,可能会导致视图迁移失败。
    • 不支持的数据类型有: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字符。
    • 源数据库中的表名、视图名不能包含:'<>以及中文等其他非ASCII字符。

    目标数据库要求

    • 目标数据库实例的运行状态必须正常,若关系型数据库实例是主备实例,复制状态也必须正常。
    • 目标数据库实例必须有足够的磁盘空间。
    • 目标数据库的时区设置必须与源数据库一致。

PostgreSQL->RDS for PostgreSQL同步场景

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

    类型名称

    操作限制(需要人为配合)

    注意事项

    • 表7中的环境要求均不允许在同步过程中修改,直至同步结束。
    • 相互关联的数据对象要确保同时同步,避免因关联对象缺失,导致同步失败。常见的关联关系:视图引用表、存储过程/函数/触发器引用视图/表、主外键关联表等。
    • 目前仅支持VPC网络、VPN网络和专线网络同步方式。
    • 目前仅支持RDS for PostgreSQL增强版实例之间的数据同步。
    • 全量同步的每张表不超过1.6亿条记录。
    • 数据同步会自动在目标库创建与源库相同的表和结构,不需要用户先行在目标库创建表结构。
    • 同步的表必须包含主键。
    • 源库中的无日志(unlogged)表进入增量同步后, 将无法同步增量数据到目标库。
    • 主键与唯一键创建在同一个列上时,只会同步主键。
    • 若专属计算集群不支持4vCPU/8G或以上规格实例,则无法创建同步任务。

    操作须知

    • 不支持增量同步过程中,源数据库DDL的复制。源库新增表、删除表、修改表名、表新增列、修改列类型等DDL操作将不会同步至目标库,而且相关表的数据也将无法同步至目标库。
  • 数据同步对环境有一些特定的要求,请确保环境配置满足以下条件。该类型的要求系统会自动检查,并给出处理建议。
    表7 环境要求

    类型名称

    使用限制(DRS自动检查)

    数据库权限设置

    • 源数据库帐户需要具备如下权限:REPLICATION。
    • 提供的目标数据库帐号必须拥有如下权限:CREATEDB。

    同步对象约束

    • 不支持同步源库中的临时表。
    • 仅支持如下字段类型:int,serial,char,float,varchar,numeric,text,timestamp,real,bytea,boolean,smaillint,bigint,double precision,decimal,character varying,bytea,bit,timestamp,timestamptz,date,time。

    源数据库要求

    • 源数据库的库名不支持+%"<>'\ 字符。
    • 源数据库的schema和表名不支持 '." 字符。
    • 不支持源数据库中存在没有主键或唯一索引表的同步。

    目标数据库要求

    • 目标数据库实例的运行状态必须正常,若关系型数据库实例是主备实例,复制状态也必须正常。
    • 除了PostgreSQL系统数据库之外,目标数据库不能包含与源数据库同名的数据库名。
    • 目标数据库实例必须有足够的磁盘空间。
    • 目标数据库的字符集必须与源数据库一致。
    • 目标数据库的时区设置必须与源数据库一致。

RDS for MySQL->MySQL数据库同步场景

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

    类型名称

    操作限制(需要人为配合)

    注意事项

    • 基于以下原因,建议您结合启动任务的“稍后启动”功能,选择业务低峰期启动同步任务。
      • 全量同步会对源数据库有一定的访问压力。
      • 迁移无主键表时,为了确保数据一致性,会存在3s以内的单表级锁定。
      • 正在迁移的数据被其他事务锁死,导致读数据超时。
    • 相互关联的数据对象要确保同时同步,避免因关联对象缺失,导致同步失败。常见的关联关系:视图引用表、视图引用视图、存储过程/函数/触发器引用视图/表、主外键关联表等。
    • 不支持源数据库恢复到之前时间点的操作(PITR)。
    • 支持断点续传功能,但是对于无主键的表可能会出现重复插入数据的情况。
    • 当前仅MySQL->MySQL的同步支持多对一任务同步。
    • 进行表级多对一同步时,源库不允许存在无主键表。
    • 源库不允许存在与目标库同名的无主键表。
    • 进行多对一同步任务时,若多个同步任务同步同一张表,则在任务启动之后,系统会自动创建一个父任务来关联多个同步任务,父任务的命名规则为“DRS-Group-(目标库实例名)”。
    • 若专属计算集群不支持4vCPU/8G或以上规格实例,则无法创建同步任务。

    操作须知

    • 数据同步过程中,如果修改了源库或者目标库的用户名、密码,会导致同步任务失败,需要在数据复制服务控制台将上述信息重新修改正确,然后重试任务可继续进行数据同步。一般情况下不建议在同步过程中修改上述信息。
    • 数据同步过程中,如果修改了源库或者目标库端口,会导致同步任务失败。针对该情况,数据复制服务提供不同的处理机制。
      • 对于源库端口,需要在数据复制服务控制台修改为正确的端口,然后重试任务可继续进行数据同步。
      • 对于目标库端口,系统自动更新为正确的端口,需要重试任务即可进行同步。

        一般情况下不建议在同步过程中修改端口。

    • 数据同步过程中,如果源库为非本云关系型数据库实例,不支持修改IP地址。如果是本云关系型数据库实例,对于因修改IP地址导致同步任务失败的情况,系统自动更新为正确的IP地址,需要重试任务可继续进行同步。一般情况下,不建议修改IP地址。
    • 不支持强制清理binlog,否则会导致同步任务失败。
    • 当在全量同步过程中,对mysiam表执行修改操作时,可能造成数据不一致。
    • 全量同步过程中不支持DDL操作。
    • 选择表级对象迁移时,增量迁移过程中不建议对表进行重命名操作。
    • 建议将expire_log_day参数设置在合理的范围,确保恢复时断点处的binlog尚未过期,以保证服务中断后的顺利恢复。
分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

跳转到云社区