注意事项
为保证任务的正常运行,DRS提供了自动化的检查方法,在您启动DRS任务前,会针对源数据库和目标数据库的相关配置、条件进行检查。主要的检查项和对应的处理建议请参考预检查项。除了预检查项目之外,您还需要注意的事情参见表4。
表4 注意事项
类型名称 |
使用和操作限制 |
源数据库限制 |
- 增量同步时,需打开源数据库的changeStream
- 要为特定数据库上的所有集合启用更改流,请使用 mongo shell 向您的 Amazon DocumentDB 集群进行身份验证,然后执行以下命令(注意把红色字体的db_name替换成真实的数据库名):
db.adminCommand({modifyChangeStreams: 1,database: "db_name",collection: "", enable: true});
collection为空表示为该database下所有collection启用change stream,如果要为特定collection启用,可在collection字段指定对应的名字。更多用法请参考链接。
- 修改change stream的保留时间
默认保留时间是3小时,需要根据数据量评估迁移时间,然后修改保留时间不小于迁移需要的时间。如果不清楚迁移需要的时间,建议保留时间设置为7天,迁移完成后再改为合适的时间。修改保留时间可通过控制台或cli实现,请参考链接。
|
使用限制 |
通用:
- 为了保持数据一致性,在整个同步过程中,不允许对正在同步中的目标数据库进行修改操作(包括但不限于DDL、DML操作)。
- 同步过程中,不允许修改、删除连接源和目标数据库的用户的用户名、密码、权限,或修改源和目标数据库的端口号。
- 在任务启动、任务全量同步阶段,不建议对源数据库做删除类型的DDL操作,例如删除数据库、集合、索引、文档、视图等,这样可能会引起任务同步失败。
- 在整个同步过程中,不支持源数据库主备切换导致数据回滚的情况。
- 不支持全量同步和增量同步阶段insert、update源库大于16MB的文档。
增量同步阶段:
- 源数据库为副本集实例时,增量同步阶段支持如下操作:
- 支持文档(document)新增、删除、更新。
- 支持集合(collection)删除。
- 当前仅支持dropDatabase、dropCollection、renameCollection DDL命令。
- 任务增量阶段,为保证同步的性能,会集合级的进行并发回放。特殊的情况只支持单线程写入,不支持并发回放:
- 集合的索引中有unique key时。
- 集合属性的capped为true时。
- 这种情况可能会导致任务时延增高。
常见故障排查:
- 在任务创建、启动、全量同步、增量同步、结束等过程中,如有遇到问题,可先参考“故障排查”章节进行排查。
|
其他限制 |
- 副本集:AWS DocumentDB数据库的副本集实例状态必须正常,要存在主节点。
- 压缩参数block_compressor的取值,根据源库对应集合的stats().wiredTiger.creationString.block_compressor来决定,如果目标库已经存在对应的空集合,则不同步压缩参数;特殊的,对于不支持的压缩参数,按照目标库实例的net.compression.compressors参数决定。当目标库为DDS 4.2版本时,由于目标库不支持压缩参数的设置,DRS不同步压缩参数。
- 如果源数据库的AWS DocumentDB服务不是单独部署的,而是和其他的服务部署在同一台机器,则必须要给源数据库的wiredTiger引擎加上cacheSizeGB的参数配置,建议值设为最小空闲内存的一半。
- 选择集合同步时,增量同步过程中不建议对集合进行重命名操作。
- 建议填写副本集所有的主节点和备节点信息,以防主备切换影响同步任务。如果填写的是主备多个节点的信息,注意所有的节点信息必须属于同一个副本集实例。
- 为了提高同步的速度,在开始同步之前,建议在源数据库删掉不需要的索引,只保留必须的索引。在同步过程中不建议对源库创建索引,如果必须要创建索引,请使用后台的方式创建索引。
- 为了防止回环,不支持在相同的源和目标库同时启动入云和出云任务。
说明:
同步任务支持源和目标为同一个数据库,为了避免回环,必须使用对象名映射功能进行重命名。
|