このトピックでは、データ統合専用リソースグループを使用して、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 インスタンスにセキュリティグループルールを追加して、MySQL データベースが使用するポートでのアクセスリクエストを許可します。 デフォルトでは、MySQL データベースはポート 3306 を使用します。 詳細については、「セキュリティグループルールを追加する」をご参照ください。 セキュリティグループの名前をメモしておきます。
DataWorks ワークスペースが作成されていること。 この例では、基本モードで MaxCompute コンピュートエンジンを使用する DataWorks ワークスペースを作成します。 作成された DataWorks ワークスペースが ECS インスタンスと同じリージョンに属していることを確認してください。 ワークスペースの作成方法の詳細については、「ワークスペースを作成する」をご参照ください。
データ統合専用リソースグループが購入され、ECS インスタンスが存在する VPC に関連付けられていること。 専用リソースグループと ECS インスタンスは同じゾーンにあります。 詳細については、「データ統合専用リソースグループの作成と使用」をご参照ください。 専用リソースグループが VPC に関連付けられた後、リソースグループ ページで専用リソースグループに関する情報を表示できます。
タブで、[VPC]、[VSwitch]、および [セキュリティグループ] の情報が ECS インスタンスの情報と同じであるかどうかを確認します。

MaxCompute データソースが追加されていること。 詳細については、「MaxCompute コンピューティングリソースをバインドする」をご参照ください。
背景情報
排他的リソースは、データを高速かつ安定して転送できます。 データ統合専用リソースグループが、アクセスするデータソースと同じリージョンの同じゾーンに存在することを確認する必要があります。 また、データ統合専用リソースグループが DataWorks ワークスペースと同じリージョンに属していることも確認する必要があります。 この例では、ECS インスタンスにデプロイされた自己管理 MySQL データベースをデータソースとして使用します。
手順
DataWorks に MySQL データソースを追加します。
[データソース] ページに移動します。
DataWorks コンソールにログインします。 上部のナビゲーションバーで、目的のリージョンを選択します。 左側のナビゲーションウィンドウで、 を選択します。 表示されたページで、ドロップダウンリストから目的のワークスペースを選択し、[管理センターへ] をクリックします。
SettingCenter ページの左側のナビゲーションウィンドウで、[データソース] をクリックします。
[データソースの追加] をクリックします。
[データソースの追加] ダイアログボックスで、[MySQL] をクリックします。
[MySQL データソースの追加] ページで、パラメーターを設定します。 詳細については、「MySQL データソースを追加する」をご参照ください。
この例では、[設定モード] パラメーターを [接続文字列モード] に設定します。 ECS インスタンスのプライベート IP アドレスと MySQL データベースのデフォルトポート番号 3306 を [接続アドレス] フィールドに入力します。
説明DataWorks は VPC 内の自己管理 MySQL データベースの [ネットワーク接続のテスト] を実行できません。 したがって、接続性テストが失敗するのは正常です。
目的のリソースグループを見つけて、[ネットワーク接続のテスト] をクリックします。
データ統合専用リソースグループを使用して、データ同期タスクを実行できます。 データ同期タスクは、各実行中に 1 つのリソースグループでのみ実行できます。 データ同期タスクで複数のリソースグループが利用可能であり、すべてのリソースグループでデータ同期タスクが期待どおりに実行されるようにするには、選択した各リソースグループとデータソース間のネットワーク接続をテストする必要があります。 詳細については、「ネットワーク接続ソリューション」をご参照ください。
接続性テストが成功したら、[作成の完了] をクリックします。
MaxCompute テーブルを作成します。
MySQL データベースからテストデータを受信するために、DataWorks にテーブルを作成する必要があります。
左上隅の
アイコンをクリックし、 を選択します。[ワークフロー] を作成します。 詳細については、「自動トリガーワークフローを作成する」をご参照ください。
作成したワークフローを右クリックし、 を選択します。
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 );[表示名] パラメーターを設定し、[本番環境にコミット] をクリックします。 good_sale という名前の MaxCompute テーブルが作成されます。
データ同期タスクを作成して設定します。
作成したワークフローを右クリックし、 を選択してデータ同期タスクを作成します。
作成した MySQL データソースをソースとして選択し、追加した MaxCompute データソースを宛先として選択します。 [コードエディタに切り替え] アイコンをクリックしてコードエディタに切り替えます。
[目的のソーステーブル] を選択できない場合、またはコードエディタに切り替えようとするとエラーが返される場合は、問題を無視してください。
右側のナビゲーションウィンドウで [リソースグループ設定] タブをクリックし、購入した専用リソースグループを選択します。
タスクの実行に使用するデータ統合専用リソースグループを選択しないと、タスクの実行に失敗する可能性があります。
データ同期タスクに次のコードを入力します。
{ "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 } } }[実行] アイコンをクリックします。 ページ下部の [ランタイムログ] タブをクリックして、テストデータが MaxCompute に同期されているかどうかを確認できます。
結果
MaxCompute テーブルのデータをクエリするには、[ODPS SQL] ノードを作成します。
文 select * from good_sale ; を入力し、[実行] アイコンをクリックします。 テストデータが表示された場合、テストデータは MaxCompute テーブルに同期されています。