将MongoDB迁移到DDS 本节主要介绍将MongoDB迁移到DDS 支持的源和目标数据库 表 支持的数据库 源数据库 目标数据库 本地自建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进行迁移时,连接源库和目标库的数据库账号需要满足以下权限要求,才能启动实时迁移任务。不同类型的迁移任务,需要的账号权限也不同,详细可参考下表进行赋权。DRS会在“预检查”阶段对数据库账号权限进行自动检查,并给出处理建议。 表 数据库账号权限 类型名称 全量迁移 全量+增强迁移 源数据库连接账号 副本集:连接源数据库的用户需要有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"}])