本文将通过实践操作,为您介绍如何使用整库迁移功能,将MySQL数据整库迁移到MaxCompute。

场景说明

复杂网络环境主要包含以下两种情况:

  • 数据的来源端和目的端有一端为私网环境。
    • VPC环境(除如DS)<->公网环境
    • 金融云环境<->公网环境
    • 本地自建无公网环境<->公网环境
  • 数据的来源端和目的端均为私网环境。
    • VPC环境(除RDS)<->VPC环境(除RDS)
    • 金融云环境<->金融云环境
    • 本地自建无公网环境<->本地自建无公网环境
    • 本地自建无公网环境<->VPC环境(除RDS)
    • 本地自建无公网环境<->金融云环境

您可以通过部署数据集成Agent,打通任意网络环境,在复杂的网络环境下完成数据传输和同步。本文主要为您介绍仅一端数据源网络不通情况下的操作方案,具体实现逻辑和操作步骤见下文所述,两端数据源均无法连通的情况请参见(两端都不通)数据源网络不通情况下的数据同步

实现逻辑

针对第一种复杂网络环境,采用在私网环境的那一端相同网络环境下的机器上部署数据集成Agent,通过Agent与外部公网联通。私网环境通常有以下两种情况:

  • 购买云服务ECS上搭建的数据库,没有分配公网IP或弹性公网IP。
  • 本地IDC机房无公网IP。

云服务ECS

此场景下的数据同步方式,如下图所示。

  • 由于ECS2服务器没有访问公网的能力,所以需要准备一台和ECS2在同一网段并且有访问公网能力的ECS1机器行部署Agent。
  • 将ECS1作为资源组并且同步任务运行在此机器上。
说明 您需要给数据库赋权限,让ECS2服务器能访问到相应的数据库,才能将此数据库的数据读取到ECS1中。授权命令如下所示。
grant all privileges on *.* to 'demo_test'@'%' identified by '密码';  --> %号代表给所有 IP 授权<br>

ECS2上的自建数据源同步任务运行在自定资源组上,要给自定资源组机器授权,将ECS2机器内/外网IP和端口添加到ECS1安全组上,详情请参见添加安全组

无公网IP本地IDC机房

此场景下的数据同步方式,如下图所示。

  • 由于机器1没有访问公网的能力,所以需要准备一台和机器1在同一网段并且具备访问公网的能力机器2部署Agent。
  • 将机器2作为任务资源组并且同步任务运行在此机器上。

配置数据源

  1. 以开发者身份进入DataWorks管理控制台,单击对应项目操作栏中的进入数据集成
  2. 进入数据源页面,单击新增数据源,弹出支持的数据源类型。

  3. 选择关系数据库MySQL的数据源里的无公网IP的数据源类型添加数据源。
    • 源端数据源(无公网IP)

      配置 说明
      数据源类型 无公网IP。
      数据源名称 数据源名称必须以字母、数字、下划线组合,且不能以数字和下划线开头。
      数据源描述 对数据源进行简单描述,不得超过80个字符。
      资源组 是选择部署Agent的机器,通过Agent与外部公网联通,特殊网络环境的数据源可以将同步任务运行在资源组上。添加资源组的详情请参见新增任务资源
      JDBC URL JDBC连接信息,格式是jdbc:mysql://ServerIP:Port/Database
      用户名和密码 数据库对应的用户名和密码。
      测试连通性 无公网IP的数据源不支持测试连通性,直接单击完成即可。
    • 目标数据源(有公网环境)

      配置 说明
      数据源名称 数据源名称必须以字母、数字、下划线组合,且不能以数字和下划线开头。
      数据源描述 对数据源进行简单描述,不得超过80个字符。
      ODPS Endpoint 默认只读,从系统配置中自动读取。
      ODPS项目名称 对应的MaxCompute Project标识。
      Access Id 与MaxCompute Project Owner云账号对应的AccessID。
      Access Key 与MaxCompute Project Owner云账号对应的AccessKey,与AccessID成对使用。访问密钥相当于登录密码。
      测试连通性 支持测试连通性。

配置同步任务

  1. 选择来源
    由于数据来源是无公网IP的数据源,所以此数据源网络无法联通,需要使用脚本模式配置同步任务,直接单击转换脚本按钮。

  2. 导入模板

    配置 说明
    来源类型 根据您的向导模式选择的数据源直接填写数据源名称。
    目标类型 您可以在下拉框中选择要写入的目标数据源。
    说明
    • 如果数据库支持界面添加数据源,可以在模板中选择。
    • 如果数据库不支持界面添加数据源,则需在模板的JSON代码中编写相关的数据源信息,然后单击新增数据源
  3. 转换成脚本模式样例

配置任务资源组:可以修改和查看同步任务运行的资源组的情况,默认是收起状态。

{
"type": "job",
"configuration": {
 "setting": {
   "speed": {
     "concurrent": "1",//作业并发数
     "mbps": "1"//作业速率上限
   },
   "errorLimit": {
     "record": "0"//错误记录数超过值
   }
 },
 "reader": {
   "parameter": {
     "splitPk": "id",//切分键
     "column": [//目标端的列名
       "name",
       "tag",
       "age",
       "balance",
       "gender",
       "birthday"
     ],
     "table": "source",//源端的表名
     "where": "ds = '20171218'",//过滤条件
     "datasource": "private_source"//数据源名称,要跟添加的数据源名保持一致
   },
   "plugin": "mysql"
 },
 "writer": {
   "parameter": {
     "partition": "ds='${bdp.system.bizdate}'",//分区信息
     "truncate": true,
     "column": [//目标端的列
       "name",
       "tag",
       "age",
       "balance",
       "gender",
       "birthday"
     ],
     "table": "random_generated_data",//目标端的表名
     "datasource": "odps_mrtest2222"//数据源名称,要跟添加的数据源名保持一致
   },
   "plugin": "odps"
 }
},
"version": "1.0"
}

运行同步任务

您可通过以下两种方式运行任务:

  • 数据集成的界面直接单击运行。
  • 调度运行。提交调度的步骤请参见调度配置