このトピックでは、Data Integrationの排他的リソースグループを使用して、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インスタンスと同じリージョンに属していることを確認します。 ワークスペースを作成する方法の詳細は、「ワークスペースの作成」をご参照ください。
Data Integration用の排他的リソースグループが購入され、ECSインスタンスが存在するVPCに関連付けられます。 排他的リソースグループと ECS インスタンスは同じゾーンにあります。 詳細については、「Data Integrationの排他的リソースグループの作成と使用」をご参照ください。 排他的リソースグループがVPCに関連付けられた後、リソースグループ ページで排他的リソースグループに関する情報を表示できます。
排他的リソースグループの [VPCバインディング] タブで、排他的リソースグループの [VPC] 、[vSwitch] 、および [セキュリティグループ] に関する情報がECSインスタンスの情報と同じかどうかがチェックされます。
MaxComputeデータソースが追加されました。 詳細については、「MaxComputeデータソースの追加」をご参照ください。
背景情報
排他的なリソースは、高速かつ安定した方法でデータを送信できます。 Data Integrationの排他的リソースグループが、アクセスするデータソースと同じリージョンの同じゾーンにあることを確認する必要があります。 また、Data Integrationの排他的リソースグループがDataWorksワークスペースと同じリージョンに属していることを確認する必要があります。 この例では、ECSインスタンスにデプロイされた自己管理型MySQLデータベースがデータソースとして使用されます。
手順
DataWorksにMySQLデータソースを追加します。
[データソース] ページに移動します。
DataWorks コンソールにログインします。 上部のナビゲーションバーで、目的のリージョンを選択します。 左側のナビゲーションウィンドウで、 を選択します。 表示されるページで、ドロップダウンリストから目的のワークスペースを選択し、[入力管理センター] をクリックします。
[SettingCenter] ページの左側のナビゲーションウィンドウで、 を選択します。
[データソース] ページで、データソースの追加. をクリックします。
では、データソースの追加ダイアログボックスで、MySQL. を選択します。
[MySQLデータソースの追加] ページで、パラメーターを設定します。 詳細については、「MySQL データソース」をご参照ください。
この例では、Configuration ModeパラメーターをConnection String Modeに設定します。 [接続アドレス] フィールドに、ECSインスタンスのプライベートIPアドレスとMySQLデータベースのデフォルトのポート番号3306を入力します。
説明DataWorksは、VPC内の自己管理型MySQLデータベースの接続性をテストすることはできません。 したがって、接続性テストが失敗するのは正常です。
目的のリソースグループを見つけて、ネットワーク接続のテスト. をクリックします。
Data Integrationの排他的リソースグループを使用して、データ同期タスクを実行できます。 データ同期タスクは、各実行中に1つのリソースグループでのみ実行できます。 データ同期タスクで複数のリソースグループを使用でき、すべてのリソースグループでデータ同期タスクを期待どおりに実行する場合は、選択した各リソースグループとデータソース間のネットワーク接続をテストする必要があります。 詳細については、「ネットワーク接続ソリューション」をご参照ください。
接続テストが成功した場合は、完全な作成. をクリックします。
MaxComputeテーブルを作成します。
MySQLデータベースからテストデータを受信するには、DataWorksでテーブルを作成する必要があります。
左上隅のアイコンをクリックしと. を選択します。ワークフローを作成します。 詳細については、「自動トリガーワークフローの作成」をご参照ください。
作成したワークフローを右クリックし、. を選択します。
MaxComputeテーブルの名前を入力します。 この例では、Nameパラメーターをgood_saleに設定します。これは、MySQLデータベースのテーブルの名前と同じです。 [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データソースを宛先として選択します。 [コードエディターに切り替え] アイコンをクリックして、コードエディターに切り替えます。
目的のソーステーブルを選択できない場合、またはコードエディターに切り替えるときにエラーが返された場合は、問題を無視してください。
をクリックし、リソースグループの設定右側のナビゲーションウィンドウのタブをクリックし、購入した排他的なリソースグループを選択します。
タスクの実行に使用するData Integrationの排他的リソースグループを選択しないと、タスクの実行に失敗する可能性があります。
データ同期タスクに次のコードを入力します。
{ "type": "job", "steps": [ { "stepType": "mysql", "parameter": { "column": [// The names of the columns. "create_time", "category", "brand", "buyer_id", "trans_num", "trans_amount", "click_cnt" ], "connection": [ { "datasource": "shuai",// The source. "table": [ "good_sale"// The name of the table in the source database. The name must be enclosed in brackets []. ] } ], "where": "", "splitPk": "", "encoding": "UTF-8" }, "name": "Reader", "category": "reader" }, { "stepType": "odps", "parameter": { "partition": "", "truncate": true, "datasource": "odps_source",// The name of the MaxCompute data source. "column": [// The columns in the destination table. "create_time", "category", "brand", "buyer_id", "trans_num", "trans_amount", "click_cnt" ], "emptyAsNull": false, "table": "good_sale"// The name of the destination table. }, "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テーブルに同期されます。