すべてのプロダクト
Search
ドキュメントセンター

DataWorks:リアルタイム完全データベース同期タスクを設定する

最終更新日:Nov 09, 2025

リアルタイム完全データベース同期は、1 回限りの完全移行と継続的な増分データキャプチャを組み合わせたものです。この機能は、MySQL や Oracle などのソースデータベース全体を、低レイテンシーでターゲットシステムに同期します。リアルタイム完全データベース同期タスクは、ソースデータベースからの既存データの完全同期をサポートします。ターゲットのテーブルスキーマとデータを自動的に初期化し、その後リアルタイム増分モードに切り替わります。Change Data Capture (CDC) などのテクノロジーを使用して、後続のデータ変更を継続的にキャプチャして同期します。この機能は、Hologres や Data Lake Formation の構築などのシナリオに適しています。このトピックでは、MySQL データベースから MaxCompute へのリアルタイム同期を例に、タスクの設定方法について説明します。

準備

  • データソースの準備

    • ソースデータソースとターゲットデータソースを作成します。詳細については、「データソース管理」をご参照ください。

    • データソースがリアルタイム完全データベース同期をサポートしていることを確認してください。詳細については、「サポートされているデータソースと同期ソリューション」をご参照ください。

    • Hologres や Oracle などの一部のデータソースでは、ロギングを有効にする必要があります。ロギングを有効にする方法はデータソースによって異なります。詳細については、「データソースリスト」をご参照ください。

  • リソースグループ: Serverless リソースグループを購入して設定します。

  • ネットワーク接続: リソースグループとデータソース間のネットワーク接続を設定します。

エントリポイント

DataWorks コンソールにログインします。上部のナビゲーションバーで、目的のリージョンを選択します。左側のナビゲーションウィンドウで、[データ統合] > [データ統合] を選択します。表示されたページで、ドロップダウンリストから目的のワークスペースを選択し、[データ統合へ] をクリックします。

制限事項

DataWorks は、リアルタイム完全および増分 (ニアリアルタイム) の 2 種類の完全データベース同期をサポートしています。どちらのタイプも、ソースデータベースから既存データの完全同期を実行し、その後自動的に増分モードに切り替わります。ただし、これらは適時性とターゲットテーブルの要件が異なります:

  • 適時性: リアルタイム同期のレイテンシーは数秒から数分です。完全および増分 (ニアリアルタイム) 同期のレイテンシーは T+1 です。

  • ターゲットテーブル (MaxCompute): リアルタイム同期は Delta Tables のみをサポートします。完全および増分 (ニアリアルタイム) 同期は、すべてのテーブルタイプをサポートします。

タスクを設定する

1. 同期タスクを作成する

同期タスクは、次の 2 つの方法のいずれかで作成できます:

  • 方法 1: 同期タスクページで、[ソース] を MySQL に、[ターゲット] を MaxCompute に設定し、[同期タスクの作成] をクリックします。

  • 方法 2: 同期タスクページで、タスクリストが空の場合は、[作成] をクリックできます。

image

2. 基本情報を設定する

  1. タスク名、説明、オーナーなどの基本情報を設定します。

  2. 同期タイプを選択します。利用可能な [同期タイプ] オプションは、ソースデータベースとターゲットデータベースのタイプによって決まります。このトピックでは、[データベース全体リアルタイム] を選択します。

  3. 同期ステップ:

    • [スキーマ移行]: ソースに一致するデータベースオブジェクト (テーブル、フィールド、データの型など) をターゲットに自動的に作成しますが、データは含まれません。

    • [完全同期] (オプション): テーブルなどの指定されたオブジェクトのすべての既存データを、ソースからターゲットに 1 回の操作でコピーします。このステップは通常、初期データ移行またはデータ初期化に使用されます。

    • [増分同期] (オプション): 完全同期が完了した後、ソースからのデータ変更 (追加、変更、削除など) を継続的にキャプチャし、ターゲットに同期します。

3. 同期するデータベースとテーブルを選択する

[ソーステーブル] エリアで、ソースデータソースから同期するテーブルを選択します。image アイコンをクリックして、テーブルを [選択したテーブル] リに移動します。

image

多数のデータベースとテーブルがある場合は、[データベースフィルター] または [テーブルフィルター] を使用して、正規表現を設定することで同期するテーブルを選択できます。

4. ターゲットテーブルにマッピングする

このステップでは、ソーステーブルとターゲットテーブル間のマッピングルールを定義します。プライマリキー、動的パーティション、および DDL/DML 構成のルールを指定して、データの書き込み方法を決定します。

操作

説明

マッピングの更新

システムは選択したソーステーブルを自動的にリストします。ただし、ターゲットテーブルの特定のプロパティは、更新して確認した後にのみ有効になります。

  • バッチで同期するテーブルを選択し、[バッチマッピングの更新] をクリックします。

  • ターゲットテーブル名: ターゲットテーブル名は、[カスタムテーブル名マッピング] ルールに基づいて自動的に生成されます。デフォルトのフォーマットは ${source_database_name}_${table_name} です。同じ名前のテーブルがターゲットに存在しない場合、システムは自動的にテーブルを作成します。

ターゲットテーブル名マッピングのカスタマイズ (オプション)

システムにはデフォルトのテーブル名生成ルールがあります: ${source_database_name}_${table_name}。また、[編集] 列の [カスタムターゲットテーブル名マッピング] ボタンをクリックして、カスタムターゲットテーブル名ルールを追加することもできます。

  • ルール名: ルールの名前を定義します。ビジネス上の意味が明確な名前を付けることをお勧めします。

  • ターゲットテーブル名: image ボタンをクリックし、[手動入力] および [組み込み変数] オプションを使用してターゲットテーブル名を構築します。サポートされている変数には、ソースデータソース名、ソースデータベース名、ソーステーブル名が含まれます。

  • 組み込み変数の編集: 元の組み込み変数に対して文字列変換を実行できます。

これにより、次のシナリオが可能になります:

  1. プレフィックスまたはサフィックスの追加: 定数を設定して、ソーステーブル名にプレフィックスまたはサフィックスを追加します。

    ルール設定

    結果

    image

    image

  2. 統一された文字列の置換: ソーステーブル名の文字列 "dev_" を "prd_" に置き換えます。

    ルール設定

    結果

    image

    image

  3. 複数のテーブルを 1 つのテーブルに書き込みます。

    ルール設定

    結果

    image

    image

フィールドタイプマッピングの編集 (オプション)

システムは、ソースとターゲットのフィールドタイプ間のデフォルトのマッピングを提供します。テーブルの右上隅にある [フィールドタイプマッピングの編集] をクリックして、マッピングをカスタマイズできます。設定が完了したら、[適用してマッピングを更新] をクリックします。

フィールドタイプマッピングを編集する際は、フィールドタイプの変換ルールが正しいことを確認してください。そうしないと、型変換の失敗によりダーティデータが生成され、タスクの実行に影響を与える可能性があります。

ターゲットテーブルスキーマの編集 (オプション)

システムは、カスタムテーブル名マッピングルールに基づいて、まだ存在しないターゲットテーブルを自動的に作成するか、同じ名前の既存のテーブルを再利用します。

DataWorks は、ソーステーブルスキーマに基づいてターゲットテーブルスキーマを自動的に生成します。ほとんどのシナリオでは、手動での介入は必要ありません。次の方法でテーブルスキーマを変更することもできます:

  • 単一テーブルへのフィールド追加: [ターゲットテーブル名] 列の image.png ボタンをクリックします。

  • バッチでのフィールド追加: 同期するすべてのテーブルを選択します。テーブルの下部で、[バッチ変更] > [ターゲットテーブルスキーマ - フィールドのバッチ変更と追加] を選択します。

  • 列の名前変更はサポートされていません。

既存のテーブルの場合、フィールドの追加のみが可能です。新しいテーブルの場合、フィールドとパーティションフィールドを追加し、テーブルタイプまたはテーブルプロパティを設定できます。詳細については、UI の編集可能なエリアをご参照ください。

ターゲットテーブルフィールドへの値の割り当て

ネイティブフィールドは、ソーステーブルとターゲットテーブルの同じ名前のフィールドに基づいて自動的にマッピングされます。前のステップで追加された新しいフィールドとパーティションフィールドには、手動で値を割り当てる必要があります。次の操作を実行します:

  • 単一テーブルの割り当て: [ターゲットテーブルフィールドの割り当て] 列の [設定] ボタンをクリックして、ターゲットテーブルのフィールドに値を割り当てます。

  • バッチでの値の割り当て: リストの下部で、[バッチ変更] > [ターゲットテーブルフィールドへの値の割り当て] を選択して、ターゲットテーブルの同一フィールドにバッチで値を割り当てます。

[割り当て方法] オプションを使用して、定数と変数を割り当て、タイプを切り替えることができます。サポートされている方法は次のとおりです:

  • テーブルフィールド

    • 手動割り当て: abc などの定数値を直接入力します。

    • 変数の選択: ドロップダウンリストからシステムがサポートする変数を選択します。インターフェイスの image ツールチップで各変数の具体的な意味を確認できます。

    • 関数: 関数を使用して、ターゲットフィールドに簡単な変換を実行します。詳細については、「関数式を使用してターゲットテーブルフィールドに値を割り当てる」をご参照ください。

  • パーティションフィールド: ソースフィールドの列挙値またはイベント時間をパーティション値として使用して、パーティションを動的に作成します。

    • 手動割り当て: abc などの定数値を直接入力します。

    • ソースフィールド: ソーステーブルフィールドの値をパーティションフィールド値として使用します。値の型はフィールド値または時間値にすることができます。

      • フィールド値: ソースフィールドの列挙値。パーティションが多すぎてデータが広範囲に分散するのを防ぐために、一意の値の数が限られているフィールドを使用することをお勧めします。

      • 時間値: ソースフィールドに時間値が含まれている場合、そのフォーマットに従って処理し、[ターゲットフォーマット] を指定して解析された値をフォーマットできます。

        • 時間文字列: "2018-10-23 02:13:56" や "2021/05/18" など、時間値を表す文字列です。ソースとターゲットの時間フォーマットを指定することで、時間値にシリアル化されます。たとえば、前述の文字列は、yyyy-MM-dd HH:mm:ss および yyyy/MM/dd フォーマットを使用して検出用にシリアル化できます。

        • 時間オブジェクト: ソース値が DateDatetime などの時間型の場合は、この型を直接選択します。

        • UNIX タイムスタンプ (秒): 秒単位のタイムスタンプで、1610529203"1610529203" などの 10 桁の数値または文字列にすることができます。

        • UNIX タイムスタンプ (ミリ秒): ミリ秒単位のタイムスタンプです。1610529203002"1610529203002" など、13 桁のタイムスタンプ形式に準拠する数値または文字列をサポートします。

    • 変数の選択: ソースイベントの変更時間である EVENT_TIME をパーティション値のソースとして使用します。使用方法はソースフィールドと同様です。

    • 関数: 関数を使用してソースフィールドに簡単な変換を実行し、その結果をパーティション値として使用します。詳細については、「関数式を使用してターゲットテーブルフィールドに値を割り当てる」をご参照ください。

説明

注: パーティションの数が多すぎると、同期効率に影響を与える可能性があります。1 日に 1,000 を超える新しいパーティションが作成されると、パーティションの作成は失敗し、タスクは終了します。したがって、パーティションフィールドの割り当て方法を定義する際には、パーティションの潜在的な数を推定してください。秒またはミリ秒レベルでパーティションを作成する場合は注意が必要です。

ソース分割キーの設定

ソース分割キーのドロップダウンリストで、ソーステーブルからフィールドを選択するか、[分割しない] を選択します。同期タスクが実行されると、このフィールドに基づいて複数のタスクに分割され、データを同時かつバッチで読み取ります。

テーブルのプライマリキーをソース分割キーとして使用することをお勧めします。文字列、浮動小数点、日付、およびその他の型はサポートされていません。

現在、ソース分割キーはソースが MySQL の場合にのみサポートされています。

完全同期の実行

ステップ 2 で完全同期を設定した場合、特定のテーブルに対して完全データ同期を実行しないことを選択できます。これは、完全データが他の手段によってすでにターゲットに同期されているシナリオで役立ちます。

完全同期条件

完全同期フェーズ中にソースデータをフィルターします。`where` キーワードではなく、`where` 句のみを入力してください。

DML ルール設定

DML メッセージ処理は、ソースからキャプチャされた変更データ (InsertUpdateDelete) がターゲットに書き込まれる前に、詳細なフィルタリングと制御を実行するために使用されます。このルールは増分フェーズ中にのみ適用されます。

その他

  • [テーブルタイプ]: MaxCompute は標準テーブルと Delta Tables をサポートしています。ターゲットテーブルのステータスが作成保留中の場合、ターゲットテーブルスキーマを編集するときにテーブルタイプを選択できます。既存のテーブルのタイプは変更できません。

    リアルタイム完全データベース同期は、ターゲットテーブルタイプとして Delta Tables のみをサポートします。標準テーブルについては、「完全および増分 (ニアリアルタイム) 同期タスク」をご参照ください。
  • テーブルタイプが Delta Table の場合、[テーブルバケット数][既存データクエリ期間] を定義できます。

Delta Tables の詳細については、「Delta Table」をご参照ください。

5. DDL 機能を設定する

一部のリアルタイム同期チャネルは、ソーステーブルスキーマのメタデータ変更を検出し、それに応じてターゲットに更新を通知したり、アラートの送信、変更の無視、タスクの終了などの他のアクションを実行したりできます。

インターフェイスの右上隅にある [DDL 機能設定] をクリックして、変更の種類ごとに処理ポリシーを設定できます。サポートされている処理ポリシーはチャネルによって異なります。

  • 通常処理: ターゲットはソースからの DDL 変更情報を処理します。

  • 無視: 変更メッセージを無視します。ターゲットは変更されません。

  • アラート: ソースでこの種の変更が発生したときにアラートを送信します。このオプションには [アラート設定] が必要です。

  • エラー: リアルタイム完全データベース同期タスクを終了し、そのステータスを [エラー] に設定します。

説明

注: DDL 同期によって新しい列がソースに追加され、ターゲットにも作成された場合、システムはターゲットテーブルの既存の行に対してこの列のデータをバックフィルしません。

6. その他の設定を行う

アラート設定

1. アラートを追加する

image

(1) [アラートの追加] をクリックしてアラートルールを作成します。

[アラート理由] を設定して、データ遅延フェールオーバーステータスタスクステータスDDL 変更タスクリソース使用率などのタスクメトリックを監視し、指定されたしきい値に基づいて CRITICAL または WARNING アラートレベルを指定できます。

[疲労制御] 機能を使用すると、アラートメッセージを送信する時間間隔を設定できます。これにより、一度に大量のメッセージが送信されるのを防ぎ、メッセージの蓄積を回避できます。

(2) アラートルールを管理する。

作成されたアラートルールについては、アラートスイッチを使用して有効または無効にできます。アラートレベルに基づいて、さまざまな担当者にアラートを送信することもできます。

2. アラートを表示する

タスクリストを展開し、[その他] > [アラート設定] を選択します。[アラートイベント] ページで、生成されたアラート情報を表示できます。

リソースグループの設定

インターフェイスの右上隅にある [リソースグループ] パネルで、タスクのリソースグループとその設定を管理できます。

1. リソースグループの表示と切り替え

  • [リソースグループ] をクリックして、現在のタスクにアタッチされているリソースグループを表示します。

  • リソースグループを変更するには、パネルで別のアクティブなリソースグループに切り替えることができます。

2. リソースの調整と「リソース不足」エラーのトラブルシューティング

  • タスクログに Please confirm whether there are enough resources... のようなリソース不足を示すメッセージが含まれている場合、現在のリソースグループにタスクを開始または実行するためのコンピューティングユニット (CU) が不足していることを意味します。[リソースグループ] パネルで、CU の数を増やすことで、タスクにより多くの計算リソースを割り当てることができます。

推奨される CU 設定については、「Data Integration の推奨 CU」をご参照ください。実際の値は、特定の状況に基づいて調整する必要があります。

詳細パラメーター設定

カスタム同期要件を満たすためにタスクに詳細な設定を適用するには、[設定] 列の [カスタム詳細パラメーター] をクリックします。

  1. ページの右上隅にある [詳細パラメーター設定] をクリックします。

  2. ツールチップに従ってパラメーター値を変更します。各パラメーターの意味は、その名前の後に説明されています。

重要

注: タスクの遅延、他のタスクをブロックする過剰なリソース消費、またはデータ損失などの予期しない問題を回避するために、これらのパラメーターの意味を完全に理解している場合にのみ変更してください。

7. 同期タスクを実行する

  1. 設定が完了したら、ページの下部にある [設定の完了] をクリックします。

  2. [データ統合] > [同期タスク] ページで、作成した同期タスクを見つけ、[開始] 列の [アクション] をクリックします。

  3. [タスクリスト] で、タスクの [名前/ID] をクリックして実行の詳細を表示します。

タスクを編集する

  1. [データ統合] > [同期タスク] ページで、作成した同期タスクを見つけます。[アクション] 列で [その他] をクリックし、次に [編集] をクリックします。手順はタスクの設定と同じです。

  2. 未送信のタスクについては、設定を直接変更し、[設定の完了] をクリックして変更を保存できます。

  3. 送信済みのタスクの設定を変更すると、アクションボタンが [更新の適用] に変わります。このボタンをクリックして、変更をオンライン環境に適用します。

  4. [更新の適用] をクリックすると、システムは変更に対して [停止][公開][再起動] の 3 つのステップを実行します。

    • 変更に新しいテーブルの追加または既存のテーブルの切り替えが含まれる場合:

      更新を適用する際にオフセットを選択することはできません。確認後、システムは新しいテーブルに対してスキーマ移行完全初期化を実行します。完全初期化が完了すると、新しいテーブルは他の元のテーブルとともに増分操作を開始します。

    • 他の情報を変更する場合:

      更新を適用する際にオフセットを選択できます。確認後、タスクは指定されたオフセットから実行を継続します。オフセットを指定しない場合、最後に停止したオフセットから実行されます。

    変更されていないテーブルは影響を受けません。更新と再起動の後、最後に停止したオフセットから実行を継続します。

タスクを表示する

同期タスクを作成した後、同期タスクページで作成したタスクのリストとその基本情報を表示できます。

image

  • [アクション] 列では、同期タスクを [開始] または [停止] できます。[その他] の下で、編集[表示] などの他の操作を実行できます。

  • [実行概要] セクションでは、実行中のタスクの基本ステータスを表示し、対応するエリアをクリックして実行の詳細を表示できます。

    image

ブレークポイントから再開する

シナリオ

タスクの開始または再起動時にオフセットを手動でリセットすることは、主に次のシナリオに適用されます:

  • タスクの回復とデータの継続: タスクが中断された場合、タスクが正しいブレークポイントから再開されるように、中断時点を新しい開始オフセットとして手動で指定する必要がある場合があります。

  • データの問題のトラブルシューティングとバックトラッキング: 同期されたデータにデータの損失や異常が見つかった場合、問題が発生する前の時点にオフセットをロールバックして、データを再生および修復できます。

  • タスク設定の大きな変更: タスク設定に大きな調整 (ターゲットテーブルスキーマやフィールドマッピングなど) を加えた後、新しい設定下でのデータの正確性を確保するために、明確な時点から同期を開始するようにオフセットをリセットすることをお勧めします。

手順

[開始] をクリックします。ポップアップウィンドウで、[オフセットのリセット] を選択します:

image

  • オフセットをリセットせずに直接実行: タスクは最後の停止オフセット (最後のチェックポイント) から実行を継続します。

  • オフセットをリセットして時間を選択: タスクは指定された時間オフセットから実行を開始します。選択した時間が、ソースのバイナリログでサポートされている最も早い時間オフセットより前でないことを確認してください。

重要

注: 同期タスクの実行中にオフセットが正しくないか存在しないことを示すエラーメッセージが表示された場合は、次の解決策を試してください:

  • オフセットのリセット: リアルタイム同期タスクを開始するときに、オフセットをリセットし、ソースデータベースで利用可能な最も早いオフセットを選択します。

  • ログ保持期間の調整: データベースのオフセットが期限切れになった場合は、データベースのログ保持期間をたとえば 7 日間に調整することを検討してください。

  • データ同期: データが失われた場合は、完全同期を再度実行するか、オフライン同期タスクを設定して失われたデータを手動で同期することを検討してください。

よくある質問

リアルタイム完全データベース同期に関する一般的な質問への回答については、「リアルタイム同期に関する FAQ」および「完全および増分同期タスクに関する FAQ」をご参照ください。

その他の例