本文介绍使用 DTS 数据迁移功能跨账号(腾讯云账号)进行实例间的数据迁移操作。
支持范围
源数据库为腾讯云的云数据库实例。
前提条件
已创建目标数据库实例。
注意事项
本操作中涉及多处账号信息配置,如下列出了主要配置逻辑,以方便用户理解和正确配置。
数据迁移方向:源数据库(其他账号的数据库实例)> 目标数据库(本账号的数据库实例)。
执行迁移任务的账号可以是目标数据库的主账号,也可以目标数据库的子账号。
使用主账号执行迁移任务。操作任务前,需要请求源数据所属主账号持有人进行角色授权(给目标数据库的主账号),使目标数据库主账号可以访问源数据库。
使用子账号执行迁移任务。操作任务前,需要先请求源数据所属主账号持有人进行角色授权(给目标数据库的主账号),使目标数据库主账号通过角色访问源数据库。然后再请求目标数据库所属主账号持有人进行策略授权(对目标数据库的子账号),使目标数据库子账号可以访问源数据库。
网络共享存储盘的环境暂不支持使用 DTS 迁移数据。
授权账号
使用主账号执行迁移任务,请操作步骤1 - 6,使用子账号执行迁移任务,请操作步骤1 - 11。
1. 使用源数据库所属的腾讯云主账号登录 访问管理控制台(如果子账号有 CAM 和角色相关的权限,也可以使用子账号登录)。
2. 左侧导航单击角色,进入角色管理页面,然后单击新建角色。
3. 在选择角色载体页面,选择腾讯云账户方式。
4. 在输入角色载体信息页面,配置相关信息,单击下一步。
云账号类型:选择其他主账号。
账号 ID:填入目标数据库所属的腾讯云主账号 ID,主账号 ID 可在 账号信息 中查看。目标数据库实例属于子账号名下时,此处也填写主账号 ID。
外部 ID:可依据情况,选择性开启。
说明:
如果使用了外部 ID,请用户自行记录和保存该 ID。无法通过 DTS 服务查询到该 ID。
5. 在配置角色策略页面,选择 DTS 策略和源数据库服务对应策略,单击下一步。
DTS 服务策略,选择 QcloudDTSReadOnlyAccess。
源数据库服务对应的策略,需要选择源数据库的只读服务策略和获取列表策略。
例如源数据库为云数据库 SQL Server,则添加 QcloudSQLServerReadOnlyAccess(获取云数据库 SQL Server 相关资源只读访问权限)。
说明:
源数据库必须添加 QcloudCDBReadOnlyAccess,否则配置迁移任务时无法获取到源库实例列表信息。
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. 在设置源和目标数据库页面,配置源库和目标库信息。
跨账号关键参数配置如下:
接入类型:选择云数据库,表示源数据库属于腾讯云数据库实例。
是否跨账号:选择跨账号。
跨腾讯云账号 ID: 填入源数据库所属的主账号 ID。
说明:
5. 在设置迁移选项和迁移对象页面,对数据迁移选项、迁移对象选项进行设置,在设置完成后单击保存并下一步。
6. 在校验任务页面,完成校验并全部校验项通过后,单击启动任务。
7. 如果校验任务不通过,可以参考 校验不通过处理方法 修复问题后重新发起校验任务。
8. 返回数据迁移任务列表,任务开始进入运行中状态。
常见问题
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,填写报错框中蓝色字段部分。