数据复制服务 DRS-将DDS迁移到MongoDB:使用须知

时间:2024-09-26 16:05:13

使用须知

为保证任务的正常运行,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信息,注意所有所填的信息必须属于同一个集群实例。
  • 为了提高迁移的速度,在开始迁移之前,建议在源数据库删掉不需要的索引,只保留必须的索引。在迁移过程中不建议对源库创建索引,如果必须要创建索引,请使用后台的方式创建索引。
  • 为了防止回环,不支持在相同的源和目标库同时启动入云和出云任务。

support.huaweicloud.com/realtimemig-drs/drs_04_0101.html