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

Data Transmission Service:PolarDB for MySQL クラスターから ApsaraDB for ClickHouse クラスターへのデータ同期

最終更新日:Mar 28, 2026

Data Transmission Service (DTS) は、PolarDB for MySQL クラスターと ApsaraDB for ClickHouse クラスターをリアルタイムで同期し、ソースデータベースに影響を与えることなく、一元的な分析を可能にします。

同期タイプと課金

同期タイプ課金
スキーマ同期無料
完全データ同期無料
増分データ同期課金済み。詳細については、「課金概要」をご参照ください。

前提条件

開始する前に、次のことを確認してください:

  • ClickHouse V20.8 以降を実行している ApsaraDB for ClickHouse クラスターが送信先として準備されていること。詳細については、「ApsaraDB for ClickHouse クラスターの作成」をご参照ください。

  • 送信先クラスターの利用可能なストレージ容量が、ソースの PolarDB for MySQL クラスターの合計データサイズよりも大きいこと。

  • ソースクラスターでバイナリロギングが有効になっており、loose_polar_log_binon に設定されています。詳細については、「バイナリロギングの有効化」および「パラメーターの変更」をご参照ください。

  • ソースデータベースアカウントに必要な権限があること (詳細については、「データベースアカウントに必要な権限」をご参照ください)。

重要

ソースクラスターのバイナリログは、少なくとも 7 日間保持する必要があります。保持期間が短いと、DTS が binlog 内の位置を見失い、タスクの失敗やデータ損失の原因となる可能性があります。バイナリロギングを有効にすると、PolarDB for MySQL にストレージ料金が発生します。

データベースアカウントに必要な権限

データベース必要な権限参照
ソース PolarDB for MySQL クラスター同期するすべてのオブジェクトに対する読み取り権限データベースアカウントの作成と管理およびデータベースアカウントのパスワード管理
送信先 ApsaraDB for ClickHouse V22.8 以降送信先データベースに対する読み取りおよび書き込み権限 (特権アカウントが機能します)コミュニティ互換エディションクラスターでのデータベースアカウントの管理
送信先 ApsaraDB for ClickHouse V21.8読み取り、書き込み、権限設定およびDDL の有効化上記と同じ

制限事項

ソースインスタンスの制限

  • ソースサーバーには十分なアウトバウンド帯域幅が必要です。帯域幅が不足すると、同期が遅くなります。

  • テーブルを同期し、送信先で列の名前を変更または変更する場合、1 つのタスクでサポートされるテーブルは最大 1,000 です。1,000 を超えるテーブルの場合は、複数のタスクに分割するか、データベース全体を同期してください。

  • 完全データ同期中にソースで DDL 操作を実行しないでください。実行するとタスクが失敗します。

その他の制限

  • DTS は、ソースクラスターから読み取り専用ノードや Object Storage Service (OSS) 外部テーブルを同期しません。

  • 標準の MySQL 構文ではない DDL 文は、タスクの失敗やデータ損失の原因となる可能性があります。

  • RENAME TABLE はサポートされていません。

  • ソースの DATETIME 値は、ClickHouse がサポートする時間範囲内である必要があります (詳細については、「時間範囲」をご参照ください)。

  • パーティションキーとして選択されたすべての列は、空でないフィールドである必要があります。

  • 1 つの ApsaraDB for ClickHouse クラスターに同期できるデータベースは最大 256 です。

  • データベース、テーブル、および列の名前は、ApsaraDB for ClickHouse の命名規則に準拠する必要があります。詳細については、「オブジェクトの命名規則に関する制限」をご参照ください。

  • スキーマ同期中、DTS は _sign_is_deleted、および _version フィールドを送信先テーブルに追加します。[スキーマ同期] を無効にする場合は、送信先テーブルを手動で作成し、これらのフィールドを含めてください。

  • 同期中に他のソースから送信先データベースにデータを書き込まないでください。同時書き込みはデータの不整合を引き起こします。

  • テーブルレベルで同期されているテーブルに対して DDL を実行する場合、pt-online-schema-change を使用しないでください。代わりに、Data Management (DMS) のロックなし DDL を使用してください。

  • 可能な限り、オフピーク時間に同期を実行してください。完全データ同期は、両方のクラスターの読み取りおよび書き込みリソースを使用します。

  • タスクが失敗した場合、DTS サポートは 8 時間以内に復元を試み、タスクを再起動したり、タスクパラメーター (データベースパラメーターではない) を変更したりすることがあります。

データ同期をサポートする SQL 操作

DML

INSERT、UPDATE、DELETE

DDL

DDL 操作サポート状況
CREATE TABLEはい
TRUNCATE TABLEはい
ALTER TABLEはい
ADD COLUMNはい
MODIFY COLUMNはい
DROP TABLEはい
DROP COLUMNはい
RENAME TABLEいいえ

データ型のマッピング

PolarDB for MySQL と ApsaraDB for ClickHouse は異なるデータ型をサポートしています。初期スキーマ同期中、DTS はソースの型を互換性のある送信先の型にマッピングします。詳細については、「初期スキーマ同期のデータ型マッピング」をご参照ください。

同期タスクの作成

ステップ 1:データ同期ページへ移動

DTS コンソール

  1. DTS コンソールにログインします。

  2. 左側のナビゲーションウィンドウで、[データ同期] をクリックします。

  3. 左上隅で、同期インスタンスが存在するリージョンを選択します。

DMS コンソール

正確なナビゲーションパスは、DMS コンソールモードによって異なります。「シンプルモード」および「DMS コンソールのレイアウトとスタイルのカスタマイズ」をご参照ください。

  1. DMS コンソールにログインします。

  2. 上部のナビゲーションバーで、[データ + AI] にポインターを合わせ、[DTS (DTS)] > [データ同期] を選択します。

  3. [データ同期タスク] の横にあるドロップダウンリストから、同期インスタンスが存在するリージョンを選択します。

ステップ 2:ソースデータベースとターゲットデータベースの設定

[タスクの作成] をクリックし、次のパラメーターを入力します。

セクションパラメーター説明
N/Aタスク名DTS タスクの名前。DTS は自動的に名前を生成します。タスクを簡単に識別できるように、わかりやすい名前を使用してください。名前は一意である必要はありません。
ソースデータベース既存の接続を選択ドロップダウンリストから登録済みのデータベースインスタンスを選択するか、インスタンスが登録されていない場合は手動で接続を設定します。
データベースタイプ[PolarDB for MySQL] を選択します。
アクセス方法[Alibaba Cloud インスタンス] を選択します。
インスタンスリージョンソースの PolarDB for MySQL クラスターが存在するリージョン。
Alibaba Cloud アカウント間でのデータレプリケーション同一アカウントでの同期の場合は [いいえ] を選択します。
PolarDB クラスター IDソースの PolarDB for MySQL クラスターの ID。
データベースアカウントソースクラスターのデータベースアカウント。
データベースパスワードアカウントのパスワード。
暗号化ソースデータベースへの接続を暗号化するかどうか。詳細については、「SSL 暗号化の設定」をご参照ください。
ターゲットデータベース既存の接続を選択登録済みのインスタンスを選択するか、手動で接続を設定します。
データベースタイプ[ClickHouse] を選択します。
アクセス方法[Alibaba Cloud インスタンス] を選択します。
インスタンスリージョン送信先の ApsaraDB for ClickHouse クラスターが存在するリージョン。
Alibaba Cloud アカウント間でのデータレプリケーション同一アカウントでの同期の場合は [いいえ] を選択します。
クラスタータイプ送信先の ApsaraDB for ClickHouse クラスターのタイプ。
クラスター ID送信先の ApsaraDB for ClickHouse クラスターの ID。
データベースアカウント送信先クラスターのデータベースアカウント。
データベースパスワードアカウントのパスワード。

[接続テストと次へ] をクリックします。

DTS サーバーの CIDR ブロックが、ソースおよびターゲットデータベースのセキュリティグループルールに追加されていることを確認してください。詳細については、「DTS サーバーの CIDR ブロックを追加する」をご参照ください。

ステップ 3:同期するオブジェクトの設定

[オブジェクトの設定] ステップで、次のパラメーターを設定します。

パラメーター説明
同期タイプ[スキーマ同期][完全データ同期]、および [増分データ同期] を選択します。完全データ同期は、増分同期が始まる前に既存データをロードします。
競合するテーブルの処理モード[事前チェックとエラーの報告](デフォルト):送信先にソースと同じ名前のテーブルが存在する場合、事前チェックに失敗します。「オブジェクト名マッピング」を使用して競合を回避してください。[エラーを無視して続行]:競合チェックをスキップします。完全同期中は、送信先の既存レコードが保持されますが、増分同期中は上書きされます。スキーマが異なる場合、タスクが失敗する可能性があります。慎重にご利用ください。
宛先インスタンスでのオブジェクト名の大文字/小文字の区別データベース名、テーブル名、および列名の大文字小文字の処理を制御します。デフォルト: [DTS デフォルトポリシー]。詳細については、「宛先インスタンスにおけるオブジェクト名の大文字小文字の指定」をご参照ください。
ソースオブジェクト同期するデータベース、テーブル、または列を選択し、矢印アイコンをクリックして [選択したオブジェクト] に追加します。
選択したオブジェクトオブジェクトを右クリックして名前を変更するか、[一括編集] をクリックして一度に複数のオブジェクトの名前を変更します。テーブルを右クリックして SQL フィルター条件を追加します。詳細については、「オブジェクト名のマッピング」および「フィルター条件の設定
    オブジェクト名マッピングを使用すると、名前が変更されたオブジェクトに依存するオブジェクトの同期が失敗する可能性があります。

    [次へ:詳細設定] をクリックし、次のパラメーターを設定します。

    パラメーター説明
    タスクスケジューリング用の専用クラスターデフォルトでは、Data Transmission Service (DTS) は共有クラスターを使用します。より高い安定性が必要な場合は、専用クラスターをご購入ください。詳細については、「DTS 専用クラスターとは」をご参照ください。
    ターゲットデータベースのタイムゾーンターゲットの ClickHouse クラスターに書き込まれる DateTime 型のデータに適用されるタイムゾーンです。
    [接続失敗時の再試行時間]タスク開始後、DTS が失敗した接続を再試行する期間です。有効な値:10~1440 分。デフォルト値:720 分。少なくとも 30 分以上に設定してください。複数のタスクが同じソースまたはターゲットを共有する場合、最も短い再試行時間が適用されます。再試行中も DTS の料金は発生し続けます。
    [その他の問題に対する再試行時間]DTS が失敗した DDL または DML 操作を再試行する期間です。有効な値:1~1440 分。デフォルト値:10 分。少なくとも 10 分以上に設定してください。この値は、[接続失敗時の再試行時間] よりも小さくする必要があります。
    [完全データ同期のレート制限を有効化]完全同期中の読み取りおよび書き込み負荷を制限します。[ソースデータベースへの秒間クエリ数 (QPS)][完全データ移行の RPS]、および [完全移行のデータ移行速度 (MB/秒)] を設定します。[完全データ同期] が選択されている場合にのみ利用可能です。
    [増分データ同期のレート制限を有効化]増分同期中の負荷を制限します。[増分データ同期の RPS][増分同期のデータ同期速度 (MB/秒)] を設定します。
    [正逆両タスクのハートビートテーブルに対する SQL 操作を削除するかどうか][はい]アラート通知設定:DTS はソースにハートビート SQL を書き込みません。これにより、タスクの遅延が表示される場合があります。[いいえ]:DTS はハートビート SQL を書き込みます。これにより、ソースの物理バックアップやクローニングに影響を与える可能性があります。
    [環境タグ]同期インスタンスを分類するためのオプションのタグです。
    [ETL の設定]抽出、変換、ロード (ETL) 機能を有効にするかどうかを選択します。[はい]:コードエディターにデータ処理文を入力します。詳細については、「データ移行またはデータ同期タスクでの ETL の設定」をご参照ください。[いいえ]:ETL をスキップします。
    [モニタリングとアラート][はい]:アラートのしきい値と通知先の連絡先を設定することで、タスクが失敗した場合や同期遅延がしきい値を超えた場合に DTS からアラートが通知されるようにします。詳細については、「モニタリングとアラートの設定」をご参照ください。[いいえ]:アラートは通知されません。

    [次へ:データベースとテーブルフィールドの設定] をクリックして、各 ClickHouse 送信先テーブルの [タイプ][主キー列][ソートキー][分散キー]、および[パーティションキー]を設定します。

    DTS はデフォルトでこれらのフィールドを自動設定します。変更するには、[定義ステータス][すべて] に設定します。
    [主キー列][ソートキー] は複数の列を受け入れます。[分散キー] は 1 つの列のみを受け入れます。
    [パーティションキー] はオプションです。設定した場合、選択されたすべての列は空でないフィールドである必要があります。
    ClickHouse テーブルパラメーターの詳細については、「CREATE TABLE」をご参照ください。

    ステップ 4:事前チェックの実行

    [次へ:タスク設定の保存と事前チェック] をクリックします。

    このタスクの API パラメーターをプレビューするには、[次へ:タスク設定の保存と事前チェック] にカーソルを合わせ、[OpenAPI パラメーターのプレビュー] をクリックします。

    DTS はタスクを開始する前に事前チェックを実行します。事前チェックが失敗した場合:

    • 失敗した項目の横にある [詳細の表示] をクリックし、問題を修正して [再事前チェック] をクリックします。

    • 無視できるアラート項目については、[アラート詳細の確認] > [無視] > [OK] をクリックし、その後 [再事前チェック] をクリックします。アラートを無視すると、データの不整合が発生する可能性があります。

    ステップ 5:インスタンスの購入

    1. [成功率][100%] に達するまで待ち、[次へ:インスタンスの購入] をクリックします。

    2. [購入] ページで、次のパラメーターを設定します。

    パラメーター説明
    課金方法[サブスクリプション]:前払いで、長期利用に適しています。[従量課金]:時間単位で課金され、短期利用に適しています。不要になったらインスタンスをリリースして課金を停止します。
    リソースグループ設定同期インスタンスのリソースグループ。デフォルト: [デフォルトリソースグループ]Resource Management とは
    インスタンスクラスインスタンスクラスは同期速度を決定します。詳細については、「データ同期インスタンスのインスタンスクラス」をご参照ください。
    サブスクリプション期間[サブスクリプション] 課金でのみ利用可能です。オプション:1~9 か月、または 1、2、3、5 年。
    1. [Data Transmission Service (従量課金) 利用規約] を読み、選択します。

    2. [購入して開始] をクリックし、確認ダイアログボックスで [OK] をクリックします。

    タスクがタスクリストに表示されます。そこで進行状況を監視します。

    同期されたデータのクエリ

    同期が完了したら、次の文を使用して送信先の ClickHouse クラスターでデータをクエリします:

    SELECT * FROM table_name FINAL WHERE _sign > 0;

    FINAL キーワードは、同じソートキーを持つ行をマージし、最新バージョンを返します。WHERE _sign > 0 フィルターは、削除マークが付いた行を除外します。

    付録

    時間範囲

    データ型最小値最大値
    Date1970-01-01 00:00:002149-06-06 00:00:00
    Date321925-01-01 00:00:002283-11-11 00:00:00
    DateTime1970-01-01 08:00:002106-02-07 14:28:15
    DateTime641925-01-01 08:00:002283-11-12 07:59:59

    テーブル

    送信先テーブルを手動で作成する場合 (スキーマ同期なし)、テーブルは次の要件を満たす必要があります。

    重要

    送信先テーブルに ENGINE パラメーターが含まれている場合は、ENGINE = ReplicatedReplacingMergeTree(_version, _is_deleted) に設定してください。他の値を設定すると、データの不整合が発生します。

    • コミュニティ互換エディション:ローカルテーブルと分散テーブルを作成します。分散テーブル名はソーステーブル名と一致する必要があります。ローカルテーブル名は <distributed_table_name>_local 形式に従います。

    • Enterprise Edition:ソーステーブルと同じ名前のテーブルを作成します。

    フィールド

    DTS は、次のメタデータフィールドを送信先テーブルに追加します。

    ApsaraDB for ClickHouse コミュニティ互換エディション V23.8 以前

    フィールドデータ型デフォルト値説明
    _signInt81DML 操作タイプ:INSERT または UPDATE = 1; DELETE = -1
    _versionUInt641行が ClickHouse クラスターに書き込まれた時間。

    ApsaraDB for ClickHouse Enterprise Edition またはコミュニティ互換エディション V23.8 以降

    フィールドデータ型デフォルト値説明
    _signInt81DML 操作タイプ:INSERT または UPDATE = 1; DELETE = -1
    _is_deletedUInt80行が削除されたかどうか:INSERT または UPDATE = 0; DELETE = 1
    _versionUInt641行が ClickHouse クラスターに書き込まれたタイムスタンプ。