有奖捉虫:办公协同&微信生态&物联网文档专题 HOT
文档中心 > 数据传输服务 > 数据迁移 > 云数据库跨账号实例间迁移

操作场景

云数据库跨账号实例间数据迁移,资源库和目标库都属于腾讯云数据库实例,但所属不同的主账号名下,这种数据库实例之间的数据迁移。本章节介绍通过 DTS 数据迁移功能实现从其他账号腾讯云数据库实例迁移数据至本账号下云数据库实例。

支持范围

源数据库为腾讯云的云数据库实例,具体为:MySQL、MongoDB、PostgreSQL、Redis(需要 提交工单 申请)、Tendis(需要 提交工单 申请)、SQL Server。

前提条件

已创建目标数据库实例。

注意事项

本操作中涉及多处账号信息配置,如下列出了主要配置逻辑,以方便用户理解和正确配置。
数据迁移方向:源数据库(其他账号的数据库实例)> 目标数据库(本账号的数据库实例)。
执行迁移任务的账号可以是目标数据库的主账号,也可以目标数据库的子账号。
使用主账号执行迁移任务。操作任务前,需要请求源数据所属主账号持有人进行角色授权(给目标数据库的主账号),使目标数据库主账号可以访问源数据库。
使用子账号执行迁移任务。操作任务前,需要先请求源数据所属主账号持有人进行角色授权(给目标数据库的主账号),使目标数据库主账号通过角色访问源数据库。然后再请求目标数据库所属主账号持有人进行策略授权(对目标数据库的子账号),使目标数据库子账号可以访问源数据库。

授权账号

使用主账号执行迁移任务,请操作步骤1 - 6,使用子账号执行迁移任务,请操作步骤1 - 11。
1. 使用源数据库所属的腾讯云主账号登录 访问管理控制台(如果子账号有 CAM 和角色相关的权限,也可以使用子账号登录)。
2. 左侧导航单击角色,进入角色管理页面,然后单击新建角色
3. 在选择角色载体页面,选择腾讯云账户方式。



4. 输入角色载体信息页面,配置相关信息,单击下一步


云账号类型:选择其他主账号
账号 ID:填入目标数据库所属的腾讯云主账号 ID,主账号 ID 可在 账号信息 中查看。目标数据库实例属于子账号名下时,此处也填写主账号 ID。
外部 ID:可依据情况,选择性开启。
说明
如果使用了外部 ID,请用户自行记录和保存该 ID,后续配置需要填写。
5. 配置角色策略页面,选择 DTS 策略和源数据库服务对应策略,单击下一步
DTS 服务策略,选择 QcloudDTSReadOnlyAccess。
源数据库服务对应的策略。
源数据库为云数据库 MySQL,选择 QcloudCDBReadOnlyAccess (云数据库 CDB 相关资源只读访问权限),QcloudCDBInnerReadOnlyAccess(CDB 的读取列表权限)。
源数据库为云数据库 PostgreSQL,选择 QcloudPostgreSQLReadOnlyAccess(云数据库 PostgreSQL 只读访问权限)。
源数据库为腾讯云 MongoDB,选择 QcloudMongoDBReadOnlyAccess(文档数据库(MongoDB)只读访问权限)。
源数据库为腾讯云 SQL Server,选择 QcloudSQLServerReadOnlyAccess(云数据库 SQL Server 只读访问权限)。
源数据库为腾讯云 Redis/Tendis,选择 QcloudRedisReadOnlyAccess(云缓存 Redis 只读访问权限)。



6. 配置角色标签,然后在审阅页面,设置角色名称,单击完成后该角色创建完成。
说明
角色名称配置后请记录,后续创建迁移任务时需要输入。



说明
如果执行迁移任务的账号为主账号,授权步骤到此结束;如果为子账号,还需要继续进行如下步骤7-11,请求当前主账号持有人,对子账号进行策略授权。
7. (可选)使用目标数据库所属的腾讯云主账号登录 访问管理控制台,在左侧导航单击策略,然后在右侧单击新建自定义策略,并选择按策略语法创建



8. (可选)选择空白模板,然后单击下一步


9. (可选)创建一个策略,策略的名称以及描述可以根据自己的需求填写,策略内容复制示例代码后,将红框中的内容替换成对应的信息。



策略语法示例:
{
"version": "2.0",
"statement": [
{
"effect": "allow",
"action": ["name/sts:AssumeRole"],
"resource": ["qcs::cam::uin/10*******8:roleName/DTS-role"]
}
]
}
10. (可选)单击完成后返回到策略列表页,在列表页中单击关联用户/组


11. (可选)选择目标数据库实例所属子账号(即执行迁移任务的子账号),单击确定,如下图所示。




创建迁移任务

1. 使用目标数据库实例所属腾讯云账号,登录 DTS 控制台
2. 选择数据迁移 > 新建迁移任务,购买一个新的迁移任务。
3. 购买完成后,返回数据迁移列表,单击操作列的配置,进入配置迁移任务页面。
4. 在设置源和目标数据页面,配置源库和目标库信息。下面以 MySQL 到 MySQL 的迁移为例进行介绍。

跨账号关键参数配置如下:
接入类型:选择云数据库,表示源数据库属于腾讯云数据库实例。
是否跨账号:选择跨账号
跨腾讯云账号 ID: 填入源数据库所属的主账号 ID。
跨账号授权角色名称。即前文 授权账号 步骤6中创建的角色名称,您可以通过 角色 以及 跨账号角色 了解更多关于角色的概念。
外部角色 ID:如果前文 授权账号 步骤4中设置了外部 ID,则这里则必须按照设置的内容正确填写,否则会发生权限报错。没有设置则不需要填写。
说明
完成上述配置后,选择对应的所属地域,即可获取到跨账号下的实例列表,如果获取实例出现报错,则可能为配置错误,或者未授权,请参考 常见问题 进行处理。
5. 在设置迁移选项和迁移对象页面,对数据迁移选项、迁移对象选项进行设置,在设置完成后单击保存并下一步
6. 在校验任务页面,完成校验并全部校验项通过后,单击启动任务。 如果校验任务不通过,可以参考 校验不通过处理方法 修复问题后重新发起校验任务。
7. 返回数据迁移任务列表,任务开始进入运行中状态。

常见问题

1. 跨账号拉取实例列表报错:role not exist[InternalError.GetRoleError]

请确认跨腾讯云账号 ID(应该为源数据库的主账号 ID)和跨账号授权角色名称(应该为 授权账号 步骤6中创建的角色名称)配置是否正确。

2. 获取云数据库实例列表失败:InternalError:InternalInnerCommonError




角色中没有授权源数据库所属的腾讯云服务策略,请参考 授权账号 中的步骤5进行授权。

3. 跨账号拉取实例列表报错:you are not authorized to perform operation (sts:AssumeRole) ,resource (qcs::cam::uin/1xx5:roleName/xxxx) has no permission




出错原因:您当前创建迁移任务使用的账号是子账号,并且当前子账号没有 sts:AssumeRole 权限。 解决方法
使用主账号来创建迁移任务。
请求目标数据库所属的主账号持有人,参考 授权账号 对子账号授权,策略语法中的 resource,填写报错框中蓝色字段部分。



4. DTS 任务配置未填写角色外部 ID,或者填写错误,导致权限报错或者拉取数据库实例失败。




出错原因授权账号 时设置了外部 ID,但在 DTS 任务配置中未填写角色外部 ID,或者填写错误,导致权限报错或者拉取数据库示例失败。
解决方案:授权账号时如果设置了外部 ID,则 DTS 任务配置时需要正确填写,未设置则不需要填。