更新时间:2022-05-25 GMT+08:00
分享

DDS->MongoDB

操作要求

针对一些无法预知或人为因素及环境突变导致同步失败的情况,数据复制服务提供以下常见的操作限制,供您在同步过程中参考。
表1 操作要求

类型名称

操作限制(需要人为配合)

注意事项

  • 表2中的环境要求均不允许在同步过程中修改,直至同步结束。
  • 源数据库为非集群实例时,增量同步阶段支持如下操作
    • 支持数据库(database)新建、删除。
    • 支持文档(document)新增、删除、更新。
    • 支持集合(collection)新建、删除。
    • 支持索引(index)新建、删除。
    • 支持视图(view)新建,删除。
    • 支持convertToCapped、collMod、renameCollection命令。
  • 源库是集群实例时:
    • 增量阶段不允许对同步对象做删除操作,否则会导致任务失败。
    • 会消耗源数据库一定量的CPU,内存资源,请提前做好源数据库资源评估。
    • 受MongoDB Change Streams自身性能影响,如果源库的负载比较大,Change Streams会出现处理速度无法跟上Oplog产生速度,进而导致DRS同步出现时延。
    • 目前仅支持drop database,drop collection,rename的DDL,其他DDL均不支持。
    • 指定的启动位点必须在Oplog的范围内。
  • 不支持系统库的同步,用户名和角色需要在目标库手动创建。
  • 目标数据库的同步账号必须是有写权限。对于目标数据库是集群的实例,同步账号还要有对config数据的读权限。
  • 对于在源数据库已经存在TTL索引的集合,或者在增量同步期间在源库数据创建了TTL索引的集合,由于源数据库和目标库数据库时区,时钟的不一致,不能保证同步完成之后数据的一致性。
  • 出云同步的目标数据库如果是副本集,则建议目标数据库填写所有的主节点和备节点信息,以防主备切换影响同步任务。如果是填写主备节点,注意填写的节点信息必须属于同一个副本集实例。
  • 出云同步的目标数据库如果是集群,则建议填写多个mongos信息,以防单个mongos节点故障影响同步任务,并且多个mongos信息还可以实现负载均衡。如果填写多个mongos信息,注意所有所填的信息必须属于同一个集群实例。

操作须知

  • 同步过程中,不允许修改、删除连接源和目标数据库的用户的用户名、密码、权限,或修改源和目标数据库的端口号。
  • 在整个同步过程中,为了保持数据一致性,不允许对正在同步中的目标数据库进行修改操作(包括但不限于DDL、DML操作)。
  • 在整个同步过程中,不支持源数据库主备切换导致数据回滚的情况。
  • 不支持增量同步阶段insert、update源库大于16MB的文档。
  • 为了防止回环,不支持同时启动入云迁移和出云同步任务。

环境要求

实时同步对环境有一些特定的要求,请确保环境配置满足以下条件。该类型的要求系统会自动检查,并给出处理建议。
表2 环境要求

类型名称

使用限制(DRS自动检查)

数据库权限设置

源数据库最小权限要求:

  • 增量同步权限要求:
    • 副本集:连接源数据库的用户需要对admin数据库有readAnyDatabase权限,对local数据库有read权限。
    • 单节点:连接源数据库的用户需要对admin数据库有readAnyDatabase权限,对local数据库有read权限。
    • 集群:连接源数据库mongos节点的用户需要对admin数据库有readAnyDatabase权限,对config数据库有read权限, 连接源数据库分片节点的用户需要对admin数据库有readAnyDatabase权限,对local数据库有read权限。

目标数据库最小权限要求:连接目标数据库的用户需要对admin数据库有readAnyDatabase权限,对目标数据库有readWrite权限。

同步对象约束

  • 副本集:目前只支持集合(包括验证器,是否是固定集合),索引和视图的同步。
  • 集群:目前只支持集合(包括验证器,是否是固定集合),分片键,索引和视图的同步。
  • 单节点:目前只支持集合(包括验证器,是否是固定集合),索引和视图的同步。
  • 不支持_id字段没有索引的集合。
  • 不支持BinData()的第一个参数为2。
  • 不支持范围分片的情况下maxKey当主键。

源数据库要求

  • 不支持源数据库的库名、集合名或视图名中包含如下字符:'<>.。

目标数据库要求

  • 不支持从高版本同步到低版本。
  • 目标数据库实例的运行状态必须正常。
  • 目标数据库实例必须有足够的磁盘空间。
分享:

    相关文档

    相关产品

close