将DDS/MongoDB分片集群迁移到DDS/MongoDB分片集群 本页为使用数据传输服务DTS将DDS/MongoDB分片集群架构数据迁移到DDS/MongoDB分片集群架构的详细介绍,包括数据迁移支持的源库、目标库,支持的迁移对象及SQL,数据库账号权限说明,操作须知,操作步骤等。 支持的源和目标数据库 源数据库 目标数据库 DDS 3.4/4.0(分片集群) 自建MongoDB 3.4/4.0/4.2/4.4/5.0/6.0(分片集群) DDS 3.4/4.0(分片集群) 自建MongoDB 3.4/4.0/4.2/4.4/5.0/6.0(分片集群) 支持的迁移对象及SQL 迁移对象 当前DTS支持集合级(指定集合对象)、库级(整库迁移)迁移。 支持索引的结构迁移。 库、集合支持做名称映射。 不支持迁移admin和local库中的数据。 数据迁移仅针对数据源中的用户数据库,而系统库会被自动过滤。 支持TAG和RANGE相关内容的迁移,源端和目标端的SHARD按照名称的字典序映射。 增量迁移支持的SQL操作 DML INSERT、UPDATE、REPLACE、DELETE。 DDL 当前不支持增量迁移过程中的DDL操作。 数据库账号及权限 数据库 所需权限 参考赋权语句 源库 全量: mongos用户需要具备admin库的readAnyDatabase权限,config库的read权限; 连接shard的用户需要有admin库的readAnyDatabase权限,有local库的read权限。 增量: mongos用户需要具备admin库的readAnyDatabase权限,config库的read权限; 连接shard的用户需要具备admin库的readAnyDatabase权限、clusterMonitor权限,local库的read权限。 全量: db.grantRolesToUser("用户名",[{role:"readAnyDatabase",db:"admin"}, {role:"read",db:"config"}]) db.grantRolesToUser("用户名",[{role:"readAnyDatabase",db:"admin"}, {role:"read",db:"local"}]) 增量: db.grantRolesToUser("用户名",[{role:"readAnyDatabase",db:"admin"}, {role:"read",db:"config"}]) db.grantRolesToUser("用户名",[{role:"readAnyDatabase",db:"admin"}, {role:"clusterMonitor",db:"admin"},{role:"read",db:"local"}]) 目标库 mongos用户需要具备admin库的dbAdminAnyDatabase权限,admin库的readWriteAnyDatabase权限以及有admin库的clusterManager权限。 db.grantRolesToUser("用户名",[{role:"dbAdminAnyDatabase",db:"admin"}, {role:"readWriteAnyDatabase",db:"admin"},{role:"clusterManager",db:"admin"}])