华为云用户手册

  • 支持的源和目标数据库 表1 支持的数据库 源数据库 目标数据库 本地自建MySQL数据库(MySQL 5.5、5.6、5.7、8.0版本) E CS 自建MySQL数据库(MySQL 5.5、5.6、5.7、8.0版本) 其他云上MySQL数据库(MySQL 5.5、5.6、5.7、8.0版本) RDS for MySQL(5.5、5.6、5.7、8.0版本) TaurusDB标准版(5.7、8.0版本) GaussDB 分布式版(MySQL兼容模式)(版本数据库内核版本为505.2及以下版本,内核版本与数据库引擎版本的关系请参考云数据库GaussDB的数据库引擎版本说明。)
  • 支持的同步对象范围 在使用DRS进行同步时,不同类型的同步任务,支持的同步对象范围不同,详细情况可参考表3。DRS会根据用户选择,在“预检查”阶段对同步对象进行自动检查。 表3 支持的同步对象 类型名称 使用须知 同步对象范围 仅支持同步表结构、表数据、索引信息。 仅支持同步MyISAM和InnoDB表。 不支持同步存储过程等其他数据库对象。 全量和增量同步不支持隐藏列(INVISIBLE),隐藏列是MySQL 8.0.23开始支持的特性,例如: CREATE TABLE `test11` ( `id` int NOT NULL, `c1` int DEFAULT NULL /*!80023 INVISIBLE */, PRIMARY KEY (`id`));
  • 支持的源和目标数据库 表1 支持的数据库 源数据库 目标数据库 本地自建MySQL数据库(MySQL 5.5、5.6、5.7、8.0版本) ECS自建MySQL数据库(MySQL 5.5、5.6、5.7、8.0版本) 其他云上MySQL数据库(MySQL 5.5、5.6、5.7、8.0版本) RDS for MySQL(5.5、5.6、5.7、8.0版本) TaurusDB标准版(5.7、8.0版本) RDS for PostgreSQL(9.5、9.6、10、11、12、13、14、15、16版本)
  • 数据库账号权限要求 在使用DRS进行同步时,连接源库和目标库的数据库账号需要满足以下权限要求,才能启动实时同步任务。不同类型的同步任务,需要的账号权限也不同,详细可参考表2进行赋权。DRS会在“预检查”阶段对数据库账号权限进行自动检查,并给出处理建议。 表2 数据库账号权限 类型名称 全量同步 全量+增量同步 源数据库连接账号 需要具备如下最小权限: SELECT 需要具备如下最小权限: SELECT、LOCK TABLES、REPLICATION SLAVE、REPLICATION CLIENT。全量+增量任务,当源数据库为8.0.2及以上版本时,还需要授予XA_RECOVER_ADMIN权限,以防启动或编辑时未提交的XA事务导致数据有损。 目标数据库连接账号 需要具备如下最小权限: SELECT、INSERT、UPDATE、DELETE 需要具备如下最小权限: 需要有表的OWNER权限或USERSUPER权限。 建议创建单独用于DRS任务连接的数据库账号,避免因为数据库账号密码修改,导致的任务连接失败。 连接源和目标数据库的账号密码修改后,请参考修改连接信息章节修改DRS任务的连接信息,避免任务连接失败后自动重试,导致数据库账号被锁定影响使用。
  • 支持的同步对象范围 在使用DRS进行同步时,不同类型的同步任务,支持的同步对象范围不同,详细情况可参考表4。DRS会根据用户选择,在“预检查”阶段对同步对象进行自动检查。 表4 支持的同步对象 类型名称 使用须知 同步对象范围 支持表、主键索引、唯一索引、普通索引、存储过程、视图、函数的同步。 仅支持MyISAM和InnoDB表的同步。 不支持事件(EVENT)和触发器(TRIGGER)的同步。 全量和增量同步不支持隐藏列(INVISIBLE),隐藏列是MySQL 8.0.23开始支持的特性,例如: CREATE TABLE `test11` ( `id` int NOT NULL, `c1` int DEFAULT NULL /*!80023 INVISIBLE */, PRIMARY KEY (`id`));
  • 源数据库账号权限要求 表2 源数据库账号权限 类型 全量同步 全量+增量同步、增量同步 源数据库连接账号 需要具备如下最小权限: SELECT、SHOW VIEW。 需要具备如下最小权限: SELECT、SHOW VIEW、LOCK TABLES、REPLICATION SLAVE、REPLICATION CLIENT。全量+增量任务,当源数据库为8.0.2及以上版本时,还需要授予XA_RECOVER_ADMIN权限,以防启动或编辑时未提交的XA事务导致数据有损。 赋权示例SQL SELECT、SHOW VIEW、EVENT、LOCK TABLES是非全局权限,参考语句如下: GRANT SELECT, SHOW VIEW, EVENT, LOCK TABLES ON [待迁移数据库].* TO 'user1'; REPLICATION SLAVE、REPLICATION CLIENT是全局权限,必须单独开启。参考语句如下: GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'user1'; 建议创建单独用于DRS任务连接的数据库账号,避免因为数据库账号密码修改,导致的任务连接失败。 连接源和目标数据库的账号密码修改后,请参考修改连接信息章节修改DRS任务的连接信息,避免任务连接失败后自动重试,导致数据库账号被锁定影响使用。
  • 支持的源和目标数据库 表1 支持的数据库 源数据库 目标数据库 本地自建MySQL数据库(MySQL 5.5、5.6、5.7、8.0版本) ECS自建MySQL数据库(MySQL 5.5、5.6、5.7、8.0版本) 其他云上MySQL数据库(MySQL 5.5、5.6、5.7、8.0版本) RDS for MySQL(5.5、5.6、5.7、8.0版本) TaurusDB标准版(5.7、8.0版本) RDS for MySQL(5.5、5.6、5.7、8.0版本) TaurusDB标准版(5.7、8.0版本) 说明: 仅支持目标库版本等于或高于源库版本。
  • 目标数据库账号权限要求 表3 目标数据库账号权限 类型 所需权限 目标数据库连接账号 需要具备如下最小权限: SELECT、CREATE、DROP、DELETE、INSERT、UPDATE、ALTER、CREATE VIEW、CREATE ROUTINE、REFEREN CES 。 RDS for MySQ L实例 的root账户默认已具备上述权限。当目标库为8.0.14-8.0.18版本时,还需要有SESSION_VARIABLES_ADMIN权限。 赋权示例SQL SELECT、SHOW VIEW、EVENT、LOCK TABLES是非全局权限,参考语句如下: GRANT SELECT, SHOW VIEW, EVENT, LOCK TABLES ON [待迁移数据库].* TO 'user1'; REPLICATION SLAVE、REPLICATION CLIENT是全局权限,必须单独开启。参考语句如下: GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'user1'; 建议创建单独用于DRS任务连接的数据库账号,避免因为数据库账号密码修改,导致的任务连接失败。 连接源和目标数据库的账号密码修改后,请参考修改连接信息章节修改DRS任务的连接信息,避免任务连接失败后自动重试,导致数据库账号被锁定影响使用。
  • 支持的源和目标数据库 表1 支持的数据库 源数据库 目标数据库 DDS实例(3.2、3.4、4.0、4.2、4.4、5.0版本) 说明: DDS 5.0版本当前仅支持副本集,不支持集群。 本地自建Mongo数据库(3.2、3.6、3.4、4.0、4.2、4.4、5.0版本) ECS自建Mongo数据库(3.2、3.6、3.4、4.0、4.2、4.4、5.0版本) 其他云上Mongo数据库(3.2、3.6、3.4、4.0、4.2、4.4、5.0版本) 说明: 仅支持目标库版本等于或高于源库版本。 DDS 5.0版本当前仅支持副本集,不支持集群。
  • 支持的迁移对象范围 在使用DRS进行迁移时,不同类型的迁移任务,支持的迁移对象范围不同,详细情况可参考表2。DRS会根据用户选择,在“预检查”阶段对迁移对象进行自动检查。 表2 支持的迁移对象 类型名称 使用须知 迁移对象范围 支持选择表级、库级或实例级(全部迁移)。 副本集:目前只支持集合(包括验证器,是否是固定集合),索引和视图的迁移。 集群:目前只支持集合(包括验证器,是否是固定集合),分片键,索引和视图的迁移。 单节点:目前只支持集合(包括验证器,是否是固定集合),索引和视图的迁移。 不支持迁移系统库(如local、admin、config等)的迁移,用户名和角色需要在目标库手动创建。 不支持视图的创建语句中有正则表达式。 不支持_id字段没有索引的集合。 不支持BinData()的第一个参数为2。 不支持源库集合的String类型字段中存储非UTF-8类型字符串,否则会导致迁移前后数据不一致。 全量和增量阶段都不支持时序集合。
  • 数据库账号权限要求 在使用DRS进行迁移时,连接源库和目标库的数据库账号需要满足以下权限要求,才能启动实时迁移任务。不同类型的迁移任务,需要的账号权限也不同,详细可参考表3进行赋权。DRS会在“预检查”阶段对数据库账号权限进行自动检查,并给出处理建议。 表3 数据库账号权限 类型名称 全量迁移 全量+增量迁移 源数据库连接账号 副本集:连接源数据库的用户需要有admin库的readAnyDatabase权限。 单节点:连接源数据库的用户需要有admin库的readAnyDatabase权限。 集群:连接源数据库的用户需要有admin库的readAnyDatabase权限,有config库的read权限。 副本集:连接源数据库的用户需要有admin库的readAnyDatabase权限,有local库的read权限。 单节点:连接源数据库的用户需要有admin库的readAnyDatabase权限,有local库的read权限。 目标数据库连接账号 连接目标数据库的用户需要有admin库的dbAdminAnyDatabase权限,有目标数据库的readWrite权限。 对于目标数据库是集群的实例,迁移账号还要有admin库的clusterManager权限。 建议创建单独用于DRS任务连接的数据库账号,避免因为数据库账号密码修改,导致的任务连接失败。 连接源和目标数据库的账号密码修改后,请参考修改连接信息章节修改DRS任务的连接信息,避免任务连接失败后自动重试,导致数据库账号被锁定影响使用。 副本集用户赋权参考语句:连接源数据库的用户需要有admin库的readAnyDatabase权限和local库的read权限。 db.grantRolesToUser("用户名",[{role:"readAnyDatabase",db:"admin"}, {role:"read",db:"local"}]) 集群用户赋权参考语句:连接源数据库mongos节点的用户需要有admin库的readAnyDatabase权限,有config库的read权限。 db.grantRolesToUser("用户名",[{role:"readAnyDatabase",db:"admin"}, {role:"read",db:"config"}])
  • 使用须知 为保证任务的正常运行,DRS提供了自动化的检查方法,在您启动DRS任务前,会针对源数据库和目标数据库的相关配置、条件进行检查。主要的检查项和对应的处理建议请参考DRS预检查项一览表。除了预检查项目之外,您还需要注意的事情如表4所示 表4 注意事项 类型名称 使用和操作限制 源数据库限制 源数据库的库名不能包含/\."$和空格,集合名和视图名中不能包含$字符或以system.开头。 多个源数据库迁移到同一个目标数据库时,所选的待迁移数据库的库名不能重复。 使用限制 通用: 整个迁移过程中,不允许修改、删除连接源和目标数据库的用户的用户名、密码、权限,或修改源和目标数据库的端口号。 整个迁移过程中,不允许对正在迁移中的目标数据库进行修改操作(包括但不限于DDL、DML操作)。 整个迁移过程中,不支持源数据库主备切换导致数据回滚的情况。 整个迁移过程中,不支持insert、update源库大于16MB的文档。 整个迁移过程中,源数据库不允许手动执行sh.moveChunk()操作,否则将导致迁移数据不一致。 全量迁移阶段: 任务启动和全量数据迁移阶段,请不要在源数据库执行DDL操作,否则可能导致任务异常。 增量迁移阶段: 选择集合迁移时,增量迁移过程中不建议对集合进行重命名操作。 为保证迁移的性能,任务增量阶段,会集合级的进行并发回放。特殊地,以下情况只支持单线程写入,不支持并发回放: 集合的索引中有unique key时; 集合属性的capped为true时; 这种情况可能会导致任务时延增高。 数据对比: 建议在源库的业务低峰期进行数据比对,防止误报不一致数据,以及减少对源库和DRS任务的冲击。 在增量同步过程中做对比时,源库若存在写入,则对比结果可能不一致。 行对比时,集群实例如果存在孤儿文档或者正在进行chunk迁移,会导致返回的行数不准确,对比结果不一致。详细情况可参考MongoDB官方文档。 其他限制 对于在源数据库已经存在TTL索引的集合,或者在增量迁移期间在源库数据创建了TTL索引的集合,由于源数据库和目标库数据库时区,时钟的不一致,不能保证迁移完成之后数据的一致性。 压缩参数block_compressor的取值,根据源库对应集合的stats().wiredTiger.creationString.block_compressor来决定,如果目标库已经存在对应的空集合,则不迁移压缩参数;特殊的,对于不支持的压缩参数,按照目标库实例的net.compression.compressors参数决定。当目标库为DDS 4.2版本时,由于目标库不支持压缩参数的设置,DRS不迁移压缩参数。 出云迁移的目标数据库如果是副本集,则建议目标数据库填写所有的主节点和备节点信息,以防主备切换影响迁移任务。如果是填写主备节点,注意填写的节点信息必须属于同一个副本集实例。 出云迁移的目标数据库如果是集群,则建议填写多个mongos信息,以防单个mongos节点故障影响迁移任务,并且多个mongos信息还可以实现负载均衡。如果填写多个mongos信息,注意所有所填的信息必须属于同一个集群实例。 为了提高迁移的速度,在开始迁移之前,建议在源数据库删掉不需要的索引,只保留必须的索引。在迁移过程中不建议对源库创建索引,如果必须要创建索引,请使用后台的方式创建索引。 为了防止回环,不支持在相同的源和目标库同时启动入云和出云任务。
  • 支持的源和目标数据库 表1 支持的数据库 源数据库 目标数据库 RDS for MySQL(5.5、5.6、5.7、8.0版本) TaurusDB标准版(5.7、8.0版本) 本地自建数据库(MySQL 5.5、5.6、5.7、8.0版本) ECS自建数据库(MySQL 5.5、5.6、5.7、8.0版本) 其他云上数据库(MySQL 5.5、5.6、5.7、8.0版本) RDS for MySQL(5.5、5.6、5.7、8.0版本) 说明: 仅支持目标库版本等于或高于源库版本。
  • 数据库账号权限要求 在使用DRS进行迁移时,连接源库和目标库的数据库账号需要满足以下权限要求,才能启动实时迁移任务。不同类型的迁移任务,需要的账号权限也不同,详细可参考表2进行赋权。DRS会在“预检查”阶段对数据库账号权限进行自动检查,并给出处理建议。 表2 数据库账号权限 类型名称 全量迁移 全量+增量迁移 源数据库连接账号 需要具备如下最小权限: SELECT、SHOW VIEW、EVENT。 用户迁移时,如果源数据库为8.0版本,需要有mysql.user表的SELECT权限;如果为5.7及以下版本,则需要mysql系统库的SELECT权限。 需要具备如下最小权限: SELECT、SHOW VIEW、EVENT、LOCK TABLES、REPLICATION SLAVE、REPLICATION CLIENT。 用户迁移时,如果源数据库为8.0版本,需要有mysql.user表的SELECT权限;如果为5.7及以下版本,则需要mysql系统库的SELECT权限。 目标数据库连接账号 需要具备如下最小权限: SELECT、CREATE、ALTER、DROP、DELETE、INSERT、UPDATE、INDEX、EVENT、CREATE VIEW、CREATE ROUTINE、TRIGGER、REFERENCES、WITH GRANT OPTION。当目标库为8.0.14-8.0.18版本时,还需要有SESSION_VARIABLES_ADMIN权限。 用户迁移时,需要有mysql库的SELECT、INSERT、UPDATE、DELETE权限。 建议创建单独用于DRS任务连接的数据库账号,避免因为数据库账号密码修改,导致的任务连接失败。 连接源和目标数据库的账号密码修改后,请参考修改连接信息章节修改DRS任务的连接信息,避免任务连接失败后自动重试,导致数据库账号被锁定影响使用。 表2中为DRS任务所需的最小权限,如果需要DRS任务迁移grant授权的情况下,请确保DRS任务的连接账号本身具备对应权限,否则可能因为grant授权执行失败导致目标库对应用户缺少授权。例如DRS任务的连接账号本身不要求process权限,如果需要通过DRS任务迁移process授权则需要保证DRS任务的连接账号具备该权限。 表2中为DRS任务所需的最小权限,如果配置DRS任务同步源库业务产生的DDL,目标库需要授予DRS任务连接账号对应DDL的执行权限,否则可能出现DDL回放失败的情况。
  • 注意事项 为保证任务的正常运行,DRS提供了自动化的检查方法,在您启动DRS任务前,会针对源数据库和目标数据库的相关配置、条件进行检查。主要的检查项和对应的处理建议请参考DRS预检查项一览表。除了预检查项目之外,您还需要注意的事情如表4所示 表4 注意事项 类型名称 使用和操作限制 源数据库限制 源数据库不能是GeminiDB Mongo实例。 源数据库的库名不能包含/\."$和空格,集合名和视图名中不能包含$字符或以system.开头。 多个源数据库迁移到同一个目标数据库时,所选的待迁移数据库的库名不能重复。 副本集:MongoDB数据库的副本集实例状态必须正常,要存在主节点。 使用限制 通用: 整个迁移过程中,不允许修改、删除连接源和目标数据库的用户的用户名、密码、权限,或修改源和目标数据库的端口号。 整个迁移过程中,不允许对正在迁移中的目标数据库进行修改操作(包括但不限于DDL、DML操作)。 整个迁移过程中,不支持源数据库主备切换导致数据回滚的情况。 整个迁移过程中,不支持insert、update源库大于16MB的文档。 整个迁移过程中,源数据库不允许手动执行sh.moveChunk()操作,否则将导致迁移数据不一致。 全量迁移阶段: 任务启动和全量数据迁移阶段,请不要在源数据库执行DDL操作,否则可能导致任务异常。 增量迁移阶段: 选择集合迁移时,增量迁移过程中不建议对集合进行重命名操作。 数据对比: 建议在源库的业务低峰期进行数据比对,防止误报不一致数据,以及减少对源库和DRS任务的冲击。 在增量同步过程中做对比时,源库若存在写入,则对比结果可能不一致。 行对比时,集群实例如果存在孤儿文档或者正在进行chunk迁移,会导致返回的行数不准确,对比结果不一致。详细情况可参考MongoDB官方文档。 其他限制 源数据库为非集群实例时,增量迁移阶段支持如下操作: 支持数据库(database)新建、删除。 支持文档(document)新增、删除、更新。 支持集合(collection)新建、删除。 支持索引(index)新建、删除。 支持视图(view)新建,删除。 支持convertToCapped、collMod、renameCollection命令。 源库是集群实例时,集群到集群的全量+增量迁移,全量阶段和增量阶段,不允许对迁移对象做删除操作,否则会导致任务失败。 对于在源数据库已经存在TTL索引的集合,或者在增量迁移期间在源库数据创建了TTL索引的集合,由于源数据库和目标库数据库时区,时钟的不一致,不能保证迁移完成之后数据的一致性。 由于目标库不支持压缩参数的设置,DRS不迁移压缩参数,迁移任务不报错。 如果源数据库的MongoDB服务不是单独部署的,而是和其他的服务部署在同一台机器,则必须要给源数据库的wiredTiger引擎加上cacheSizeGB的参数配置,建议值设为最小空闲内存的一半。 如果源数据库是副本集,则建议填写所有的主节点和备节点信息,以防主备切换影响迁移任务。如果填写的是主备多个节点的信息,注意所有的节点信息必须属于同一个副本集实例。
  • 数据库账号权限要求 在使用DRS进行迁移时,连接源库和目标库的数据库账号需要满足以下权限要求,才能启动实时迁移任务。不同类型的迁移任务,需要的账号权限也不同,详细可参考表3进行赋权。DRS会在“预检查”阶段对数据库账号权限进行自动检查,并给出处理建议。 表3 数据库账号权限 类型名称 全量迁移 全量+增量迁移 源数据库连接账号 副本集:连接源数据库的用户需要有admin库的readAnyDatabase权限。 单节点:连接源数据库的用户需要有admin库的readAnyDatabase权限。 集群:连接源数据库的用户需要有admin库的readAnyDatabase权限,有config库的read权限。 如果需要迁移源数据库用户和角色信息,连接源数据库和目标库数据库的用户需要有admin数据库的系统表system.users、system.roles的read权限。 副本集:连接源数据库的用户需要有admin库的readAnyDatabase权限,有local库的read权限。 单节点:连接源数据库的用户需要有admin库的readAnyDatabase权限,有local库的read权限。 集群:连接源数据库mongos节点的用户需要有admin库的readAnyDatabase权限,有config库的read权限,连接源数据库分片节点的用户需要有admin库的readAnyDatabase权限,有local库的read权限。 如果需要迁移源数据库用户和角色信息,连接源数据库和目标库数据库的用户需要有admin数据库的系统表system.users、system.roles的read权限。 目标数据库连接账号 连接目标数据库的用户需要有admin库的dbAdminAnyDatabase权限,有目标数据库的readWrite权限。 对于目标数据库是集群的实例,迁移账号还要有admin库的clusterManager权限。 建议创建单独用于DRS任务连接的数据库账号,避免因为数据库账号密码修改,导致的任务连接失败。 连接源和目标数据库的账号密码修改后,请参考修改连接信息章节修改DRS任务的连接信息,避免任务连接失败后自动重试,导致数据库账号被锁定影响使用。 副本集用户赋权参考语句:连接源数据库的用户需要有admin库的readAnyDatabase权限和local库的read权限。 db.grantRolesToUser("用户名",[{role:"readAnyDatabase",db:"admin"}, {role:"read",db:"local"}]) 集群用户赋权参考语句:连接源数据库mongos节点的用户需要有admin库的readAnyDatabase权限,有config库的read权限。 db.grantRolesToUser("用户名",[{role:"readAnyDatabase",db:"admin"}, {role:"read",db:"config"}])
  • 支持的迁移对象范围 在使用DRS进行迁移时,不同类型的迁移任务,支持的迁移对象范围不同,详细情况可参考表2。DRS会根据用户选择,在“预检查”阶段对迁移对象进行自动检查。 表2 支持的迁移对象 类型名称 使用须知 迁移对象范围 支持选择表级、库级或实例级(全部迁移)。 副本集:目前只支持集合(包括验证器,是否是固定集合),索引和视图的迁移。 集群:目前只支持集合(包括验证器,是否是固定集合),分片键,索引和视图的迁移。 单节点:目前只支持集合(包括验证器,是否是固定集合),索引和视图的迁移。 不支持视图的创建语句中有正则表达式。 不支持_id字段没有索引的集合。 不支持BinData()的第一个参数为2。 不支持范围分片的情况下maxKey当主键。 不支持源库集合的String类型字段中存储非UTF-8类型字符串,否则会导致迁移前后数据不一致。
  • 支持的源和目标数据库 表1 支持的数据库 源数据库 目标数据库 本地自建Mongo数据库(3.2、3.4、3.6、4.0、4.2、4.4、5.0版本) ECS自建Mongo数据库(3.2、3.4、3.6、4.0、4.2、4.4、5.0版本) 其他云上Mongo数据库(3.2、3.4、3.6、4.0、4.2、4.4、5.0版本) DDS实例(3.2、3.4、4.0、4.2、4.4、5.0版本) 说明: 源数据库为DDS 3.2版本集群实例时,仅支持单全量迁移,不支持增量迁移。 DDS 5.0版本当前仅支持副本集,不支持集群。 如果源库选择DDS实例,则此链路的数据库引擎是“DDS”,否则,此链路的数据库引擎是“MongoDB(数据库种类)-DDS”。 DDS实例(3.4、4.0、4.2、4.4、5.0版本) 说明: 仅支持目标库版本等于或高于源库版本。 DDS 5.0版本当前仅支持副本集,不支持集群。 可通过以下命令,查询源数据库版本是否符合要求的内容: db.version()
  • 支持的迁移对象范围 在使用DRS进行迁移时,不同类型的迁移任务,支持的迁移对象范围不同,详细情况可参考表3。DRS会根据用户选择,在“预检查”阶段对迁移对象进行自动检查。 表3 支持的迁移对象 类型名称 使用须知 迁移对象范围 支持选择表级、库级或实例级(全部迁移)。 副本集:目前只支持集合(包括验证器,是否是固定集合),索引和视图的迁移。 集群:目前只支持集合(包括验证器,是否是固定集合),分片键,索引和视图的迁移。 单节点:目前只支持集合(包括验证器,是否是固定集合),索引和视图的迁移。 只支持迁移用户数据和源数据库的账号信息,不支持迁移系统库(如local、admin、config等)和系统集合,如果业务数据在系统库下,则需要先将业务数据移动到用户数据库下,可以使用renameCollection命令进行移出。 不支持视图的创建语句中有正则表达式。 不支持_id字段没有索引的集合。 不支持BinData()的第一个参数为2。 不支持范围分片的情况下maxKey当主键。 不支持源库集合的String类型字段中存储非UTF-8类型字符串,否则会导致迁移前后数据不一致。 源库为4.4或更高版本集群时,如果目标库低于5.0版本,不支持复合哈希分片键和复合哈希索引,如果目标库为5.0版本则支持复合哈希分片键和复合哈希索引。 源库为4.4或更高版本副本集时,如果目标库低于5.0版本,不支持复合哈希索引,如果目标库为5.0版本则支持复合哈希索引。 全量和增量阶段都不支持时序集合。 增量阶段不支持同步集群分片键。
  • 数据库账号权限要求 在使用DRS进行迁移时,连接源库和目标库的数据库账号需要满足以下权限要求,才能启动实时迁移任务。不同类型的迁移任务,需要的账号权限也不同,详细可参考表2进行赋权。DRS会在“预检查”阶段对数据库账号权限进行自动检查,并给出处理建议。 表2 数据库账号权限 类型名称 全量迁移 全量+增量迁移 源数据库连接账号 副本集:连接源数据库的用户需要有admin库的readAnyDatabase权限。 单节点:连接源数据库的用户需要有admin库的readAnyDatabase权限。 集群:连接源数据库的用户需要有admin库的readAnyDatabase权限,有config库的read权限。 如果需要迁移源数据库用户和角色信息,连接源数据库和目标库数据库的用户需要有admin数据库的系统表system.users、system.roles的read权限。 副本集:连接源数据库的用户需要有admin库的readAnyDatabase权限,有local库的read权限。 单节点:连接源数据库的用户需要有admin库的readAnyDatabase权限,有local库的read权限。 集群:连接源数据库mongos节点的用户需要有admin库的readAnyDatabase权限,有config库的read权限,连接源数据库分片节点的用户需要有admin库的readAnyDatabase权限,有local库的read权限。 如果需要迁移源数据库用户和角色信息,连接源数据库和目标库数据库的用户需要有admin数据库的系统表system.users、system.roles的read权限。 目标数据库连接账号 连接目标数据库的用户需要有admin库的dbAdminAnyDatabase权限,有目标数据库的readWrite权限。 对于目标数据库是集群的实例,迁移账号还要有admin库的clusterManager权限。 建议创建单独用于DRS任务连接的数据库账号,避免因为数据库账号密码修改,导致的任务连接失败。 连接源和目标数据库的账号密码修改后,请参考修改连接信息章节修改DRS任务的连接信息,避免任务连接失败后自动重试,导致数据库账号被锁定影响使用。 副本集用户赋权参考语句:连接源数据库的用户需要有admin库的readAnyDatabase权限和local库的read权限。 db.grantRolesToUser("用户名",[{role:"readAnyDatabase",db:"admin"}, {role:"read",db:"local"}]) 集群用户赋权参考语句:连接源数据库mongos节点的用户需要有admin库的readAnyDatabase权限,有config库的read权限。 db.grantRolesToUser("用户名",[{role:"readAnyDatabase",db:"admin"}, {role:"read",db:"config"}])
  • 数据库账号权限要求 在使用DRS进行迁移时,连接源库和目标库的数据库账号需要满足以下权限要求,才能启动实时迁移任务。不同类型的迁移任务,需要的账号权限也不同,详细可参考表2进行赋权。DRS会在“预检查”阶段对数据库账号权限进行自动检查,并给出处理建议。 表2 数据库账号权限 类型名称 全量迁移 全量+增量迁移 源数据库连接账号 源物理分片数据库账号需要具备如下权限: SELECT、SHOW VIEW、EVENT。 源物理分片数据库账号需要具备如下权限: SELECT、SHOW VIEW、EVENT、LOCK TABLES、REPLICATION SLAVE、REPLICATION CLIENT。当源数据库为8.0.2及以上版本时,还需要授予XA_RECOVER_ADMIN权限,以防启动时未提交的XA事务导致数据有损。 目标数据库连接账号 目标中间件账户需要具备以下基本权限:CREATE、DROP、ALTER、 INDEX、 INSERT、DELETE、 UPDATE、 SELECT, 同时必须具备扩展权限:全表SELECT权限。 目标中间件账户必须具备对所迁移数据库的权限。 建议创建单独用于DRS任务连接的数据库账号,避免因为数据库账号密码修改,导致的任务连接失败。 连接源和目标数据库的账号密码修改后,请参考修改连接信息章节修改DRS任务的连接信息,避免任务连接失败后自动重试,导致数据库账号被锁定影响使用。
  • 数据库账号权限要求 在使用DRS进行迁移时,连接源库和目标库的数据库账号需要满足以下权限要求,才能启动实时迁移任务。不同类型的迁移任务,需要的账号权限也不同,详细可参考表2进行赋权。DRS会在“预检查”阶段对数据库账号权限进行自动检查,并给出处理建议。 表2 数据库账号权限 类型名称 全量迁移 全量+增量迁移 源数据库连接账号 需要具备如下最小权限: SELECT、SHOW VIEW、EVENT。 用户迁移时,如果源数据库为8.0版本,需要有mysql.user表的SELECT权限;如果为5.7及以下版本,则需要mysql系统库的SELECT权限,源数据库为阿里云数据库,则账户需要同时具有mysql.user和mysql.user_view的SELECT权限。 需要具备如下最小权限: SELECT、SHOW VIEW、EVENT、LOCK TABLES、REPLICATION SLAVE、REPLICATION CLIENT。 用户迁移时,如果源数据库为8.0版本,需要有mysql.user表的SELECT权限;如果为5.7及以下版本,则需要mysql系统库的SELECT权限,源数据库为阿里云数据库,则账户需要同时具有mysql.user和mysql.user_view的SELECT权限。当源数据库为8.0.2及以上版本时,还需要授予XA_RECOVER_ADMIN权限,以防启动时未提交的XA事务导致数据有损。 目标数据库连接账号 需要具备如下最小权限: SELECT、CREATE、ALTER、DROP、DELETE、INSERT、UPDATE、INDEX、EVENT、CREATE VIEW、CREATE ROUTINE、TRIGGER、REFERENCES、WITH GRANT OPTION。当目标库为8.0.14-8.0.18版本时,还需要有SESSION_VARIABLES_ADMIN权限。 用户迁移时,需要有mysql库的SELECT、INSERT、UPDATE、DELETE权限。 建议创建单独用于DRS任务连接的数据库账号,避免因为数据库账号密码修改,导致的任务连接失败。 连接源和目标数据库的账号密码修改后,请参考修改连接信息章节修改DRS任务的连接信息,避免任务连接失败后自动重试,导致数据库账号被锁定影响使用。 表2中为DRS任务所需的最小权限,如果需要DRS任务迁移grant授权的情况下,请确保DRS任务的连接账号本身具备对应权限,否则可能因为grant授权执行失败导致目标库对应用户缺少授权。例如DRS任务的连接账号本身不要求process权限,如果需要通过DRS任务迁移process授权则需要保证DRS任务的连接账号具备该权限。 表2中为DRS任务所需的最小权限,如果配置DRS任务同步源库业务产生的DDL,目标库需要授予DRS任务连接账号对应DDL的执行权限,否则可能出现DDL回放失败的情况。
  • 数据库账号权限要求 在使用DRS进行迁移时,连接源库和目标库的数据库账号需要满足以下权限要求,才能启动实时迁移任务。不同类型的迁移任务,需要的账号权限也不同,详细可参考表2进行赋权。DRS会在“预检查”阶段对数据库账号权限进行自动检查,并给出处理建议。 表2 数据库账号权限 类型名称 全量迁移 全量+增量迁移 源数据库连接账号 需要具备如下最小权限: SELECT、SHOW VIEW、EVENT。 需要具备如下最小权限: SELECT、SHOW VIEW、EVENT、LOCK TABLES、REPLICATION SLAVE、REPLICATION CLIENT。当源数据库为8.0.2及以上版本时,还需要授予XA_RECOVER_ADMIN权限,以防启动时未提交的XA事务导致数据有损。 目标数据库连接账号 目标中间件账户需要具备以下基本权限:CREATE、DROP、ALTER、 INDEX、 INSERT、DELETE、 UPDATE、 SELECT, 同时必须具备扩展权限:全表SELECT权限。 目标中间件账户必须具备对所迁移数据库的权限。 建议创建单独用于DRS任务连接的数据库账号,避免因为数据库账号密码修改,导致的任务连接失败。 连接源和目标数据库的账号密码修改后,请参考修改连接信息章节修改DRS任务的连接信息,避免任务连接失败后自动重试,导致数据库账号被锁定影响使用。
  • 支持的源和目标数据库 表1 支持的数据库 源数据库 目标数据库 本地自建数据库(MySQL 5.5、5.6、5.7、8.0版本) ECS自建数据库(MySQL 5.5、5.6、5.7、8.0版本) 其他云上数据库(MySQL 5.5、5.6、5.7、8.0版本) RDS for MySQL(5.5、5.6、5.7、8.0版本) TaurusDB标准版(5.7、8.0版本) RDS for MySQL(5.5、5.6、5.7、8.0版本) TaurusDB标准版(5.7、8.0版本) 说明: 仅支持目标库版本等于或高于源库版本。
  • 数据库账号权限要求 在使用DRS进行迁移时,连接源库和目标库的数据库账号需要满足以下权限要求,才能启动实时迁移任务。不同类型的迁移任务,需要的账号权限也不同,详细可参考表2进行赋权。DRS会在“预检查”阶段对数据库账号权限进行自动检查,并给出处理建议。 表2 数据库账号权限 类型名称 全量迁移 全量+增量迁移 源数据库连接账号 需要具备如下最小权限: SELECT、SHOW VIEW、EVENT。 用户迁移时,如果源数据库为8.0版本,需要有mysql.user表的SELECT权限;如果为5.7及以下版本,则需要mysql系统库的SELECT权限,源数据库为阿里云数据库,则账户需要同时具有mysql.user和mysql.user_view的SELECT权限。 需要具备如下最小权限: SELECT、SHOW VIEW、EVENT、LOCK TABLES、REPLICATION SLAVE、REPLICATION CLIENT。 用户迁移时,如果源数据库为8.0版本,需要有mysql.user表的SELECT权限;如果为5.7及以下版本,则需要mysql系统库的SELECT权限,源数据库为阿里云数据库,则账户需要同时具有mysql.user和mysql.user_view的SELECT权限。当源数据库为8.0.2及以上版本时,还需要授予XA_RECOVER_ADMIN权限,以防启动时未提交的XA事务导致数据有损。 目标数据库连接账号 需要具备如下最小权限: SELECT、CREATE、ALTER、DROP、DELETE、INSERT、UPDATE、INDEX、EVENT、CREATE VIEW、CREATE ROUTINE、TRIGGER、REFERENCES、WITH GRANT OPTION。当目标库为8.0.14-8.0.18版本时,还需要有SESSION_VARIABLES_ADMIN权限。 用户迁移时,需要有mysql库的SELECT、INSERT、UPDATE、DELETE权限。 建议创建单独用于DRS任务连接的数据库账号,避免因为数据库账号密码修改,导致的任务连接失败。 连接源和目标数据库的账号密码修改后,请参考修改连接信息章节修改DRS任务的连接信息,避免任务连接失败后自动重试,导致数据库账号被锁定影响使用。 表2中为DRS任务所需的最小权限,如果需要DRS任务迁移grant授权的情况下,请确保DRS任务的连接账号本身具备对应权限,否则可能因为grant授权执行失败导致目标库对应用户缺少授权。例如DRS任务的连接账号本身不要求process权限,如果需要通过DRS任务迁移process授权则需要保证DRS任务的连接账号具备该权限。 表2中为DRS任务所需的最小权限,如果配置DRS任务同步源库业务产生的DDL,目标库需要授予DRS任务连接账号对应DDL的执行权限,否则可能出现DDL回放失败的情况。
  • 实时迁移、实时同步和实时灾备有什么区别 对比项 实时迁移 实时同步 实时灾备 适用场景 跨云平台数据库迁移、云下数据库迁移上云或云上跨区域的数据库迁移等多种业务场景迁移。 实时分析,报表系统,数仓环境等。 实现云下数据库到云上的灾备、跨云平台的数据库灾备。 特点 同构数据库间以整体数据库搬迁为目的。 支持包括:表、数据、索引、视图、存储过程、函数、数据库账号、数据库参数等。 可选择表级、库级或全部迁移维度。 支持同构、异构数据库间的数据同步,维持不同业务之间的数据持续性流动。 聚焦于表和数据,并满足多种灵活性的需求。 可选择表级、库级同步维度。 支持同构数据库间的数据灾备。 实现异地数据库主备倒换的效果。 实例级灾备,不支持表级、库级对象选择。 支持的数据库 详情请参见迁移方案概览。 详情请参见同步方案概览。 详情请参见灾备方案概览。 功能特性 支持迁移用户。 不支持迁移用户。 默认迁移所有用户,不支持选择。 支持参数对比。 不支持参数对比。 支持参数对比。 不支持增量阶段编辑迁移对象。 支持增量阶段编辑同步对象,动态增减同步对象。 不支持增量阶段编辑灾备对象。 不支持对象名映射。 支持对象名映射,使同步的库表在源数据库和目标数据库中存储名称不同。 不支持对象名映射。 不支持数据加工能力。 支持数据加工能力,可对选择的对象添加规则,如数据过滤、列加工等。 不支持数据加工能力。 不支持主备倒换。 不支持主备倒换。 支持主备倒换。 计费方式 仅支持按需计费。 支持按需计费和包年/包月。 支持按需计费和包年/包月。 更多特性 不同链路支持的功能特性也不相同,详情请参见对应链路使用须知。 不同链路支持的功能特性也不相同,详情请参见对应链路使用须知。 不同链路支持的功能特性也不相同,详情请参见对应链路使用须知。 父主题: 产品咨询
  • 备份迁移场景的是否最后一个备份文件选择错误该如何处理 备份迁移过程中,根据选择“最后一个备份文件”来判断是否为最后一次备份,对于人工操作中不可控的误选择,有以下两种情况及处理方法: 选择“是”,但期望为否,即仍然希望继续做增量备份迁移。但由于SQL Server本身的设计,数据库一旦收到还原已完成的信号,便会做一系列的内部工作并把数据库置为可用,已无法继续增量备份迁移。此时,只能删除备份数据库重新进行全量+增量的备份还原。 选择“否”,但期望为是,即不希望继续恢复增量备份迁移。其实SQL Server没有严格意义上的的最后一个备份文件,此时可以再做一个增量备份(即使没有数据改变也可以备份),在该次增量备份时选择“是”即可完成迁移,相关数据库将会变为可用。 父主题: 备份迁移
  • 场景二:双主灾备,同时操作双边数据库,导致数据不一致 初始数据如下图所示(seqno为主键,column1为非主键)。 图3 初始数据 双方数据库同时分别执行如下操作: dr1库:insert into dr1 values(101,100); dr2库:insert into dr2 values(101,102); 执行操作后,双方数据库数据如下图所示。 图4 dr1库数据 图5 dr2库数据
  • 场景一:双主灾备,双边同时操作同一行操作,导致多数据 初始数据如下图所示(seqno为主键,column1为非主键)。 图1 dr1、dr2库初始数据 双方数据库同时分别执行如下操作: dr1库:update dr1 set seqno=5 where column1=8; dr2库:update dr2 set seqno=6 where column1=8; 执行操作后,双方数据库数据一致,并且多数据。 图2 dr1、dr2库数据
  • 双主灾备的主1、主2如何选择 双主灾备要求灾备双方至少有一方为本云RDS实例,另一方可以为本云RDS实例、其他云数据库、ECS自建库或本地自建数据库。为了明确本云(本区)RDS在灾备中所扮演的角色,DRS使用主1、主2来区分角色。选择了本云RDS角色后,也意味着确定了另一方的角色。 主1:一般具有业务数据,创建任务时选择主1则表示本云RDS具有初始数据。 主2:必须为空数据库,创建任务时选择主2则表示本云RDS为空库,等待接收数据。 创建灾备任务时,选择主1、主2应遵循以下原则 灾备双方均为本云RDS实例。 有一方为空实例,空实例作为主2,非空实例作为主1。 双方均为空实例,主1、主2角色无差别,推荐选主2。 灾备双方一方为本云RDS实例,另一方为其他云数据库、ECS自建库或本地自建数据库。 一方数据库存在初始数据,另一方为空库。 本云RDS实例为空库,则选择主2。 本云RDS实例有初始数据,另一方为空库,则选择主1。 双方均为空库,主1、主2角色无差别,推荐选主2。 父主题: 实时灾备
共100000条
提示

您即将访问非华为云网站,请注意账号财产安全