数据传输服务DTS(Data Transmission Service)支持配置源库或目标库跨阿里云账号的任务,适用于阿里云账号间的资源迁移或合并、业务架构调整等多种应用场景。
背景信息
现有两个阿里云数据库或者通过专线、VPN网关或智能网关接入自建数据库(例如RDS MySQL)分别属于不同的阿里云账号,由于业务需求,需要将阿里云账号A下数据库的业务数据迁移至阿里云账号B下的数据库。
支持的数据库
在配置DTS任务时,支持配置是否跨阿里云账号的数据库如下表所示。
源库是否跨阿里云账号的配置结果,不影响目标库数据库类型的选项。
数据库实例 | 阿里云数据库 | 自建数据库 |
源库 | RDS MySQL、RDS MariaDB、RDS PostgreSQL、RDS SQL Server、PolarDB-X 1.0、PolarDB-X 2.0、PolarDB PostgreSQL版、PolarDB PostgreSQL版(兼容Oracle)、PolarDB MySQL版、云数据库Redis、云原生内存数据库Tair、云数据库MongoDB版、云数据库OceanBase版(MySQL模式)。 |
|
目标库 | RDS MySQL、PolarDB MySQL版、云数据库SelectDB版、云数据库Redis、云原生内存数据库Tair和云数据库ClickHouse。 | 暂不支持。 |
前提条件
已创建任务所需的源和目标库实例。
源和目标实例所属的阿里云账号已经授权DTS的RAM角色访问其云资源,详情请参见授予DTS访问云资源的权限。
已获取源库实例、目标库实例和创建DTS任务的阿里云账号(主账号)ID。您可以使用对应的阿里云账号(主账号)登录概览页面,在页面右侧获取账号ID。
注意事项
当前仅RDS MySQL实例间、云原生内存数据库Tair(含企业版的云数据库Redis)实例间,支持跨账号的双向同步任务。
说明没有是否跨阿里云账号配置项的任务,您可以尝试使用CEN实现跨阿里云账号任务的配置。更多信息,请参见跨阿里云账号或跨地域访问数据库资源。
暂不支持不同属性账号之间(如金融云和政务云账号之间)的同步任务。
操作步骤
本操作以同步任务为例,介绍DTS跨阿里云账号任务的配置步骤。
为数据库实例创建RAM角色。
说明若使用RAM用户(子账号)进行操作,则可能会在创建DTS任务时提示授权不正确。
DTS实例中无需跨阿里云账号(是否跨阿里云账号选择为不跨账号或者无该配置项)的数据库实例不需要创建RAM角色。
使用数据库实例所属的阿里云账号(主账号),登录RAM控制台。
在左侧导航栏,选择 。
重要请勿选择为
,否则DTS将无法访问数据库实例并报错。在角色页面,单击创建角色。
在创建角色面板,选择可信实体类型为阿里云账号,然后单击下一步。
在弹出的对话框中,配置RAM角色信息。
配置选项
配置说明
角色名称
填写RAM角色名称,本示例填写ram-for-dts。
说明可以填写大写英文、小写英文、数字或短横线(-),长度不超过64个字符。
备注(可选)
填写RAM角色备注信息。
选择信任的云账号
选择为其他云账号,并填写创建DTS任务的阿里云账号(主账号)ID作为授信云账号。
单击完成。
为创建好的RAM角色精确授权。
单击精确授权。
在权限管理页签,单击精确授权。
在精确授权面板中,勾选选择权限类型为系统策略。
在输入策略名称下方的文本框中,输入AliyunDTSRolePolicy。
单击确定。
精确授权成功后,单击关闭。
修改信任策略。
(可选):在角色页面,找到刚刚创建的RAM角色,单击对应的RAM角色名称。
在RAM角色的基本信息页面,单击信任策略页签。
在信任策略页签中,单击编辑信任策略。
将下述代码复制至策略框中。
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "RAM": [ "acs:ram::<阿里云账号ID>:root" ], "Service": [ "<阿里云账号ID>@dts.aliyuncs.com" ] } } ], "Version": "1" }
将代码中两个
<阿里云账号ID>
替换为创建DTS任务的阿里云账号(主账号)ID。单击保存信任策略。
创建同步任务。
使用信任策略中配置的阿里云账号ID,登录DMS数据管理服务。
在左侧导航栏,选择 。
说明若您登录的是极简模式的DMS,请在左上角的中选择自定义DMS界面布局与样式。
。更多信息请参见单击创建任务,配置源库及目标库信息。
根据实际业务需求选择数据库类型、接入方式和实例地区。
配置数据库实例所属的阿里云账号信息。
根据源和目标实例类型,参考具体配置文档,创建跨阿里云账号任务。具体配置文档,请参见同步方案概览、迁移方案概览、订阅方案概览。
常见问题
如何在跨账号任务中使用各阿里云账号?
在跨账号任务中,各阿里云账号的用途与跨阿里云账号的数据库相关,存在以下三种情况。
说明使用的阿里云账号均为阿里云账号(主账号)。
跨阿里云账号的数据库:配置DTS任务时,是否跨阿里云账号选择为跨账号的数据库。
目前仅目标库为RDS MySQL或云数据库ClickHouse时,支持配置是否跨阿里云账号。
表格使用示例:首先需要确认跨账号的是源库还是目标库,然后通过跨阿里云账号的数据库列寻找目标行,查看各阶段使用到的阿里云账号。
跨阿里云账号的数据库
登录RAM控制台的阿里云账号
信任策略中填入的阿里云账号
创建DTS任务的阿里云账号
DTS任务填入的跨阿里云账号
源库
源库所属的阿里云账号
目标库所属的阿里云账号
目标库所属的阿里云账号
源库信息:跨阿里云账号填入源库所属的阿里云账号
目标库
目标库所属的阿里云账号
源库所属的阿里云账号
源库所属的阿里云账号
目标库信息:跨阿里云账号填入目标库所属的阿里云账号
源库和目标库
源库和目标库所属的阿里云账号
指定的阿里云账号
指定的阿里云账号
源库信息:跨阿里云账号填入源库所属的阿里云账号
目标库信息:跨阿里云账号填入目标库所属的阿里云账号
如何处理配置跨账号任务时出现的报错?
以下为配置跨账号任务时,出现的常见告警信息及对应解决办法:
告警信息
解决办法
您填写的跨阿里云账号有误,请检查数据库实例所属阿里云账号(主账号)的UID是否填写正确。更多信息,请参见准备工作。
可能原因如下:
您填写的跨阿里云账号角色名有误:请检查数据库实例所属阿里云账号(主账号)的RAM角色名称是否填写正确。
RAM角色精确授权不正确:请使用数据库实例所属的阿里云账号(主账号)进行授权操作。
说明更多信息,请参见准备工作。
可能原因如下:
您填写的跨阿里云账号角色名有误:请检查数据库实例所属阿里云账号(主账号)的角色名称是否填写正确。
RAM角色未完成精确授权:请检查RAM角色是否正确完成精确授权。
RAM角色未修改信任策略:请检查RAM角色是否正确修改信任策略。
说明请参考准备工作进行检查。
您填写的跨阿里云账号角色名没有精确授权,请为填写的RAM角色精确授权后重新创建任务。以源数据库为例,授权操作请参见为已有RAM角色精确授权。
您填写的跨阿里云账号角色名有误,请勿填写DTS系统的默认角色AliyunDTSDefaultRole,请填写在准备工作中创建的RAM角色。