跨阿里云账号实现数据传输

数据传输服务DTS(Data Transmission Service)支持配置源库或目标库跨阿里云账号的任务,适用于阿里云账号间的资源迁移或合并、业务架构调整等多种应用场景。

背景信息

现有两个阿里云数据库或者通过专线、VPN网关或智能网关接入自建数据库(例如RDS MySQL)分别属于不同的阿里云账号,由于业务需求,需要将阿里云账号A下数据库的业务数据迁移至阿里云账号B下的数据库。

支持的数据库

在配置DTS任务时,支持配置是否跨阿里云账号的数据库如下表所示。

说明

源库是否跨阿里云账号的配置结果,不影响目标库数据库类型的选项。

数据库实例

阿里云数据库

自建数据库

源库

RDS MySQLRDS MariaDBRDS PostgreSQLRDS SQL ServerPolarDB-X 1.0PolarDB-X 2.0PolarDB PostgreSQL版PolarDB PostgreSQL版(兼容Oracle)PolarDB MySQL版云数据库Redis云原生内存数据库Tair云数据库MongoDB版、云数据库OceanBase版(MySQL模式)、AnalyticDB MySQL版 3.0集群。

  • 通过专线、VPN网关、智能网关接入的MySQL、Mariadb、PostgreSQL、PolarDB PostgreSQL版(兼容Oracle)、Redis、MongoDB、Oracle、SQL Server、Db2 for LUWDb2 for i、OceanBase(MySQL模式)数据库。

  • 通过ECS自建数据库接入的自建MySQL、Mariadb、Redis、MongoDB、Db2 for LUW、OceanBase(MySQL模式)数据库。

  • 通过云企业网CEN接入的自建Redis、MongoDB数据库。

  • 通过数据库网关DG接入的自建Redis数据库。

目标库

RDS MySQLPolarDB MySQL版、云数据库SelectDB版、云数据库Redis云原生内存数据库Tair云数据库ClickHouseAnalyticDB MySQL版 3.0集群。

暂不支持。

前提条件

  • 已创建任务所需的源和目标库实例。

  • 源和目标实例所属的阿里云账号已经授权DTS的RAM角色访问其云资源,详情请参见授予DTS访问云资源的权限

  • 已获取源库实例、目标库实例和创建DTS任务的阿里云账号(主账号)ID。您可以使用对应的阿里云账号(主账号)登录概览页面,在页面右侧获取账号ID

注意事项

  • 当前仅RDS MySQL实例间、云原生内存数据库Tair(含企业版的云数据库Redis)实例间,支持跨账号的双向同步任务。

    说明

    没有是否跨阿里云账号配置项的任务,您可以尝试使用CEN实现跨阿里云账号任务的配置。更多信息,请参见跨阿里云账号或跨地域访问数据库资源

  • 暂不支持不同属性账号之间(如金融云和政务云账号之间)的同步任务。

操作步骤

说明

本操作以同步任务为例,介绍DTS跨阿里云账号任务的配置步骤。

  1. 为数据库实例创建RAM角色。

    说明
    • 若使用RAM用户(子账号)进行操作,则可能会在创建DTS任务时提示授权不正确。

    • DTS实例中无需跨阿里云账号(是否跨阿里云账号选择为不跨账号或者无该配置项)的数据库实例不需要创建RAM角色。

    1. 使用数据库实例所属的阿里云账号(主账号),登录RAM控制台

    2. 在左侧导航栏,选择身份管理 > 角色

      身份管理-角色-new-zh.jpg

      重要

      请勿选择为身份管理 > 用户,否则DTS将无法访问数据库实例并报错。

    3. 角色页面,单击创建角色

    4. 创建角色面板,选择可信实体类型为阿里云账号,然后单击下一步创建角色

    5. 在弹出的对话框中,配置RAM角色信息。信任账号

      配置选项

      配置说明

      角色名称

      填写RAM角色名称,本示例填写ram-for-dts

      说明

      可以填写大写英文、小写英文、数字或短横线(-),长度不超过64个字符。

      备注(可选)

      填写RAM角色备注信息。

      选择信任的云账号

      选择为其他云账号,并填写创建DTS任务的阿里云账号(主账号)ID作为授信云账号。

    6. 单击完成

  2. 为创建好的RAM角色精确授权。

    1. 单击精确授权创建角色

    2. 权限管理页签,单击精确授权

      image

    3. 精确授权面板中,勾选选择权限类型系统策略

      image

    4. 输入策略名称下方的文本框中,输入AliyunDTSRolePolicy

    5. 单击确定

    6. 精确授权成功后,单击关闭

  3. 修改信任策略。

    1. (可选)角色页面,找到刚刚创建的RAM角色,单击对应的RAM角色名称。

      image

    2. 在RAM角色的基本信息页面,单击信任策略页签。

      image

    3. 信任策略页签中,单击编辑信任策略

    4. 将下述代码复制至策略框中。

      {
          "Statement": [
              {
                  "Action": "sts:AssumeRole",
                  "Effect": "Allow",
                  "Principal": {
                      "RAM": [
                          "acs:ram::<阿里云账号ID>:root"
                      ],
                      "Service": [
                          "<阿里云账号ID>@dts.aliyuncs.com"
                      ]
                  }
              }
          ],
          "Version": "1"
      }
    5. 将代码中两个<阿里云账号ID>替换为创建DTS任务的阿里云账号(主账号)ID。

    6. 单击保存信任策略

  4. 创建同步任务。

    1. 使用信任策略中配置的阿里云账号ID,登录DMS数据管理服务

    2. 在左侧导航栏,选择数据传输(DTS) > 数据同步

      说明

      若您登录的是极简模式的DMS,请在左上角的3中选择全部功能 > 集成与开发 > 数据同步。更多信息请参见自定义DMS界面布局与样式

    3. 单击创建任务,配置源库及目标库信息。

    4. 根据实际业务需求选择数据库类型接入方式实例地区

    5. 配置数据库实例所属的阿里云账号信息。

      跨账号

      配置

      说明

      是否跨阿里云账号

      选择跨账号

      跨阿里云账号

      填入数据库实例所属阿里云账号的主账号ID。

      说明

      您可以使用数据库实例所属的阿里云账号(主账号)登录账号管理页面来获取云账号ID。

      跨阿里云账号角色名

      填入创建RAM角色中创建的RAM角色名称,本示例填写ram-for-dts

      重要

      请勿填写DTS系统的默认角色AliyunDTSDefaultRole

    6. 根据源和目标实例类型,参考具体配置文档,创建跨阿里云账号任务。具体配置文档,请参见同步方案概览迁移方案概览订阅方案概览

常见问题

  • 如何在跨账号任务中使用各阿里云账号?

    在跨账号任务中,各阿里云账号的用途与跨阿里云账号的数据库相关,存在以下三种情况。

    说明
    • 使用的阿里云账号均为阿里云账号(主账号)。

    • 跨阿里云账号的数据库:配置DTS任务时,是否跨阿里云账号选择为跨账号的数据库。

    • 目前仅目标库为RDS MySQL云数据库ClickHouse时,支持配置是否跨阿里云账号

    表格使用示例:首先需要确认跨账号的是源库还是目标库,然后通过跨阿里云账号的数据库列寻找目标行,查看各阶段使用到的阿里云账号。

    跨阿里云账号的数据库

    登录RAM控制台的阿里云账号

    信任策略中填入的阿里云账号

    创建DTS任务的阿里云账号

    DTS任务填入的跨阿里云账号

    源库

    源库所属的阿里云账号

    目标库所属的阿里云账号

    目标库所属的阿里云账号

    源库信息跨阿里云账号填入源库所属的阿里云账号

    目标库

    目标库所属的阿里云账号

    源库所属的阿里云账号

    源库所属的阿里云账号

    目标库信息跨阿里云账号填入目标库所属的阿里云账号

    源库和目标库

    源库和目标库所属的阿里云账号

    指定的阿里云账号

    指定的阿里云账号

    • 源库信息跨阿里云账号填入源库所属的阿里云账号

    • 目标库信息跨阿里云账号填入目标库所属的阿里云账号

  • 如何处理配置跨账号任务时出现的报错?

    以下为配置跨账号任务时,出现的常见告警信息及对应解决办法:

    告警信息

    解决办法

    UID错误提示_zh

    您填写的跨阿里云账号有误,请检查数据库实例所属阿里云账号(主账号)的UID是否填写正确。更多信息,请参见准备工作

    角色名错误

    image

    可能原因如下:

    • 您填写的跨阿里云账号角色名有误:请检查数据库实例所属阿里云账号(主账号)的RAM角色名称是否填写正确。

    • RAM角色精确授权不正确:请使用数据库实例所属的阿里云账号(主账号)进行授权操作。

    说明

    更多信息,请参见准备工作

    RAM

    可能原因如下:

    • 您填写的跨阿里云账号角色名有误:请检查数据库实例所属阿里云账号(主账号)的角色名称是否填写正确。

    • RAM角色未完成精确授权:请检查RAM角色是否正确完成精确授权。

    • RAM角色未修改信任策略:请检查RAM角色是否正确修改信任策略。

    说明

    请参考准备工作进行检查。

    没有权限

    您填写的跨阿里云账号角色名没有精确授权,请为填写的RAM角色精确授权后重新创建任务。以源数据库为例,授权操作请参见为已有RAM角色精确授权

    image

    您填写的跨阿里云账号角色名有误,请勿填写DTS系统的默认角色AliyunDTSDefaultRole,请填写在准备工作中创建的RAM角色。