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

DataWorks:オフラインシャーディング同期タスクの構成

最終更新日:Jan 06, 2026

DataWorks では、コードレス UI またはコードエディタでオフライン同期タスクを構成して、シャーディングされたデータベースとテーブルから単一の宛先テーブルにデータを同期できます。このトピックでは、シャーディングされた MySQL データベースとテーブルからのデータ同期を例に挙げて説明します。

前提条件

同期するデータソースを準備します。詳細については、「サポートされているデータソースと読み取り/書き込みプラグイン」をご参照ください。

概要

以下のいずれかの方法を使用して、シャーディングされたデータベースとテーブル用のオフライン同期タスクを作成できます。次の表は、これらの方法を比較したものです。

相違点

シャーディングデータソース + コードレス UI (推奨)

標準データソース + コードレス UI

コードエディタ

コードレス UI のサポート

はい

はい

いいえ

ルールによるテーブル名構成

正規表現でソーステーブル名を設定できます。実行時に、タスクは正規表現に基づいて一致するテーブルを検索して同期します。

サポートされていません。

テーブル名を tb_[1-10] のような数値範囲で設定できます。範囲は連続している必要があり、各子テーブルが存在する必要があります。

同一のテーブルスキーマが必要

欠損フィールドポリシーを構成して、一部のテーブルにフィールドが欠損することを許可できます。これらのフィールドは NULL に設定されます。

同一のテーブルスキーマが必要です。

フィールドマッピングのリファレンス

シャーディングデータソースのメタデータソース内で最初に一致したテーブル。

最初のデータソースの最初のテーブル。

コードエディタで手動で構成。

サポートされるデータソースの数

シャーディングデータソースは最大 5,000 のデータソースを参照できます。

シングルノードに対して最大 50 のデータソースを構成できます。

データソースを追加するためにノードの変更と公開が必要

ノードを変更する必要はありません。データソースを変更すると、変更は新しいインスタンスで有効になります。

タスクを変更してデータソースを追加し、そのテーブル名を設定する必要があります。

サポートされるデータソースタイプ

MySQL、PolarDB、PolarDB-O、OceanBase

MySQL、PolarDB、AnalyticDB、OceanBase

MySQL、PolarDB、AnalyticDB、SQL Server、Oracle、PostgreSQL、DM、DB2、OceanBase

シャーディングデータソース + コードレス UI

  1. データ統合ページに移動します。

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

  2. 左側のナビゲーションウィンドウで [データソース] をクリックし、次に [データソースの追加] をクリックします。データソースタイプを選択します。この方法は MySQL、PolarDB、および PolarDB-O をサポートしています。

  3. 各シャーディングデータベースを標準データソースとして作成します。このトピックでは MySQL を例として使用します。詳細については、「データソース構成」をご参照ください。

    image

  4. [シャード] データソースを作成します。標準データソースを統合し、データ同期用の単一ソースとします。

    1. [データソースの追加] をクリックし、[シャード] を選択します。イメージ

    2. シャーディングデータソースタイプを選択し、パラメーターを構成します。このトピックでは MySQL (シャーディング) を例として使用します。

      image

      主要なパラメーターの説明:

      • [データソース名] をカスタマイズします。

      • [データソースの選択]:各シャーディングデータベース用に作成した標準データソースを選択します。

      • [メタデータソース]:シャーディングされたデータベースとテーブルの同期では、すべてのデータソースにわたるすべてのデータベースとテーブルのスキーマが同一である必要があります。デフォルトのメタデータのテンプレートとして使用するデータソースを選択します。これにより、同期タスクは構成中にデフォルトのデータベースとテーブルのスキーマをプルできます。

        重要

        データソース内のデータベースとテーブルのスキーマが同一でない場合、同期タスクは失敗します。

  5. オフライン同期ノードを作成します

  6. シャーディングされたデータベースとテーブルの同期タスクを構成します。

    コードレス UI で、[データソース] パラメーターを [MySQL (シャーディング)] に設定し、既存のシャーディングデータソースを選択します。タスクの構成方法の詳細については、「コードレス UI での構成」をご参照ください。

    説明

    このトピックでは MySQL (シャーディング) を例として使用します。必要に応じてデータソースタイプを選択できます。

    image

  7. [次へ] をクリックします。

  8. 同期したいテーブルを選択し、[保存][公開] をクリックして、後続のステップを完了します。

    image

標準データソース + コードレス UI

  1. 各シャーディングデータベースを標準データソースとして作成します。このトピックでは MySQL を例として使用します。詳細については、「データソース構成」をご参照ください。

    image

  2. オフライン同期ノードを作成します

  3. シャーディングされたデータベースとテーブルの同期タスクを構成します。

    コードレス UI で、シャーディングされたデータベースとテーブルの同期タスクを構成します。[データソース] セクションで、[+ データソースの編集] をクリックして複数のデータソースを追加します。タスクの構成方法の詳細については、「コードレス UI での構成」をご参照ください。

    image

  4. 標準データソースを [選択したデータソース] リストに追加し、[OK] をクリックします。

    image

  5. [次へ] をクリックします。

  6. 各データソースについて、同期したいテーブルを選択します。[保存][公開] をクリックして、後続のステップを完了します。

    重要

    デフォルトでは、[シャーディングデータソースは同じアカウントとパスワードを使用します] オプションが選択されています。これは、すべてのシャーディングデータソースが、最初のデータソースに構成されたアカウントとパスワードを使用してデータベースにアクセスすることを意味します。シャーディングされたデータベースが異なるアカウントとパスワードを使用する場合は、このオプションの選択を解除してください。このオプションの選択を解除すると、それぞれのデータソースで構成されたアカウントとパスワードが使用されます。

    image

コードエディタ

  1. オフライン同期ノードを作成します

  2. シャーディングされたデータベースとテーブルの同期タスクを構成します。

    次のスクリプト例は、コードエディタモードでシャーディングを構成する方法を示しています。詳細については、「コードエディタでの構成」をご参照ください。

    重要

    コードを実行する前に、コメントを削除してください。

    {
        "type":"job",
        "version":"2.0",
        "steps":[
            {
                "stepType":"mysql",
                "parameter":{
                    "envType":0,
                    "column":[
                        "id",
                        "name"
                    ],
                    "socketTimeout":3600000,
                    "tableComment":"",
                    "connection":[    // シャーディングされたデータベースの数に基づいて接続を構成します。
                        {
                            "datasource":"datasourceName1",  // シャーディング用のデータソース 1
                            "table":[           // シャーディング用のテーブルリスト 1
                                "tb1"
                            ]
                        },
                        {
                            "datasource":"datasourceName2", // シャーディング用のデータソース 2
                            "table":[          // シャーディング用のテーブルリスト 2
                                "tb2",
                                "tb3"
                            ]
                        }
                    ],
                    "useSpecialSecret":true,// 各データソースは独自のパスワードを使用します。
                    "where":"",
                    "splitPk":"id",
                    "encoding":"UTF-8"
                    },
                "name":"Reader",
                "category":"reader"
                },
            {
                "stepType":"odps",
                "parameter":{
                    "partition":"pt=${bizdate}",
                    "truncate":true,
                    "datasource":"odpsname",
                    "envType":0,
                    "isSupportThreeModel":false,
                    "column":[
                        "id",
                        "name"
                    ],
                    "emptyAsNull":false,
                    "tableComment":"",
                    "table":"t1",
                    "consistencyCommit":false
                    },
                "name":"Writer",
                "category":"writer"
                }
        ],
        "setting":{
            "executeMode":null,
            "errorLimit":{
                "record":""
                },
            "speed":{
                "concurrent":2,
                "throttle":false
                }
        },
        "order":{
            "hops":[
                {
                    "from":"Reader",
                    "to":"Writer"
                    }
            ]
        }
    }