将DDS/MongoDB副本集迁移到DDS/MongoDB副本集 数据库账号及权限 数据库账号及权限如下表: 数据库 所需权限 参考赋权语句 源库 全量:具备admin库的readAnyDatabase权限、clusterMonitor权限。 增量:具备admin库的readAnyDatabase权限、clusterMonitor权限,local库的read权限。 或者具备超级用户权限。 db.grantRolesToUser("用户名",[{role:"readAnyDatabase",db:"admin"}, {role:"clusterMonitor",db:"admin"}]) db.grantRolesToUser("用户名",[{role:"readAnyDatabase",db:"admin"}, {role:"clusterMonitor",db:"admin"}, {role:"read",db:"local"}]) 目标库 admin库的dbAdminAnyDatabase权限、readWriteAnyDatabase权限、clusterMonitor权限。 或者具备超级用户权限。 db.grantRolesToUser("用户名",[{role:"dbAdminAnyDatabase",db:"admin"}, {role:"readWriteAnyDatabase",db:"admin"},{role:"clusterMonitor",db:"admin"}]) 操作需知 源库须开启Oplog日志。 源端、目标端实例的运行状态、复制状态必须正常。 在迁移时,如果源库、目标库进行主备切换,将会导致任务异常。 选择表级对象迁移时,增量迁移过程中不允许对表进行重命名操作。 如迁移对象为表级别,则单次迁移任务仅支持迁移最多1000张表。当超出数量限制,任务可能会报错。如果遇到这种情形,建议您拆分待迁移的表,分批配置成多个任务,或者配置为整库迁移。 暂不支持同步包含TTL(Time To Live)索引的集合。若待同步的数据库中包含TTL索引,则可能会由于源库和目标库时区、时钟等的不一致,导致数据不一致。 不保留事务信息,即源库中的事务同步到目标库时会转变为单条的记录。 在DTS迁移期间,不允许有除DTS外的数据写入目标库,否则会导致源库与目标库数据不一致。 目标库若已存在行数据,DTS在增量迁移过程中源库相同主键的数据将覆盖目标库已存在的数据,因此在迁移前需要用户自行判断数据是否需要清除,建议用户在迁移前自行清空目标库。 在磁盘空间允许的情况下,建议源数据库Oplog保存大小或时间越大越好。否则DTS在增量迁移时可能因无法获取Oplog而导致任务失败。如果由于您所设置的Oplog日志保存策略低于DTS要求的时间进而导致的问题,不在DTS的SLA保障范围内。 迁移过程中,不允许修改、删除连接源和目标数据库的用户的用户名、密码、权限,或修改源和目标数据库的端口号。 全量初始化会并发执行INSERT操作,导致目标数据库的集合产生碎片,因此全量初始化完成后目标实例的集合空间比源实例的集合空间大。建议目标库的存储空间比源库大10%以上。 建议源库和目标库的数据库版本保持一致,或者从低版本同步到高版本以保障兼容性。如为高版本同步至低版本,可能存在数据库兼容性问题。 执行数据迁移前需评估源库和目标库的性能,同时建议业务低峰期执行数据迁移,否则全量数据初始化时将占用源库和目标库一定的读写资源,可能会导致数据库的负载上升。