DataWorks のバッチデータベース同期機能では、ソースデータベースからターゲットに、一部またはすべてのテーブルのスキーマとデータを定期的に同期します。同期モードは、完全同期、増分同期、またはその両方を組み合わせたモードに対応しています。次の例では、 MySQL から MaxCompute への移行を例に、設定プロセスを説明します。
前提条件
-
データソース
-
リソースグループ: サーバーレスリソースグループを購入して設定してください。
-
ネットワーク接続: ネットワーク接続を確立してください。
適用性
バッチデータベース同期タスクは、[データ開発] と [Data Integration] の両方で設定できます。どちらのモジュールでも、機能は同一です。
-
一貫した構成:DataStudio と Data Integration のいずれでタスクを作成しても、インターフェイス、パラメータ、基盤となる機能は同一です。
-
双方向同期:Data Integration は、タスクを自動的に DataStudio の
data_integration_jobsディレクトリに同期して表示します。これらのタスクは、統合管理できるよう、SourceType-DestinationTypeチャネル別に分類されます。 -
T+1 データ同期:バッチデータベース同期は、T+1 データベース同期のシナリオにも適用できます。定期的な完全同期、または組み込みの初回完全同期と、それに続く定期的な増分同期として設定できます。これにより、日次スケジュールのフルスナップショット、または増分 ETL パイプラインを実現できます。
同期タスクの設定
ステップ1:同期タスクの作成
-
DataWorks コンソールにログインします。 左側のナビゲーションウィンドウで、[Data Integration] をクリックします。 表示されるページで、ドロップダウンリストから目的のワークスペースを選択し、[Data Integrationに移動] をクリックします。
-
左側のナビゲーションペインで、同期タスク をクリックし、次にページの上部にある 同期タスクの作成 をクリックします。タスク情報を設定します:
-
[データソースタイプ]:
MySQL。 -
[データ宛先タイプ]:
MaxCompute。 -
[詳細種別]:
バッチデータベース同期。 -
[同期ステップ]: 同期ステップ 設定は、後続の 同期ステップ 設定と連携して動作します。これらを組み合わせることで、さまざまな同期ソリューションを作成できます。詳細については、「完全および増分制御」をご参照ください。
-
[スキーマ移行]: 移行元のスキーマと一致するように、移行先にテーブル、フィールド、データ型などのデータベースオブジェクトを自動的に作成しますが、データは移行しません。
-
[全量同期] (オプション):テーブルなどの指定されたソースオブジェクトからすべての履歴データを、1 回の操作で宛先にコピーします。これは通常、初期データ移行またはデータ初期化に使用されます。
-
[増分同期] (オプション): 完全同期が完了した後、このモードでは[増分条件]に基づいてソースから新しいデータを継続的にキャプチャし、宛先に同期します。
-
-
ステップ2:データソースとランタイムリソースの設定
-
ソースデータソース セクションで、ワークスペースの
MySQLデータソースを選択します。宛先データソース セクションで、追加したMaxComputeデータソースを選択します。 -
実行中のリソース セクションで、同期タスクの リソースグループ を選択し、リソースグループ CU を割り当てます。同期タスクがメモリ不足 (OOM) エラーで失敗した場合は、割り当て済みの リソースグループ CU を増やします。
-
ソースデータソースと宛先データソースの両方が接続性チェックに合格することを確認してください。
ステップ3:同期ソリューションの設定
1. データソース
[ソーステーブル] セクションでソースデータソースから同期するテーブルを選択し、
アイコンをクリックして右側の [選択されたテーブル] リストに追加します。

テーブル選択モードには、[指定されたテーブルを選択] と [正規表現を使用してテーブルを選択] の2つがあります。正規表現モードでは、タスクの実行中に一致するテーブルの追加と削除も行います。モードを切り替えると、もう一方のモードで選択されたすべてのテーブルがクリアされます。テーブルを一括で追加するには、右上隅の [テーブルの一括貼り付け] をクリックします。
データベースやテーブルが多数ある場合は、ライブラリフィルター または テーブルフィルタ を使用し、正規表現を設定して同期したいテーブルを選択できます。
2. 宛先
新しい宛先テーブルのパーティションを均一に初期化するには、パーティション初期化設定 の横にある 設定 ボタンをクリックします。ここで行った変更は、すべての 新しい 宛先テーブルに適用され、既存のテーブルには影響しません。
3. フル/増分コントロール
-
タスクの実行頻度を設定します。
-
「フル同期」または「増分同期」を選択した場合、タスクを [ワンタイム] タスクまたは [周期的] タスクとして実行するかを選択できます。
-
「フル同期」と「増分同期」の両方を選択した場合、システムは「初回実行はワンタイムのフル同期、その後は周期的な増分同期」という組み込みモードを使用します。このオプションは変更できません。
同期ステップ
フル/増分コントロール
動作
ユースケース
フル同期
ワンタイム
タスクが開始されると、ソーステーブルからすべてのデータを1回同期し、宛先テーブルまたは指定されたパーティションに書き込みます。
データ初期化、システム移行
周期的
設定されたスケジューリング周期に基づき、ソーステーブルから宛先テーブルまたは指定されたパーティションへ定期的にすべてのデータを同期します。
データリコンシリエーション、T+1 フルスナップショット
増分同期
ワンタイム
タスクが開始されると、定義した増分条件に基づいて、指定されたパーティションに増分データを1回同期します。
特定のデータバッチの手動修復
周期的
タスクが開始されると、設定されたスケジューリング周期と増分条件に基づいて、指定されたパーティションに定期的に増分データを同期します。
日次 ETL、履歴テーブルの構築
フル同期 & 増分同期
(組み込みモード、選択不可)
初回実行:ワンタイムのスキーマ移行と履歴データのフル同期を自動的に実行します。
後続の実行:設定されたスケジューリング周期と増分条件に基づいて、指定されたパーティションに定期的に増分データを同期します。
データウェアハウスまたはデータレイクへのワンクリックデータインジェスト
説明-
バッチデータベース同期では、システムは [デプロイ後すぐに開始] に設定されたタスクと同じ方法で周期的タスクのインスタンスを生成します。詳細については、「インスタンス生成方法:デプロイ後すぐに開始」をご参照ください。
-
後続のターゲットテーブルのフィールドへの値割り当てステップで、パーティション生成方法を定義できます。 定数を使用するか、システムで事前定義された変数とスケジューリングパラメーターを使用してパーティションを動的に生成できます。
-
[スケジューリング周期]、[増分条件]、およびパーティション生成方法の設定は相互に依存します。詳細については、「6. 増分条件」をご参照ください。
-
-
-
スケジューリングパラメーターを設定します。
タスクに定期的な同期が含まれる場合、定期スケジュールのパラメーター をクリックして設定します。これらのパラメーターは、後で宛先テーブルマッピングの[増分条件]と[フィールド値の割り当て]を設定する際に使用できます。
4. 宛先テーブルマッピング
ソーステーブルと宛先テーブル間のマッピングルールを定義し、[周期的設定] と [増分条件] を通じてデータの書き込み方法を指定します。

ページの上部には、[データベース名の検索] と [ソーステーブルの検索] の検索ボックスがあります。また、[すべて表示]、[未更新のテーブルのみ表示]、[更新に失敗したテーブルのみ表示] のフィルターオプションもあります。各行の [操作] 列には [削除] リンクが含まれています。テーブルの下には [一括削除] および [一括変更] ボタンが表示されます。
|
操作 |
説明 |
||||||||||||
|
マッピングの更新 |
システムは選択したソーステーブルを自動的にリスト表示しますが、宛先テーブルのプロパティを適用するにはマッピングを更新する必要があります。
|
||||||||||||
|
フィールドタイプのマッピングの編集 (オプション) |
システムには、ソースと宛先のフィールドタイプ間にデフォルトのマッピングがあります。マッピングをカスタマイズするには、右上隅のフィールド型マッピングの編集をクリックします。設定後、マッピングの適用とパージをクリックします。 フィールドタイプのマッピングを編集する際は、変換ルールが正しいことを確認してください。そうしないと、型変換が失敗し、ダーティデータが発生してタスクの実行に影響を与える可能性があります。 |
||||||||||||
|
宛先テーブル名マッピングのカスタマイズ (オプション) |
システムには、
この機能は、次のシナリオをサポートしています:
|
||||||||||||
|
宛先データベース名マッピングのカスタマイズ (オプション) |
Hologres などの一部の宛先データソースでは、宛先データベースのマッピングルールを定義できます。設定方法は [宛先テーブル名マッピングのカスタマイズ] と同じです。 |
||||||||||||
|
宛先スキーマ名マッピングのカスタマイズ (オプション) |
Hologres などの一部の宛先データソースでは、宛先スキーマのマッピングルールを定義できます。設定方法は [宛先テーブル名マッピングのカスタマイズ] と同じです。 |
||||||||||||
|
宛先テーブルスキーマの編集 (オプション) |
システムはソーステーブルのスキーマに基づいて宛先テーブルのスキーマを自動的に生成します。通常、これを変更する必要はありません。特別な要件がある場合は、次のようにカスタマイズできます:
|
||||||||||||
|
宛先テーブルフィールドの値の割り当て |
パーティションフィールドと新しく追加されたフィールドには、手動で値を割り当てる必要があります。標準フィールドは、ソーステーブルと宛先テーブルで一致する名前に基づいて自動的にマッピングされます。次の手順に従います:
定数または変数を割り当てることができます。テーブルフィールドとパーティションフィールドの割り当て方式では、以下のタイプに切り替えることができます。
変数とスケジューリングパラメーターは、タスクのスケジュール実行時に、日付固有の値に自動的に置き換えられます。 |
||||||||||||
|
ソースシャーディング列の設定 |
ソースシャーディング列では、ソーステーブルからフィールドを選択するか、チャンクしない を選択できます。同期タスクが実行されると、DataWorks はこのフィールドに基づいてタスクを複数のサブタスクに分割し、データの並行バッチ読み取りを可能にします。 テーブルのプライマリキーをソースシャーディング列として使用することを推奨します。文字列型、浮動小数点型、日付型は使用できません。 現在、ソースシャーディング列は MySQL ソースでのみ使用できます。 |
||||||||||||
|
高度なパラメーターのカスタマイズ |
これらのパラメーターは、内容を十分に理解している場合にのみ変更してください。設定を誤ると、タスクの遅延、リソースの競合、またはデータの損失が発生する可能性があります。サブタスクごとに、個別の[書き込み側の設定]と[ランタイム設定]を設定できます。 |
||||||||||||
|
テーブルタイプ |
テーブルタイプ:MaxCompute は、標準テーブル、PK Delta Table、および Append Delta Table に対応しています。宛先テーブルのステータスが「作成予定」の場合、宛先テーブルスキーマの編集時にテーブルタイプを選択できます。既存のテーブルのタイプは変更できません。 Delta Table の詳細については、「Delta Table」をご参照ください。 |
5. 周期的設定
増分同期が 定期的 として設定されている場合、宛先テーブルの 定期設定 を完了する必要があります。これには、スケジューリング周期、スケジュール時刻、リソースグループのスケジューリング などの設定が含まれます。この同期タスクのスケジューリング設定は、DataStudio のノードスケジューリング設定と一致します。パラメーターの詳細については、「ノードのスケジューリングを設定する」をご参照ください。
ワンタイム同期に多数のテーブルが含まれる場合、タスクの蓄積やリソースの競合を防ぐため、スケジュール内で実行時間をずらすことを推奨します。
6. 増分条件
タスクが増分データを同期する必要がある場合は、増分条件を設定する必要があります。この条件によって、各スケジュールされたインスタンスがどのデータを同期するかが決まります。
-
機能と構文
-
機能:増分条件は、ソースデータをフィルタリングする
WHERE句です。 -
構文:設定時には、
WHEREキーワードに続く条件式のみを入力する必要があり、WHEREキーワード自体は含めません。
-
-
増分同期にスケジューリングパラメーターを使用する
周期的な増分同期を実現するため、増分条件でスケジューリングパラメーターを使用できます。たとえば、条件を
として設定すると、前日に生成されたデータが同期されます。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 パイプラインを作成できます。
バッチデータベース同期タスクで例外やエラーが発生した場合 (たとえば、誤ったパーティションパラメーター設定によりデータが同期されない場合)、まずタスクの外部で [停止] をクリックしてタスクを完全に停止します。その後、ソーステーブルのシャーディング列に関連する設定を含む、パーティションパラメーターまたは値の割り当て設定を修正してから、タスクを再公開して開始します。タスクを直接再実行すると、不整合な状態になる可能性があるため避けてください。
ステップ4:高度な設定
高度なパラメーター
カスタム同期要件に合わせてタスクを微調整するには、高度なパラメーターを変更します。
-
右上隅の [高度な設定] をクリックして、高度なパラメーター設定ページに移動します。
-
ツールチップに基づいてパラメーター値を変更します。各パラメーターの意味は、その名前の横に説明されています。
-
タスクの同時実行数の調整など、自然言語の指示を入力して AI 支援設定を使用することもできます。AI モデルが推奨パラメーター値を生成し、それを確認して承認できます。

これらのパラメーターは、内容を完全に理解している場合にのみ変更してください。誤った設定は、タスクの遅延、リソースの競合、またはデータ損失を引き起こす可能性があります。
エンジンパラメーター
通常、エンジンパラメーターを設定する必要はありません。変更が必要な場合は、テクニカルサポートからの指示がある場合にのみ使用してください。
ステップ5:タスクのデプロイと実行
-
すべての設定を完了したら、ページ下部の保存をクリックしてタスクの設定を完了します。
-
バッチ同期タスクは直接デバッグできません。実行するには、発行 して オペレーションセンター で実行する必要があります。したがって、新規作成または編集したタスクは、変更を反映させるためにデプロイする必要があります。
-
デプロイ中に、公開後すぐに起動 を選択した場合、タスクは自動的に開始されます。それ以外の場合は、デプロイが完了した後、 ページに移動し、「操作」列からタスクを手動で開始します。
-
詳細な実行プロセスを表示するには、タスク一覧 でタスクの 名前 / ID をクリックします。
-
デプロイ後に「開始」をクリックしても応答がない場合、またはプログレスバーが更新されない場合は、まずオペレーションセンターで対応するサブタスクの実行ログを確認し、具体的なエラー詳細を取得してください。また、デプロイ中に 公開後すぐに起動 を選択したか、またはデプロイ後に「アクション」列から手動で「開始」をクリックしたかどうかを確認してください。
ステップ6:アラートルールの設定
バッチデータベース同期タスクのアラートルールは、オペレーションセンター内の対応するサブタスクで設定する必要があります。
-
ページで、対象のタスクのタスクID を取得します。
-
列で、統合タスクの ID に基づいて、対応する全データベースのオフラインサブタスク (たとえば、統合タスク ID が
34862の場合、増分同期の自動トリガーサブタスクはoffline_odps_cyc_sync_mysql_test_timetest_to_mysql_test_timetest_34862という名前になります) を見つけ、 をクリックしてルール管理ページに移動します。 -
カスタムルールの作成 をクリックし、ルールオブジェクト、トリガー方式、および アラーム動作 を設定します。 詳細については、「ルール管理」をご参照ください。
取得したサブタスク ID をルールオブジェクトで検索し、対象のタスクのアラートを設定できます。
同期タスクの管理
タスクの編集
-
ページで、作成した同期タスクを見つけます。操作 列で もっと見る をクリックし、次に 編集 をクリックしてタスク情報を変更します。手順はタスク設定と同じです。
-
[実行中でない] タスクの場合、直接設定を変更し、保存してデプロイすると変更が有効になります。
-
[実行中] のタスクの場合、編集してデプロイする際に 公開後すぐに起動 を選択しないと、元のアクションボタンが アプリケーションの更新 に変わります。本番環境で変更を有効にするには、このボタンをクリックする必要があります。
-
[更新を適用] をクリックすると、システムは [停止]、[デプロイ]、[再起動] の 3 つのステップを実行します。
-
テーブルを追加した場合:
[更新を適用] をクリックすると、新しいテーブルの同期サブタスクが追加されます。タスクの スキーマ移行 と 初回全量同期 がすぐに開始され、その後スケジュールに従って 増分同期 が実行されます。
-
宛先テーブルを切り替えた場合 (古いテーブルを削除して新しいテーブルを追加するのと同じです):
[更新を適用] をクリックすると、古いテーブルのサブタスクが削除され、新しいサブタスクが作成され、新しいタスクの スキーマ移行 と 初回全量同期 がすぐに開始されます。その後、新しいタスクはスケジュールに従って増分同期を実行します。
-
その他の情報が変更された場合:
テーブルのスキーマ移行と初回全量同期は変更されません。増分同期のために新しく生成されたインスタンスは更新された設定を使用しますが、生成済みのインスタンスは影響を受けません。
変更されていないテーブルは影響を受けず、再実行されません。
-
タスクの表示
同期タスクを作成した後、同期タスク ページでタスク リストと基本情報を表示できます。

各タスクについて、同期タスク リストには [タスク名]、[タスク ID]、[データソース] と 宛先データソース、[タスクタイプ]、[ステータス] が表示されます。続く列には、[スキーマ移行]、[全量同期]、[増分同期] のサブタスク ステージのステータスが表示され、その後に [グループ] が続きます。
-
[操作] 列では、同期タスクの 起動 または 停止 ができます。[その他] メニューでは、[編集] や 詳細 などの操作を実行できます。
-
実行中のタスクの場合、実行概要 で基本的なステータスを確認できます。また、対応する概要領域をクリックして実行詳細を表示することもできます。

タスク詳細ページの [基本情報] セクションには、タスク ID、データソース、同期ソリューション、同期リソースグループ、ステータス、仕様が表示されます。[実行ステータス] セクションでは、プログレスバーで スキーマ移行、全量同期、増分同期 ステージの進行状況と完了率が表示されます。ステージ タブをクリックすると、各テーブルの同期詳細が表示されます。詳細には、ソース データベース、ソース テーブル、宛先 テーブル、接続方法、進行状況、書き込みレコード数が含まれます。
クォータと制限事項
-
デバッグの制限:Data Integration または DataStudio でバッチ同期タスクを直接デバッグすることはできません。実行するには、オペレーションセンターに [デプロイ] する必要があります。
-
シャーディングカラムの制限:[ソースシャーディングカラムの設定] 機能は、現在 MySQL ソースのみをサポートしています。シャーディングカラムのフィールドは数値型である必要があります。文字列型、浮動小数点型、日付型はサポートされていません。
-
スキーマ変更の制限:[デスティネーションテーブルスキーマの編集] 時、カラム名の変更はサポートされていません。既存のデスティネーションテーブルの [テーブルタイプ] を変更することはできません。
-
DDL 変更検出の制限:バッチデータベース同期 (オフライン) では、フィールドの追加やフィールドタイプの変更など、ソースでの DDL 変更を自動的に検出しません。ソーステーブルスキーマが変更された後、デスティネーションは新しいスキーマを自動的に同期しません。追加されたフィールドを同期するには、まずデスティネーションテーブルを削除します。次に、タスク編集ページで [デスティネーションテーブルマッピング] に移動し、[マッピングの一括更新] をクリックしてソーステーブルスキーマを再読み込みし、全量同期を再実行します。ソースでの DDL 変更を自動的に同期する必要がある場合は、リアルタイムバッチデータベース同期を使用してください。これには、高度な設定に [DDL サポート設定] が用意されています。
-
フィールドレベル操作の制限:特定のフィールド (XML 形式のフィールドなど) の削除、フィルタリング、スキップはサポートされておらず、カスタムフィールドマッピングもサポートされていません。フィールドを削除したり、複雑な変換を適用したりする必要がある場合は、代わりに単一テーブルオフライン同期タスクを使用するか、コードノード (Spark または Python) でデータを処理してください。
-
大文字と小文字の区別の制限:デフォルトでは、テーブル名とフィールド名はデスティネーションに書き込まれる前に小文字に変換されるため、大文字と小文字を区別した転送 (PostgreSQL など) はサポートされていません。ソースに大文字と小文字を区別するテーブルが含まれているために同期が失敗する場合は、ソーステーブルの名前を小文字に変更するか、代わりに単一テーブルオフライン同期を使用することを推奨します。
-
メタデータ説明の制限:ソーステーブルの説明を直接表示したり、デスティネーションにマッピングしたりすることはできません。新しいデスティネーションテーブルを作成する際に、フィールドの説明を手動で設定することのみ可能です。
次のステップ
タスクが開始したら、[タスク名] をクリックして実行の詳細を表示し、運用保守 (O&M) とチューニングを行います。
よくある質問
バッチデータベース同期タスクに関するよくある質問については、「完全同期および増分同期タスクに関するよくある質問」をご参照ください。
Q:バッチデータベース同期タスクで 1 つのテーブルの同期に失敗した場合、ほかのテーブルに影響しますか。
A:Data Integration タスク内のテーブル間に上流または下流の依存関係がない場合、1 つのテーブルの同期失敗は、ほかのテーブルの同期に影響しません。該当テーブルのサブタスクのみが失敗し、ほかのテーブルは通常どおり実行されます。
Q:バッチデータベース同期 (オフライン) タスクで、ソーステーブルに追加したフィールドがターゲットテーブルに同期されない場合はどうすればよいですか。
A:バッチデータベース同期 (オフライン) はソースの DDL 変更を自動検出しません。そのため、ソースに追加したフィールドはターゲットに自動的に反映されません。追加したフィールドを同期するには、まずターゲットテーブルを削除します。次に、タスクの編集ページで [ターゲットテーブルマッピング] に移動し、[マッピングの一括更新] をクリックしてソーステーブルスキーマを再読み込みし、完全同期を再実行します。業務要件でソースに追加したフィールドを自動同期する必要がある場合は、代わりにリアルタイムバッチデータベース同期を使用します。この機能の詳細設定には [DDL サポート設定] が用意されており、次の DDL イベントの処理ポリシーを設定できます:テーブル作成、テーブル削除、列追加、列削除、テーブル名の変更、列名の変更、列のデータ型変更、テーブルの切り捨て。列追加イベントはデフォルトで通常どおり処理されます。
その他のユースケース
「バッチデータベース同期のユースケース」をご参照ください。
ボタンをクリックし、手動入力 と 組み込み変数 を組み合わせることで、宛先テーブル名を構築できます。サポートされている変数には、ソースデータソース名、ソースデータベース名、およびソーステーブル名が含まれます。





ボタンをクリックしてフィールドを追加します。
ツールチップで確認できます。