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

使用前须知

分享
更新时间: 2019/09/23 GMT+08:00

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

MySQL->RDS for MySQL同步场景

表1 同步限制

类型名称

使用限制

数据库权限设置

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

同步对象约束

支持表、主键索引、唯一索引、普通索引的同步,不支持其他对象的同步。

数据同步操作

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

源数据库要求

  • MySQL源数据库的Binlog日志必须打开,且Binlog日志格式必须为Row格式。
  • 在磁盘空间允许的情况下,建议源数据库Binlog保存时间越长越好,建议为3天。
  • 建议将expire_log_day参数设置在合理的范围,确保恢复时断点处的binlog尚未过期,以保证服务中断后的顺利恢复。
  • 增量同步时,必须设置MySQL源数据库的server_id。如果源数据库版本小于或等于MySQL5.6,server_id的取值范围在2-4294967296之间;如果源数据库版本大于或等于MySQL5.7,server_id的取值范围在1-4294967296之间。
  • 源数据库中的库名不能包含:'<`>/\以及非ASCII字符。
  • 源数据库中的表名、视图名不能包含:'<>/\以及非ASCII字符。
  • 不支持非Myisam、InnoDB的表同步到RDS。

目标数据库要求

  • 目标数据库实例的运行状态必须正常,若数据库实例是主备实例,复制状态也必须正常。
  • 目标数据库实例必须有足够的磁盘空间。
  • 除了MySQL系统数据库之外,当目标库和源库同名时,目标数据库中若存在与源库同名的表,则表结构必须与源库保持一致。
  • 目标数据库的字符集必须与源数据库一致。
  • 目标数据库的时区设置必须与源数据库一致。
  • DRS同步时会有大量数据写入目标库,目标库max_allowed_packet 参数过小会导致无法写入,建议将目标库max_allowed_packet参数值设置为大于100MB。

MySQL->RDS for PostgreSQL同步场景

表2 同步限制

类型名称

使用限制

数据库权限设置

  • 源数据库帐户需要具备如下权限: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。

数据同步操作

  • 目前不支持多个源数据库到同一个目标数据库的数据同步。
  • 不支持源数据库进行恢复操作。
  • 无主键表无法保证同步前后数据完全一致。
  • 索引迁移不区分索引类型,迁移到目标数据库都是btree索引。
  • 相互关联的数据对象要确保同时同步,避免同步因关联对象缺失,导致同步失败。常见的关联关系:视图引用表、视图引用视图等。
  • 若专属计算集群不支持4vCPU/8G或以上规格实例,则无法创建同步任务。
  • 相互关联的数据对象要确保同时同步,避免因关联对象缺失,导致同步失败。常见的关联关系:视图引用表、视图引用视图等。

源数据库要求

  • MySQL源数据库的Binlog日志必须打开,且Binlog日志格式必须为Row格式。
  • 在磁盘空间允许的情况下,建议源数据库Binlog保存时间越长越好,建议为3天。
  • 建议将expire_log_day参数设置在合理的范围,确保恢复时断点处的binlog尚未过期,以保证服务中断后的顺利恢复。
  • 必须设置MySQL源数据库的server-id,server-id的取值范围在2-4294967296之间。
  • 源数据库中的库名不能包含:'.<>以及中文等其他非ASCII字符。
  • 源数据库中的表名、视图名不能包含:'<>以及中文等其他非ASCII字符。

目标数据库要求

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

PostgreSQL->RDS for PostgreSQL同步场景

表3 同步限制

类型名称

使用限制

数据库权限设置

  • 源数据库帐户需要具备如下权限: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。

数据同步操作

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

源数据库配置

  • 源数据库的库名不支持+%"<>'\ 字符。
  • 源数据库的schema和表名不支持 '." 字符。

目标数据库配置

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

    相关文档

    相关产品

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

提交成功!

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

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

*必选

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

字符长度不能超过200

提交反馈 取消

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

跳转到云社区