すべてのプロダクト
Search
ドキュメントセンター

MaxCompute:ECS インスタンス上の自己管理 MySQL データベースから MaxCompute にデータを移行する

最終更新日:Nov 09, 2025

このトピックでは、データ統合専用リソースグループを使用して、Elastic Compute Service (ECS) インスタンスでホストされている自己管理 MySQL データベースから MaxCompute にデータを移行する方法について説明します。

前提条件

  • 少なくとも 1 つの ECS インスタンスが購入され、VPC に関連付けられていること。 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 アドレス][VPC]、および [VSwitch] をメモしておきます。ECS

  • ECS インスタンスにセキュリティグループルールを追加して、MySQL データベースが使用するポートでのアクセスリクエストを許可します。 デフォルトでは、MySQL データベースはポート 3306 を使用します。 詳細については、「セキュリティグループルールを追加する」をご参照ください。 セキュリティグループの名前をメモしておきます。

  • DataWorks ワークスペースが作成されていること。 この例では、基本モードで MaxCompute コンピュートエンジンを使用する DataWorks ワークスペースを作成します。 作成された DataWorks ワークスペースが ECS インスタンスと同じリージョンに属していることを確認してください。 ワークスペースの作成方法の詳細については、「ワークスペースを作成する」をご参照ください。

  • データ統合専用リソースグループが購入され、ECS インスタンスが存在する VPC に関連付けられていること。 専用リソースグループと ECS インスタンスは同じゾーンにあります。 詳細については、「データ統合専用リソースグループの作成と使用」をご参照ください。 専用リソースグループが VPC に関連付けられた後、リソースグループ ページで専用リソースグループに関する情報を表示できます。

  • [ネットワーク設定] > [VPC バインディング] タブで、[VPC][VSwitch]、および [セキュリティグループ] の情報が ECS インスタンスの情報と同じであるかどうかを確認します。网络绑定

  • MaxCompute データソースが追加されていること。 詳細については、「MaxCompute コンピューティングリソースをバインドする」をご参照ください。

背景情報

排他的リソースは、データを高速かつ安定して転送できます。 データ統合専用リソースグループが、アクセスするデータソースと同じリージョンの同じゾーンに存在することを確認する必要があります。 また、データ統合専用リソースグループが DataWorks ワークスペースと同じリージョンに属していることも確認する必要があります。 この例では、ECS インスタンスにデプロイされた自己管理 MySQL データベースをデータソースとして使用します。

手順

  1. DataWorks に MySQL データソースを追加します。

    1. [データソース] ページに移動します。

      1. DataWorks コンソールにログインします。 上部のナビゲーションバーで、目的のリージョンを選択します。 左側のナビゲーションウィンドウで、[その他] > [管理センター] を選択します。 表示されたページで、ドロップダウンリストから目的のワークスペースを選択し、[管理センターへ] をクリックします。

      2. SettingCenter ページの左側のナビゲーションウィンドウで、[データソース] をクリックします。

    2. [データソースの追加] をクリックします。

    3. [データソースの追加] ダイアログボックスで、[MySQL] をクリックします。

    4. [MySQL データソースの追加] ページで、パラメーターを設定します。 詳細については、「MySQL データソースを追加する」をご参照ください。

      この例では、[設定モード] パラメーターを [接続文字列モード] に設定します。 ECS インスタンスのプライベート IP アドレスと MySQL データベースのデフォルトポート番号 3306 を [接続アドレス] フィールドに入力します。连接串模式

      説明

      DataWorks は VPC 内の自己管理 MySQL データベースの [ネットワーク接続のテスト] を実行できません。 したがって、接続性テストが失敗するのは正常です。

    5. 目的のリソースグループを見つけて、[ネットワーク接続のテスト] をクリックします。

      データ統合専用リソースグループを使用して、データ同期タスクを実行できます。 データ同期タスクは、各実行中に 1 つのリソースグループでのみ実行できます。 データ同期タスクで複数のリソースグループが利用可能であり、すべてのリソースグループでデータ同期タスクが期待どおりに実行されるようにするには、選択した各リソースグループとデータソース間のネットワーク接続をテストする必要があります。 詳細については、「ネットワーク接続ソリューション」をご参照ください。

    6. 接続性テストが成功したら、[作成の完了] をクリックします。

  2. MaxCompute テーブルを作成します。

    MySQL データベースからテストデータを受信するために、DataWorks にテーブルを作成する必要があります。

    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. [表示名] パラメーターを設定し、[本番環境にコミット] をクリックします。 good_sale という名前の MaxCompute テーブルが作成されます。

  3. データ同期タスクを作成して設定します。

    1. 作成したワークフローを右クリックし、[ノードの作成] > [データ統合] > [オフライン同期] を選択してデータ同期タスクを作成します。

    2. 作成した MySQL データソースをソースとして選択し、追加した MaxCompute データソースを宛先として選択します。 [コードエディタに切り替え] アイコンをクリックしてコードエディタに切り替えます。

      [目的のソーステーブル] を選択できない場合、またはコードエディタに切り替えようとするとエラーが返される場合は、問題を無視してください。

    3. 右側のナビゲーションウィンドウで [リソースグループ設定] タブをクリックし、購入した専用リソースグループを選択します。

      タスクの実行に使用するデータ統合専用リソースグループを選択しないと、タスクの実行に失敗する可能性があります。

    4. データ同期タスクに次のコードを入力します。

      {
          "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_source",// MaxCompute データソースの名前。
                      "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 に同期されているかどうかを確認できます。

結果

MaxCompute テーブルのデータをクエリするには、[ODPS SQL] ノードを作成します。

select * from good_sale ; を入力し、[実行] アイコンをクリックします。 テストデータが表示された場合、テストデータは MaxCompute テーブルに同期されています。