全部產品
Search
文件中心

MaxCompute:遷移ECS自建MySQL資料庫至MaxCompute

更新時間:Feb 28, 2024

本文為您介紹如何使用獨享Data Integration資源,將您在ECS上自建的MySQL資料庫中的資料,遷移到MaxCompute。

前提條件

  • 已擁有至少一個綁定Virtual Private Cloud的ECS(請勿使用傳統網路),並在ECS上安裝好MySQL資料庫,資料庫中已建立好使用者和測試資料。本文中ECS自建MySQL的測試資料建立語句如下。

    CREATE TABLE IF NOT EXISTS good_sale(
       create_time timestamp,
       category varchar(20),
       brand varchar(20),
       buyer_id varchar(20),
       trans_num varchar(20),
       trans_amount DOUBLE,
       click_cnt varchar(20)
       );
    insert into good_sale values('2018-08-21','coat','brandA','lilei',3,500.6,7),
    ('2018-08-22','food','brandB','lilei',1,303,8),
    ('2018-08-22','coat','brandC','hanmeimei',2,510,2),
    ('2018-08-22','bath','brandA','hanmeimei',1,442.5,1),
    ('2018-08-22','food','brandD','hanmeimei',2,234,3),
    ('2018-08-23','coat','brandB','jimmy',9,2000,7),
    ('2018-08-23','food','brandA','jimmy',5,45.1,5),
    ('2018-08-23','coat','brandE','jimmy',5,100.2,4),
    ('2018-08-24','food','brandG','peiqi',10,5560,7),
    ('2018-08-24','bath','brandF','peiqi',1,445.6,2),
    ('2018-08-24','coat','brandA','ray',3,777,3),
    ('2018-08-24','bath','brandG','ray',3,122,3),
    ('2018-08-24','coat','brandC','ray',1,62,7) ;
  • 請記錄好您的ECS的私人IP專用網路虛擬交換器資訊。ECS

  • ECS上的安全性群組已放通MySQL資料庫所使用的連接埠(預設為3306),詳情請參見添加安全性群組規則,請記錄好您的安全性群組名稱。

  • 已成功建立DataWorks工作空間。本文使用DataWorks簡單模式工作空間,計算引擎為MaxCompute。請保證您的ECS與DataWorks工作空間處於同一個地區,建立方法請參見建立工作空間

  • 已完成獨享Data Integration資源的購買,並且綁定了ECS所在的Virtual Private Cloud。請注意獨享資源群組必須與ECS同一可用性區域,詳情請參見新增和使用獨享Data Integration資源群組。完成綁定後,您可以在查看到您的獨享資源群組。

  • 網路設定 > 專用網路綁定處查看專用網路交換器安全性群組資訊是否和ECS一致。網路綁定

背景資訊

獨享資源可以保障您的資料快速、穩定地傳輸。您購買的獨享Data Integration資源和需要訪問的資料來源(即本文中的ECS自建MySQL資料庫)必須在同地區同可用性區域,且和DataWorks工作空間同地區。

操作步驟

  1. 在DataWorks上建立MySQL資料來源。

    1. 進入資料來源頁面。

      1. 登入DataWorks控制台,切換至目標地區後,單擊左側導覽列的管理中心,在下拉框中選擇對應工作空間後單擊進入管理中心

      2. 進入工作空間管理中心頁面後,單擊左側導覽列的資料來源,進入資料來源頁面。

    2. 單擊資料來源頁面的新增資料來源

    3. 新增資料來源對話方塊,單擊MySQL

    4. 新增MySQL資料來源對話方塊中,配置各項參數,詳情請參見配置MySQL資料來源

      本文以串連串模式為例,在JDBC URL處輸入您剛剛記錄的ECS私人地址和MySQL的預設連接埠號碼3306。串連串模式

      說明

      當前VPC環境下的自建MySQL資料來源暫不支援測試連通性,因此連通性測試失敗是正常現象。

    5. 單擊相應資源群組後的測試連通性

      資料同步時,一個任務只能使用一種資源群組。您需要在每種資源群組上單獨測試連通性,以保證同步任務使用的Data Integration資源群組能夠與資料來源連通,否則將無法正常執行資料同步任務。詳情請參見配置資源群組與網路連通

    6. 測試連通性通過後,單擊完成

  2. 建立MaxCompute表。

    您需要通過DataWorks建立一個表,用於接收來自MySQL的測試資料。

    1. 單擊左上方的表徵圖表徵圖,選擇全部產品 > 資料開發與營運 > DataStudio(資料開發)

    2. 建立一個商務程序,詳情請參見建立周期商務程序

    3. 按右鍵建立的商務程序,選擇建立表 > MaxCompute >

    4. 輸入您的MaxCompute表名稱,本例中使用和MySQL資料庫表一樣的名稱good_sale。單擊DDL後,輸入您的建表語句並產生表結構

      本例中使用的建表語句如下,請注意資料類型的轉換。

      CREATE TABLE IF NOT EXISTS good_sale(
         create_time string,
         category STRING,
         brand STRING,
         buyer_id STRING,
         trans_num BIGINT,
         trans_amount DOUBLE,
         click_cnt BIGINT
         );
    5. 輸入表的中文名後,單擊提交到生產環境,完成MaxCompute表good_sale的建立。

      15

  3. 配置Data Integration任務。

    1. 按右鍵商務程序,選擇建立節點 > Data Integration > 離線同步,建立一個Data Integration任務。

    2. 選擇您的資料來源為您剛添加的MySQL資料來源,資料去向為預設MaxCompute資料來源odps_first,單擊轉換指令碼切換Data Integration任務為指令碼模式。

      此時,如果產生報錯或您無法選擇資料來源的,都屬於正常現象,直接轉換為指令碼模式即可。32

    3. 單擊頁面右側的Data Integration資源群組配置,選中已購買的獨享資源群組。

      如果未切換任務資源群組為Data Integration獨享資源,後續您的任務將無法成功運行。

    4. 填寫Data Integration任務指令碼內容如下。

      {
          "type": "job",
          "steps": [
              {
                  "stepType": "mysql",
                  "parameter": {
                      "column": [//源列名
                          "create_time",
                          "category",
                          "brand",
                          "buyer_id",
                          "trans_num",
                          "trans_amount",
                          "click_cnt"
                      ],
                      "connection": [
                          {
                              "datasource": "shuai",//來源資料源
                              "table": [
                                  "good_sale"//來源資料庫表名,此處必須為方括弧數組格式。
                              ]
                          }
                      ],
                      "where": "",
                      "splitPk": "",
                      "encoding": "UTF-8"
                  },
                  "name": "Reader",
                  "category": "reader"
              },
              {
                  "stepType": "odps",
                  "parameter": {
                      "partition": "",
                      "truncate": true,
                      "datasource": "odps_first",//目標資料來源
                      "column": [//目標列名
                          "create_time",
                          "category",
                          "brand",
                          "buyer_id",
                          "trans_num",
                          "trans_amount",
                          "click_cnt"
                      ],
                      "emptyAsNull": false,
                      "table": "good_sale"//目標表名
                  },
                  "name": "Writer",
                  "category": "writer"
              }
          ],
          "version": "2.0",
          "order": {
              "hops": [
                  {
                      "from": "Reader",
                      "to": "Writer"
                  }
              ]
          },
          "setting": {
              "errorLimit": {
                  "record": "0"
              },
              "speed": {
                  "throttle": false,
                  "concurrent": 2
              }
          }
      }
    5. 單擊運行,您可以在下方的作業記錄查看資料是否已傳輸到MaxCompute。

      123

執行結果

您可以建立一個ODPS SQL類型的節點,用於查詢當前MaxCompute表中的資料。

輸入您的查詢語句select * from good_sale ;,單擊運行,即可看到當前已傳入MaxCompute表中的資料。222