通过数据复制服务迁移数据
前提条件
使用数据复制服务进行数据迁移时,为了提高数据迁移的稳定性和安全性,请先阅读以确保数据库实例已满足迁移条件。
迁移场景
- 全量迁移
该模式为数据库一次性迁移,适用于可中断业务的数据库迁移场景,全量迁移将非系统数据库的全部数据库对象和数据一次性迁移至目标端数据库,包括:表、视图、存储过程等。选择“全量迁移”模式,建议停止对源数据库的操作,否则迁移过程中源数据库产生的新数据不会同步到目标数据库。
- 全量+增量迁移
该模式为数据库持续性迁移,适用于对业务中断敏感的场景,通过全量迁移过程中完成的目标端数据库的初始化后,增量迁移阶段通过解析日志等技术,将远端和目标端数据库保持数据持续一致。选择“全量+增量”迁移模式,增量迁移可以在全量迁移完成的基础上实现数据的持续同步,无需中断业务,实现迁移过程中源业务和数据库继续对外提供访问。
支持的源和目标数据库
源数据库 |
目标数据库 |
---|---|
|
|
支持的迁移对象范围
在使用DRS进行迁移时,不同类型的迁移任务,支持的迁移对象范围不同,详细情况可参考表2。DRS会根据用户选择,在“预检查”阶段对迁移对象进行自动检查。
类型名称 |
使用须知 |
---|---|
迁移对象范围 |
|
数据库账号权限要求
在使用DRS进行迁移时,连接源库和目标库的数据库账号需要满足以下权限要求,才能启动实时迁移任务。不同类型的迁移任务,需要的账号权限也不同,详细可参考表3进行赋权。DRS会在“预检查”阶段对数据库账号权限进行自动检查,并给出处理建议。
- 建议创建单独用于DRS任务连接的数据库账号,避免因为数据库账号密码修改,导致的任务连接失败。
- 连接源和目标数据库的账号密码修改后,请尽快修改DRS任务中的连接信息,避免任务连接失败后自动重试,导致数据库账号被锁定影响使用。
类型名称 |
全量迁移 |
全量+增量迁移 |
---|---|---|
源数据库连接账号 |
|
|
目标数据库连接账号 |
连接目标数据库的用户需要有admin库的dbAdminAnyDatabase权限,有目标数据库的readWrite权限。 对于目标数据库是集群的实例,迁移账号还要有admin库的clusterManager权限。 |
用户赋权参考语句:如连接源数据库的用户需要有admin库的readAnyDatabase权限和config库的read权限。
db.grantRolesToUser("用户名",[{role:"readAnyDatabase",db:"admin"}, {role:"read",db:"config"}])
迁移操作
具体的迁移操作请参考《数据复制服务最佳实践》中“MongoDB数据库迁移”章节。