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

更新时间: 2023-11-13 09:48:01

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

背景信息

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

支持的源实例

  • 阿里云数据库:RDS MySQLRDS MariaDBRDS PostgreSQLPolarDB-X 1.0PolarDB-X 2.0PolarDB PostgreSQL版PolarDB PostgreSQL版(兼容Oracle)PolarDB MySQL版云数据库Redis云原生内存数据库Tair云数据库MongoDB版

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

支持的目标实例

RDS MySQL云数据库ClickHouse

前提条件

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

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

  • 已获取源库实例、目标库实例和创建DTS任务的阿里云账号(主账号)ID。您可以使用创建DTS任务的阿里云账号(主账号)登录账号管理页面,在基本信息页签的账号ID获取。

注意事项

  • 当前仅RDS MySQL实例间,支持跨账号的双向同步任务。

    说明

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

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

操作步骤

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

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

    说明
    • 若使用RAM用户(子账号)进行操作,则可能会在创建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. 添加权限对话框中,勾选选择权限类型系统策略添加权限

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

    4. 单击确定

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

  3. 修改信任策略。

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

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

    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中选择全部功能 > 集成与开发(DTS) > 数据同步。更多信息请参见自定义DMS界面布局与样式

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

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

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

      跨账号

      配置

      说明

      是否跨阿里云账号

      选择跨账号

      跨阿里云账号

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

      说明

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

      跨阿里云账号角色名

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

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

常见问题

以下为配置源库信息时,出现的常见告警信息及对应解决办法:

告警信息

解决办法

UID错误提示_zh

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

角色名错误

可能原因如下:

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

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

说明

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

RAM

可能原因如下:

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

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

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

说明

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

没有权限

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

阿里云首页 数据传输服务 DTS 相关技术圈