概要
概要
CCR(Cross クラスター Replication)は、データベースまたはテーブルレベルでソースクラスタからターゲットクラスタにデータ変更を同期するクロスクラスタデータ同期メカニズムです。主にオンラインサービスのデータ可用性の向上、読み書き負荷の分離、デュアルサイト・スリーセンターアーキテクチャの構築に使用されます。CCRは現在、コンピューティングとストレージの分離モードをサポートしていません。
適用シナリオ
CCRは以下の一般的なシナリオに適しています:
-
災害復旧バックアップ:企業データを別のクラスタとデータセンターにバックアップし、業務中断やデータ損失の場合のデータ復旧を保証します。金融、ヘルスケア、eコマースなどの業界では、通常この高SLA災害復旧バックアップが必要です。
-
読み書き分離:データクエリ操作と書き込み操作を分離することで、読み取りと書き込み間の相互影響を軽減し、サービス安定性を向上させます。高同時実行性または重い書き込み圧力のシナリオでは、読み書き分離を採用することで効果的に負荷を分散し、データベースのパフォーマンスと安定性を向上させることができます。
-
データ集約:グループの本社は、異なる地域に所在する支社からのデータを管理・分析する必要があり、データ不整合によって引き起こされる管理の混乱や意思決定エラーを回避し、グループ管理効率と意思決定品質を向上させます。
-
分離アップグレード:システムクラスタのアップグレード時に、CCRを使用して新しいクラスタで検証とテストを行うことで、バージョン互換性問題によるロールバック困難を回避します。ユーザーはデータ一貫性を保証しながら、各クラスタを段階的にアップグレードできます。
-
クラスタ移行:Dorisクラスタの移設または機器交換時に、CCRを使用して古いクラスタから新しいクラスタにデータを同期し、移行プロセス中のデータ一貫性を保証します。
ジョブカテゴリ
CCRは2種類のジョブをサポートします:
- データベースレベルジョブ:データベース全体のデータを同期します。
- テーブルレベルジョブ:指定されたテーブルのデータのみを同期します。テーブルレベルの同期では、テーブルの名前変更や置換はサポートされていないことに注意してください。Dorisの各データベースでは一度に1つのスナップショットジョブのみ実行できるため、テーブルレベル同期のフル同期ジョブはキューで待機する必要があります。
原理とアーキテクチャ
用語
- Source クラスター:データソースが存在するクラスタ、通常は業務データが書き込まれるクラスタです。
- Target クラスター:クロスクラスタ同期のターゲットクラスタです。
- binlog:ソースクラスタの変更ログで、スキーマとデータ変更が含まれます。
- Syncer:データ同期を担当する軽量プロセスです。
- Upstream:データベースレベルジョブでは上流データベース、テーブルレベルジョブでは上流テーブルを指します。
- Downstream:データベースレベルジョブでは下流データベース、テーブルレベルジョブでは下流テーブルを指します。
アーキテクチャ説明

CCRは主に軽量プロセス:Syncerに依存しています。Syncerは、ソースクラスタからbinlogを取得し、ターゲットクラスタにメタデータを適用し、ターゲットクラスタにソースクラスタからデータをプルするよう通知することで、フル同期とインクリメンタル同期を実現する責任があります。
原理
-
フル同期:
- CCRジョブはまずフル同期を実行し、上流データを完全に下流にコピーします。
-
インクリメンタル同期:
- フル同期が完了した後、CCRジョブはインクリメンタル同期を続行して、上流と下流間のデータ一貫性を維持します。
-
フル同期の再開:
- インクリメンタル同期をサポートしないDDL操作に遭遇した場合、CCRジョブはフル同期を再開します。インクリメンタル同期をサポートしない特定のDDL操作については、機能詳細を参照してください。
- 上流binlogが期限切れやその他の理由で中断された場合、インクリメンタル同期は停止し、フル同期を再開します。
-
フル同期の再開:
- フル同期中は、インクリメンタル同期が一時停止されます。
- フル同期が完了した後、下流データテーブルはアトミック置換を行い、データ一貫性を保証します。
- フル同期が完了した後、インクリメンタル同期が再開されます。
同期方法
CCRは4つの同期方法をサポートします:
| 同期方法 | 原理 | トリガータイミング |
|---|---|---|
| Full Sync | 上流がフルバックアップを実行し、下流がリストアを実行します。DBレベルジョブはDBバックアップをトリガーし、テーブルレベルジョブはテーブルバックアップをトリガーします。 | 初回同期または特定の操作によりトリガーされます。トリガー条件については、機能詳細を参照してください。 |
| Partial Sync | 上流がテーブルまたはパーティションレベルのバックアップを実行し、下流がテーブルまたはパーティションレベルのリストアを実行します。 | 特定の操作によりトリガーされます。トリガー条件については、機能詳細を参照してください。 |
| TXN | インクリメンタルデータ同期で、上流のコミット後に同期を開始します。 | 特定の操作によりトリガーされます。トリガー条件については、機能詳細を参照してください。 |
| SQL | 上流のSQL操作を下流でリプレイします。 | 特定の操作によりトリガーされます。トリガー条件については、機能詳細を参照してください。 |
ダウンロード
要件: glibc >= 2.28
| Version | Arch | Tarball | SHA256 |
|---|---|---|---|
| 2.1 | ARM64 | ccr-syncer-2.1.10-rc06-arm64.tar.xz | a2e56dc1909b065db98c037a037d6ec918dec7e20eb7cccbac9da729ce9be155 |
| 2.1 | X64 | ccr-syncer-2.1.10-rc06-x64.tar.xz | ebeebbe47a85c8b52f69394fd1d839663e3e7ca2cab93d7a443b44ec3f6d35ae |
| 3.0 | ARM64 | ccr-syncer-3.0.6-rc05-arm64.tar.xz | dd5f154c68007732c3c3a9f808f16a7f287fd742bd35d0272ef596779f0eb8e6 |
| 3.0 | X64 | ccr-syncer-3.0.6-rc05-x64.tar.xz | 77a4e4e2a74c376ffaef0207cfdef957729380fa3718418bccece015a41ad15a |