具体参考阿里云帮助文档的说明:https://help.aliyun.com/document_detail/26301.html
华东1Rds实例A:
华东1Rds实例B:
Rds cli:
此处使用阿里云RDS命令行工具进行调用,安装和下载:
https://help.aliyun.com/knowledge_detail/39285.html
此处一定要确定使用的是该连接的cli,即命令开始是rds 不是aliyuncli rds,对比如下:
实现目标:将华东1实例A的数据库importtest(内有测试表test)数据迁移到华东1实例B的importtest中
根据api的文档介绍,使用rds cli调用需要如下参数:
1)目标rds的实例id
2)源rds的实例id
3)需要迁移的实例中的数据库名称
注意事项:
1)源和目标的账号管理方式不可以是高权限账号,会提示:
"Message": "The operation is not permitted due to account mode of instance.",所以非高权限账号管理模式的实例才可以
2)不支持跨地域的实例,会提示:"Message": "the specified instance region does not support this operation.",
所以实例要同地域的
3)如果出现dbname相关的错误,会提示:"Message": "The specified parameter DBInfo is not valid or db not
exist.",这也是最容易出现问题的地方
4)确保源和目标的实例id正确,不正确会提示"Message": "DBInstanceIdentifier does not refer to an existing DB instance."
安装好rds cli之后,输入如下命令:
rds ImportDatabaseBetweenInstances --DBInstanceId rds99k7j*******z1spd6
--SourceDBInstanceId rm-bp1m62*******cksu --DBInfo {"'DBNames'":["'importtest'"]}
或者:
rds ImportDatabaseBetweenInstances --DBInstanceId rds99k7j*******z1spd6
--SourceDBInstanceId rm-bp1m62*******cksu --DBInfo {'"DBNames"':['"importtest"']}
结果如下:
实例的状态变化如下:
任务完成后,实例状态会变为”运行中”,迁移时可能因为其他原因时间会比较长,需要等待
因为测试是只有一个测试表,2分钟就完成了,完成后查看目标实例的数据如下:
这样就执行完成了两个rds实例之间数据库的迁移,个人更倾向于使用dts以及其他的方式来实现数据的迁移,使用该api的调用无法对迁移的任务以及迁移的状态可控,请求发送成功后全部交给了阿里云的后台系统,控制台只能看到”迁出数据中”和”迁入数据中”的状态,假设报错了也无法看到错误的信息