このトピックでは、同期タスクを作成して MaxCompute から MySQL データソースにデータをエクスポートする方法について説明します。
前提条件
-
ApsaraDB RDS for MySQL インスタンスを作成し、そのインスタンス ID を取得済みであること。 また、ApsaraDB RDS コンソールで、必要な IP アドレスをホワイトリストに追加済みであること。 詳細については、「ApsaraDB RDS for MySQL インスタンスの作成」をご参照ください。
説明Serverless Resource Groupを使用して ApsaraDB RDS の同期タスクを実行する場合、次の点にご注意ください:
-
内部ネットワーク (VPC) 経由でデータソースにアクセスする場合、リソースグループにバインドされている vSwitch の CIDR ブロックをデータソースのホワイトリストに追加する必要があります。
-
インターネット経由でデータソースにアクセスする場合、Serverless Resource Groupがバインドされている Virtual Private Cloud (VPC) の Elastic IP Address (EIP) をデータソースのホワイトリストに追加します。
詳細については、「ホワイトリストの設定」をご参照ください。
-
-
ApsaraDB RDS for MySQL データベースを使用する場合、次の文を実行して、データベースに ODPS_RESULT という名前のテーブルを作成します:
CREATE TABLE `ODPS_RESULT` ( `education` varchar(255) NULL , `num` int(10) NULL );テーブルを作成した後、
DESC ODPS_RESULT;文を実行してテーブルの詳細を表示できます。 -
result_table という名前の結果テーブルが準備されていること。 詳細については、「テーブルの作成とデータのアップロード」をご参照ください。
-
仮想ノード (start) と ODPS SQL ノード (insert_data) が作成されていること。 詳細については、「ワークフローの作成」をご参照ください。
背景情報
DataWorks では、通常、Data Integration を使用して、システムで生成されたビジネスデータを定期的にワークスペースにインポートします。 SQL タスクでデータを計算した後、結果を定期的に指定のデータソースにエクスポートして、表示またはさらなる利用に供することができます。
Data Integration は、ApsaraDB RDS、MySQL、SQL Server、PostgreSQL、MaxCompute、ApsaraDB for Memcache (OCS)、PolarDB-X、Object Storage Service (OSS)、Oracle、FTP、DM、HDFS、MongoDB など、さまざまなデータソースからのデータのインポートまたはエクスポートをサポートしています。 サポートされているデータソースタイプの完全なリストについては、「サポートされているデータソースとプラグイン」をご参照ください。
ステップ 1:データソースの追加
ワークスペース管理者のみがデータソースを追加できます。 他のロールを持つメンバーは、データソースの表示のみ可能です。
-
DataWorks コンソールにログインします。 対象リージョンで、左側のナビゲーションウィンドウの をクリックします。 ドロップダウンリストからワークスペースを選択し、入力 管理センター をクリックします。
-
MySQL データソースを作成します。
-
左側のナビゲーションウィンドウで、 を選択し、データソースページに移動します。
-
Add をクリックします。 Add ダイアログボックスで、MySQL を選択します。
-
-
データソースを設定します。
MySQL データソースの追加 ダイアログボックスで、パラメーターを設定します。 この例では、Alibaba Cloud instance mode を選択します。
次の表に、主要なパラメーターを示します。
パラメーター
説明
適用環境
データソースを Development Environment と Production Environment で個別に設定します。
設定モード
Alibaba Cloud instance mode を選択します。
Alibaba Cloud アカウント
Current Alibaba Cloud Account を選択します。
リージョン
データソースが配置されているリージョンを選択します。
インスタンス
作成した ApsaraDB RDS for MySQL インスタンスを選択します。 インスタンスを選択した後、Obtain Latest Address をクリックしてインスタンスの詳細を表示できます。
利用可能なインスタンスがない場合は、ApsaraDB RDS コンソールに移動して作成できます。
データベース名、ユーザー名、パスワード
このデータソースのデフォルトのデータベース名を指定し、データベースのユーザー名とパスワードを入力します。 パスワードにアットマーク (@) を使用しないでください。
同期タスクを設定する際は、次の点にご注意ください:
-
データベースレベルの同期 (リアルタイムおよびバッチを含む) の場合、アクセス権限のある ApsaraDB RDS インスタンス内の任意のデータベースを選択できます。
-
バッチ同期タスクで複数のデータベースを使用する場合は、データベースごとに個別のデータソースを追加する必要があります。
認証方法
No Authentication を選択します。
セカンダリインスタンスの設定
データソースに読み取り専用インスタンス (セカンダリインスタンス) がある場合、タスクを設定する際に Configure Secondary Instance を有効にし、セカンダリインスタンス ID を選択できます。 セカンダリインスタンスを使用すると、プライマリインスタンスへの干渉を防ぎ、そのパフォーマンスを保護するのに役立ちます。 複数の読み取り専用インスタンスが存在する場合、利用可能なインスタンスの 1 つが読み取り操作のためにランダムに選択されます。
説明この機能は、サーバーレスリソースグループのみをサポートします。
-
-
リソースグループのネットワーク接続をテストします。
データ統合 および データスケジューリング タブで、対応するリソースグループの **ネットワーク接続のテスト** をクリックします。 「接続済み」ステータスは、テストが成功したことを示します。
説明-
同期タスクは、1 種類のリソースグループしか使用できません。
-
各リソースグループのデータソースへの接続性をテストする必要があります。 リソースグループが接続に失敗した場合、同期タスクは実行できません。
-
-
接続テストに合格したら、Complete Creation をクリックしてデータソースを追加します。
ステップ 2:同期タスクの作成と設定
write_result という名前の同期ノードを作成して、同期タスクを生成します。 このタスクは、result_table テーブルから MySQL データベースにデータを書き込みます。 次の手順に従います:
DataWorks コンソールにログインします。 対象リージョンで、左側のナビゲーションウィンドウの をクリックします。 ドロップダウンリストからワークスペースを選択し、入力 データ開発 をクリックします。
-
バッチ同期ノードを作成します。
アイコンをクリックし、 を選択して、バッチ同期ノードを作成します。 -
同期タスクのネットワーク接続を設定します。
-
ノード編集ページの Configure Network Connections and Resource Groups タブで、ソース を **MaxCompute(ODPS)** に、MySQL を **MySQL** に設定します。 リソースグループを選択し、データソースへの接続性をテストします。 ネットワーク設定の詳細については、「ネットワーク接続ソリューション」をご参照ください。
-
Next step をクリックして タスクの設定 ページに移動します。
-
-
同期タスクを設定します。
-
ソースと送信先を設定します。
ソース セクションで、データソースに MaxCompute(ODPS) を選択し、テーブル フィールドに
result_tableを入力します。 送信先 セクションで、データソースに MySQL を選択し、テーブル フィールドにODPS_RESULTを入力し、主キー競合ポリシー に insert into を選択します。 これにより、ソーステーブルが result_table に、送信先テーブルが ODPS_RESULT に設定されます。 ビジネス要件に基づいて他のパラメーターを設定できます。 詳細については、「コードレス UI 設定」をご参照ください。 -
フィールドマッピングを設定します。
ソースのフィールドを送信先のフィールドに対応付けます。 タスクはこのフィールドマッピングを使用してデータを書き込みます。
-
チャネル制御を設定します。
パラメーター
説明
Expected Maximum Concurrency
ソースからのデータ読み取り、または送信先へのデータ書き込みを同時に行う最大スレッド数。
説明-
リソース仕様などの要因により、ランタイムの実際の同時実行数は指定した値以下になる場合があります。 デバッグに使用されるリソースグループは、実際の同時実行数に基づいて課金されます。 詳細については、「パフォーマンスメトリック」をご参照ください。
-
タスクのスケジューリング料金は、設定された同時実行数ではなく、単一テーブルのバッチ同期タスクの数に依存します。
Sync Rate
この設定は、データ転送速度を制御します。
-
速度制限:同期レートを制限して、高い抽出速度によるソースデータベースの過負荷を防ぐことができます。 最小速度制限は 1 MB/s です。
-
速度制限なし:タスクは、設定された同時実行数の制限内で、ハードウェアがサポートする最大転送レートで実行されます。
説明このトラフィックメトリックは、Data Integration 内のスループットを測定するものであり、実際のネットワークインターフェースカード (NIC) のトラフィックではありません。 NIC トラフィックは通常、データストレージシステムのシリアル化オーバーヘッドに応じて、チャネルトラフィックの 1〜2 倍になります。
Policy for Dirty Data Records
ダーティデータとは、データ型の競合や制約違反などの例外により、タスクが送信先に書き込めなかったレコードを指します。 許容しきい値と、ダーティデータがタスクに与える影響を指定するダーティデータポリシーを定義できます。
-
デフォルトでは、ダーティデータは許可され、タスク実行に影響しません。
-
許容値を 0 に設定した場合、ダーティデータは許可されません。 同期中にダーティデータが生成されると、タスクは失敗します。
-
ダーティデータを許可し、しきい値を設定した場合:
-
ダーティデータレコードの数がしきい値内であれば、タスクはこれらのレコードを無視し (送信先には書き込まれません)、実行を継続します。
-
ダーティデータレコードの数がしきい値を超えると、タスクは失敗します。
-
重要過剰な量のダーティデータは、全体の同期速度を低下させる可能性があります。
Distributed Execution
この設定は、タスクを分散モードで実行するかどうかを制御します。
-
有効:タスクを複数の同時プロセスに分割します。 このモードは、単一プロセスのボトルネックを克服し、同期効率を向上させるのに役立ちます。
-
無効:タスクは単一プロセスとして実行されます。
パフォーマンス要件が高い場合や、断片化されたマシンリソースを効率的に利用するために、分散モードを使用します。
重要-
分散実行は、同時実行数が 8 以上に設定されている場合にのみ有効にできます。
-
分散実行を有効にすると、より多くのリソースを消費します。 ランタイムにメモリ不足 (OOM) エラーが発生した場合は、この設定を無効にしてみてください。
Time Zone
タイムゾーンをまたいでデータを同期するには、変換を有効にするためにソースのタイムゾーンを指定します。
-
-
タスクの依存関係を設定します。
現在の Workflow で、insert_data ノードを write_result ノードの上流ノードとして設定します。 ワークフローキャンバスで、insert_data ノードを write_result ノードに接続して、上流/下流の依存関係を確立します。 これは、write_result が insert_data の完了後に実行されることを意味します。
-
-
タスクを設定した後、ツールバーの
アイコンをクリックしてタスクを保存します。
ステップ 3:タスクのコミットとデプロイ
同期タスクを保存した後、ワークフローに戻ります。 ツールバーの
アイコンをクリックして、同期タスクをスケジューリングシステムにコミットします。 スケジューリングシステムは、設定されたスケジュールに基づいて、翌日からタスクを自動的に実行します。
次のステップ
このチュートリアルでは、同期タスクを作成して、さまざまな種類のデータソースにデータをエクスポートする方法について説明しました。 次のチュートリアルでは、同期タスクのスケジューリングプロパティと依存関係を設定する方法について説明します。 詳細については、「スケジューリングと依存関係の設定」をご参照ください。
関連ドキュメント
-
バッチ同期タスクの設定方法の詳細については、「コードレス UI 設定」をご参照ください。