DataWorks のデータベース全体のオフライン同期機能を使用すると、ソースデータベースからターゲットへ、テーブルスキーマとデータの全部または一部をバッチで同期できます。完全同期タスクまたは増分同期タスクを定期的に実行できます。この機能は、データ移行のための効率的なソリューションを提供します。このトピックでは、MySQL データベース全体を MaxCompute に移行する例を用いて、このタイプのタスクを設定する一般的なプロセスについて説明します。
事前準備
データソースの準備
ソースデータソースとターゲットデータソースを作成します。データソースの設定方法の詳細については、「データソース管理」をご参照ください。
データソースがデータベース全体のオフライン同期をサポートしていることを確認してください。詳細については、「サポートされているデータソース」をご参照ください。
リソースグループ:Serverless リソースグループを購入し、設定します。
ネットワーク接続:リソースグループとデータソース間のネットワーク接続を確立します。
機能へのアクセス
DataWorks コンソールにログインします。上部のナビゲーションバーで、目的のリージョンを選択します。左側のナビゲーションウィンドウで、 を選択します。表示されたページで、ドロップダウンリストから目的のワークスペースを選択し、[データ統合へ] をクリックします。
タスクの設定
1. 同期タスクの作成
以下のいずれかの方法で同期タスクを作成できます:
方法 1:同期タスクページで、[ソース] と [ターゲット] を選択し、[同期タスクの作成] をクリックします。この例では、ソースに MySQL を、ターゲットに MaxCompute を選択します。
方法 2:同期タスクページで、タスクリストが空の場合、[作成] をクリックします。

2. 基本情報の設定
タスク名、タスクの説明、オーナーなどの基本情報を設定します。
同期タイプを選択します。ソースとターゲットのデータベースタイプに基づき、Data Integration はサポートされている [同期タイプ] を表示します。この例では、[データベース全体のオフライン] を選択します。
同期ステップ: スキーマ移行、フル同期、および増分同期がサポートされています。フル同期と増分同期は任意です。[同期ステップ] 設定は、[フルコントロールと増分コントロール] 設定に関連付けられています。これらの設定を組み合わせることで、さまざまな同期ソリューションを作成できます。詳細については、「フルコントロールと増分コントロール」をご参照ください。
ネットワークとリソースの設定:同期タスクを実行する [リソースグループ] を選択し、[ソースデータソース] と [ターゲットデータソース] を選択します。次に、リソースグループとデータソース間のネットワーク接続をテストします。
3. 同期するデータベースとテーブルの選択
[ソーステーブル] エリアで、ソースデータソースから同期するテーブルを選択します。
アイコンをクリックして、テーブルを [選択したテーブル] リストに移動します。

データベースやテーブルが多数ある場合は、[データベースフィルター] または [テーブルフィルター] を使用して、正規表現を設定することで同期したいテーブルを選択できます。
4. ターゲットテーブルのプロパティ設定
[パーティション初期化設定] の横にある [設定] ボタンをクリックして、すべての新しいターゲットテーブルの初期パーティション設定を行います。ここで行った変更は、すべての新しいターゲットテーブルのパーティション設定を上書きします。既存のターゲットテーブルは影響を受けません。
5. 完全・増分制御の設定
タスクの完全同期と増分同期のタイプを設定します。
「完全同期」または「増分同期」を選択すると、タスクを1 回限り実行するか、定期的に実行するかを選択できます。
「完全同期」と「増分同期」の両方を選択した場合、システムは、初回は完全同期、以降は定期的な増分同期という組み込みモードを使用します。このオプションは変更できません。
同期ステップ
完全・増分制御
データ書き込みの説明
シナリオ
完全同期
1回限り
タスク開始後、ソーステーブルのすべてのデータがターゲットテーブルまたは指定されたパーティションに一度に同期されます。
データ初期化、システム移行
定期的
設定されたスケジュール周期に基づいて、ソーステーブルのすべてのデータがターゲットテーブルまたは指定されたパーティションに定期的に同期されます。
データリコンサイル、T+1 完全スナップショット
増分同期
1回限り
タスク開始後、指定した増分条件に基づいて、増分データが指定されたパーティションに一度に同期されます。
バッチデータの手動修正
定期的
タスクが開始されると、設定された[スケジュール周期]と[増分条件]に基づいて、増分データが指定されたパーティションに定期的に同期されます。
毎日の抽出・変換・書き出し (ETL)、ジッパーテーブルの構築
完全同期 & 増分同期
(組み込みモード、選択不可)
初回実行:システムは自動的に初期スキーマ同期と既存データの完全同期を実行します。
後続の実行: 増分データは、設定された[スケジュール周期]と[増分条件]に基づいて、指定されたパーティションに定期的に同期されます。
ワンクリックでのデータウェアハウス/データレイクへの取り込み
説明データベース全体のオフライン同期では、タスクを公開するとすぐに定期スケジュールのインスタンスが生成されます。詳細については、「インスタンス生成方法:公開後すぐに生成」をご参照ください。
[宛先テーブルフィールドへの値の割り当て] ステップで、パーティションの生成方法を定義できます。 定数を使用するか、システムで事前定義された変数と定期的なスケジュールパラメーターを使用してパーティションを動的に生成できます。
スケジューリングサイクル、増分条件、およびパーティション生成メソッドの構成は相互に関連しています。詳細については、「増分条件」をご参照ください。
定期スケジュールのパラメーターを設定します。
タスクに定期的な同期が含まれる場合は、[定期スケジュールパラメーター] をクリックして設定します。これらのパラメーターは、後で宛先テーブルマッピングで増分条件とフィールド値の割り当てを設定する際に使用できます。
6. ターゲットテーブルマッピングの設定
このステップでは、ソーステーブルと宛先テーブル間のマッピングルールを定義する必要があります。また、データの書き込み方法を指定するために、[定期スケジュール] と [増分条件] も定義する必要があります。

ターゲットテーブルの設定
操作 | 説明 | ||||||||||||
マッピングの更新 | システムは選択したソーステーブルを自動的にリストアップします。ただし、マッピングを更新してターゲットテーブルの特定のプロパティを確定しないと、それらは有効になりません。
| ||||||||||||
ターゲットテーブル名のマッピングのカスタマイズ (オプション) | システムにはテーブル名を生成するためのデフォルトルールがあります:
これにより、以下のシナリオが可能になります:
| ||||||||||||
フィールドタイプリッピングの編集 (オプション) | システムには、ソースとターゲットのフィールドタイプ間のデフォルトマッピングがあります。テーブルの右上隅にある [フィールドタイプリッピングの編集] をクリックして、ソーステーブルとターゲットテーブル間のフィールドタイプマッピングをカスタマイズできます。設定後、[適用してマッピングを更新] をクリックします。 フィールドタイプマッピングを編集する際は、型変換ルールが正しいことを確認してください。そうしないと、型変換が失敗し、ダーティデータが発生してタスク実行に影響を与える可能性があります。 | ||||||||||||
ターゲットテーブルスキーマの編集 (オプション) | システムはソーステーブルスキーマに基づいてターゲットテーブルスキーマを自動的に生成します。ほとんどのシナリオでは、手動での介入は不要です。特別な処理が必要な場合は、以下の方法でカスタマイズできます:
| ||||||||||||
ターゲットテーブルフィールドへの値の割り当て | 標準フィールドは、ソーステーブルと宛先テーブル間で名前が一致することに基づいて自動的にマップされます。パーティションフィールド、および前のステップで追加された新しいフィールドには、手動で値を割り当てる必要があります。次の操作を実行します。
定数または変数を割り当てることができます。 | ||||||||||||
ソースシャーディング列の設定 | ソースシャーディング列では、ソーステーブルからフィールドを選択するか、ドロップダウンリストから [シャーディングしない] を選択できます。同期タスクが実行されると、このフィールドに基づいて複数のタスクにシャーディングされ、同時バッチデータ読み取りが可能になります。 テーブルのプライマリキーをソースシャーディング列として使用することを推奨します。文字列、浮動小数点、日付などの型はサポートされていません。 現在、ソースシャーディング列はソースが MySQL の場合にのみサポートされています。 | ||||||||||||
その他 |
Delta テーブルの詳細については、「Delta テーブル」をご参照ください。 |
定期スケジュール
増分同期が [繰り返し] に設定されている場合、宛先テーブルの [繰り返しスケジュール] を設定する必要があります。これには、[スケジューリングサイクル]、[スケジューリング時間]、および [スケジューリングリソースグループ] が含まれます。この同期タスクのスケジューリング構成は、Data Development のノードスケジューリング構成と一致します。パラメーターの詳細については、「ノードスケジューリング」をご参照ください。
1回限りの同期タスクに多数のテーブルが含まれる場合、タスクのバックログやリソース競合を防ぐために、スケジュールを設定する際に実行時間をずらすことを推奨します。
増分条件
タスクが増分データを同期する必要がある場合は、増分条件を設定する必要があります。この条件は、定期スケジュールの各インスタンスがどのデータを同期するかを決定します。
機能と構文
機能:増分条件は、本質的にソースデータをフィルタリングする
WHERE句です。構文:条件を設定する際は、
WHEREに続く条件式のみを入力してください。WHEREキーワード自体は含めないでください。
スケジュールパラメーターを使用した増分同期の実現
定期的な増分同期を実装するには、増分条件でスケジュールパラメーターを使用できます。たとえば、条件を
<span data-tag="ph" id="codeph_rtz_ohk_wy5"><code code-type="xCode" data-tag="code" id="68c36d2fd9h4l">STR_TO_DATE('${bizdate}', '%Y%m%d') <= columnName AND columnName < DATE_ADD(STR_TO_DATE('${bizdate}', '%Y%m%d'), INTERVAL 1 DAY)' に設定して、前日に新しく生成されたデータを同期できます。特定のパーティションへの書き込み
増分条件とターゲットテーブルのパーティションフィールドを組み合わせることで、各バッチの増分データが正しいパーティションに書き込まれるようにできます。
たとえば、前述の増分条件を使用して、パーティションフィールドを
ds=${bizdate}に設定し、ターゲットテーブルを日次でパーティション分割するように設定します。これにより、各日のインスタンスはソースの対応する日付のデータのみを同期し、それをターゲットテーブルの同じ名前のパーティションに書き込みます。
増分条件の時間範囲、パーティション生成の時間間隔、および定期的なスケジュールのスケジューリング周期を適切に組み合わせることで、自動化された T+n 増分 ETL パイプラインを作成できます。このパイプラインでは、ビジネスルールは物理パーティションと厳密に整合します。
7. その他の設定
アラート設定
タスク実行後、オペレーションセンターでスケジューリングタスクが生成されます。タスクエラーによるビジネスデータの同期遅延を避けるために、同期タスクにアラートポリシーを設定できます。
[タスクリスト] で、実行中の同期タスクを見つけます。[操作] 列で、 をクリックしてタスク設定ページを開きます。
[次へ] をクリックし、ページの右上隅にある [アラート設定] をクリックしてアラート設定ページを開きます。
[スケジュール情報] 列で、生成されたスケジューリングタスクをクリックしてオペレーションセンターのタスク詳細ページを開き、[タスク ID] を取得します。
オペレーションセンターの左側のナビゲーションウィンドウで、 をクリックしてルール管理ページを開きます。
[カスタムルールの作成] をクリックします。[ルールオブジェクト]、[トリガーメソッド]、および [アラート動作] を設定します。詳細については、「ルール管理」をご参照ください。
[ルールオブジェクト] セクションで取得したタスク ID を検索してターゲットタスクを見つけ、アラートを設定できます。
リソースグループ設定
インターフェイスの右上隅にある [リソースグループ設定] をクリックして、現在のタスクで使用されているリソースグループを表示および切り替えることができます。
詳細パラメーター設定
カスタム同期要件を満たすためにタスクを詳細に設定するには、[カスタム詳細パラメーター] 列の [設定] をクリックして詳細パラメーターを変更します。
インターフェイスの右上隅にある[高度なパラメーター構成]をクリックすると、高度なパラメーター構成ページが開きます。
プロンプトに従ってパラメーター値を変更します。各パラメーターの意味は、その名前の後に説明されています。
これらのパラメーターの意味を完全に理解している場合にのみ変更してください。タスクの遅延、他のタスクをブロックする過剰なリソース使用量、またはデータ損失などの予期しない問題を避けるためです。
8. 同期タスクの実行
設定が完了したら、ページ下部の [完了] をクリックします。
ページで、作成した同期タスクを見つけ、[操作] 列の [開始] をクリックします。
[タスク] で、タスクの [名前/ID] をクリックして実行詳細を表示します。
タスクの編集
ページで、作成した同期タスクを見つけます。[操作] 列で [その他] をクリックし、次に [編集] をクリックしてタスク情報を変更します。手順は新しいタスクの設定と同じです。
[実行中] 状態ではないタスクの場合、構成を直接変更して保存できます。変更は、タスクを公開した後に有効になります。
[実行中] のタスクでは、編集して公開する際に[公開後すぐに実行を開始]を選択しない場合、元の操作ボタンは[更新を適用]に変わります。変更を本番環境で有効にするには、このボタンをクリックする必要があります。
Apply Updates をクリックすると、システムは変更されたコンテンツに対して、[停止]、[公開]、および [再起動] の 3 つのステップを実行します。
テーブルを追加した場合:
「更新を適用」をクリックすると、新規テーブルの同期サブタスクが追加されます。このサブタスクのスキーマ移行と 1 回限りの完全同期がすぐに開始されます。その後、増分同期はスケジュールに従って進行します。
ターゲットテーブルを切り替えた場合 (これは古いテーブルを削除して新しいテーブルを追加するのと同じです):
「更新を適用」をクリックすると、古いテーブルのサブタスクが削除され、新しいテーブルのサブタスクが生成されます。新しいサブタスクのスキーマ移行と1 回の完全同期が直ちに開始されます。その後、新しいサブタスクはスケジュールに従って増分同期を実行します。
その他の情報を変更した場合:
テーブルのスキーマ移行と1回限りの完全同期は影響を受けません。増分同期のために生成される新しいインスタンスは、更新された設定を使用します。すでに生成されているインスタンスは影響を受けません。
変更されていないテーブルは影響を受けず、再実行されません。
タスクの表示
同期タスクを作成した後、同期タスクページで作成された同期タスクのリストとその基本情報を表示できます。

[操作] 列で、同期タスクを [開始] または [停止] できます。[その他] の下で、[編集] や [表示] などの操作を実行できます。
実行中のタスクについては、[実行概要] セクションでその基本ステータスを表示できます。また、概要エリアをクリックして実行詳細を表示することもできます。

次のステップ
タスクが開始された後、タスク名をクリックしてその実行詳細を表示し、タスクの O&M とチューニング を実行できます。
よくある質問
オフラインのデータベース全体の同期タスクに関するよくある質問については、「完全同期タスクと増分同期タスクに関するよくある質問」をご参照ください。
ボタンをクリックし、[手動入力] と [組み込み変数] の値を組み合わせてターゲットテーブル名を生成できます。変数には、ソースデータソース名、ソースデータベース名、ソーステーブル名が含まれます。





ボタンをクリックします。
アイコンを使用して、割り当てモードを切り替えます。定数を使用するか、システムで事前定義された 変数 と 定期的なスケジュールパラメーター を使用して動的に値を生成できます。コード内の 変数 と 定期的なスケジュールパラメーター は、タスクのスケジュール時に自動的に置き換えられます。