高可用性のためのデータレプリケーション
このページは英語版のページが機械翻訳されたものです。英語版との間に矛盾または不一致がある場合は、英語版を正としてください。
ScalarDB Cluster は、高可用性とワークロード分散のために管理下のデータをリモートサイトにレプリケートする ことができます。このリモートレプリケーション機能により、プライマリサイトでの書き込み操作が、1つ以上のバックアップサイトにほぼリアルタイムで複製されます。
この機能は、災害やその他の重大な障害がプライマリサイトに影響を与えた場合でも、バックアップサイトへのフェイルオーバーを可能にし、ビジネスの継続性を確保します。さらに、バックアップサイトは読み取り専用レプリカとして機能することも可能であり、分析クエリ、レポート、ビジネスインテリジェンスのワークロードのオフロードに役立ちます。
ScalarDB におけるリモートレプリケーションとは?
ScalarDB のリモートレプリケーションは、同期レプリケーションと非同期レプリケーションを組み合わせたハイブリッドアプローチを使用します。これにより、プライマリサイトでのパフォーマンスへの影響を最小限に抑えながら、データ損失ゼロ (目標復旧時点 (RPO) がゼロ) を保証します。目標復旧時間 (RTO) は、コンピューティングリソースの量を制御することで柔軟に調整できます。この機能は ScalarDB Cluster の上に構築されており、クラウドやデータベースに依存しません。これにより、あるクラウドベンダーのデータベースから、別のクラウドベンダーの異なる種類のデータベースへのレプリケーションが可能になります。
主な利点
リモートレプリケーションは、以下の主要な利点を提供します:
- すべてのコミット済みトランザクションに対してデータ損失ゼロ (RPO が 0) を保証します。
- 同期処理と非同期処理の組み合わせにより、パフォーマンスへの影響を最小限に抑えます。
- プライマリサイトとは異なるリージョン、アベイラビリティゾーン、またはデータセンターにバックアップサイトをデプロイすることが可能です。
- 異なるクラウドサービスプロバイダーやデータベースタイプ間でのレプリケーションをサポートします。
- 組み込みのクラッシュ耐性と自動回復メカニズムを提供します。
アーキテクチャ概要
以下の図は、リモートレプリケーションアーキテクチャを示しています:
リモートレプリケーションは、このセクションに記載されているコンポーネントとツールで構成されています。
プライマリサイトコンポーネント
プライマリサイトは、プライマリサイトデータベース、クライアントアプリケーション、ScalarDB Cluster ノードの3つのコンポーネントで構成されています。それぞれ以下のように動作します:
- プライマリサイトデータベースには、ScalarDB Cluster を介してクライアントアプリケーションが使用するアプリケーションテーブルが含まれています。
- クライアントアプリケーションはデータベース操作を実行します。
- ScalarDB Cluster ノードは Coordinator データベースでトランザクション状態を管理し、LogWriter と呼ばれるモジュールを使用してトランザクション操作をキャプチャし、レプリケーションデータベースに書き込みます。
共有コンポーネント (プライマリサイトとバックアップサイト間)
プライマリサイトとバックアップサイトにまたがる2つのコンポーネントがあります: Coordinator データベースとレプリケーションデータベースです。これらのデータベースは単一のデータベースインスタンスでホストできます。ただし、トランザクション情報を維持するため、以下のように複数のサイトにレプリケートする必要があります:
- Coordinator データベースは、サイト間のトランザクション状態を可用性の高い方法で管理します。
- レプリケーションデータベースは、プライマリサイトからの書き込み操作を含むトランザクショングループを可用性の高い方法で保存します。
バックアップサイトコンポーネント
バックアップサイトは、バックアップサイトデータベースと ScalarDB Cluster ノードの2つのコンポーネントで構成されています。それぞれ以下のように動作します:
- バックアップサイトデータベースには、プライマリサイトと同じアプリケーションテーブルが含まれています。また、レプリケーションメタデータと未適用の操作を追跡する内部テーブルであるレプリケーションレコードメタデータテーブルも含まれています。これらのテーブルは、アプリケーションテーブルと同じ名前空間に配置されます (デフォルトでは
__recordsのサフィックス付き)。 - ScalarDB Cluster ノードは、LogApplier と呼ばれるモジュールを使用してレプリケートされたデータを適用します。具体的には、LogApplier は Coordinator データベースでトランザクション状態を確認し、レプリケーションデータベースから書き込み操作の読み取りおよび削除を実行し、レプリケーションレコードメタデータテーブルを使用し て依存関係を計算し、バックアップサイトテーブルに操作を適用します。
管理ツール
リモートレプリケーションは、以下の管理ツールを使用します: Schema Loader と Replication CLI。それぞれ以下のように動作します:
- Schema Loader は、ScalarDB Cluster エンドポイント経由で
--replication-tablesオプションを使用して、レプリケーションデータベースにレプリケーションテーブルを作成します。 - Replication CLI は、リモートレプリケーションを介してデータをレプリケートする ScalarDB Cluster ノードを監視および管理します。
リモートレプリケーションの仕組み
リモートレプリケーションは、同期レプリケーションと非同期レプリケーションを組み合わせたハイブリッドアプローチを採用し、プライマリサイトでのパフォーマンスへの影響を最小限に抑えながらデータ損失ゼロ (RPO = 0) を確保します。以下のように、同期フェーズと非同期フェーズの2つのフェーズで構成されています:
- 同期フェーズでは、トランザクションコミット中にプライマリサイトからレプリケーションデータベースに書き込み操作がコ ピーされます。
- 非同期フェーズでは、これらの操作がレプリケーションデータベースから処理され、バックアップサイトテーブルに適用されます。
レプリケーションプロセスは以下の手順に従います:
- プライマリサイトでトランザクションがコミットされると、LogWriter がすべての書き込み操作をキャプチャし、レプリケーションデータベースに保存します。
- バックアップサイトの LogApplier は、レプリケーションデータベースを継続的にスキャンして新しいトランザクションデータを探します。
- LogApplier は Coordinator データベースをチェックしてトランザクションの完了を確認します。
- LogApplier は、レプリケーションレコードメタデータテーブルを使用して、レコードレベルでのトランザクション依存関係に基づいて書き込み操作を順序付けて適用します。
- LogApplier は処理された操作をバックアップサイトテーブルに適用し、レプリケーションレコードメタデータテーブルを最新の情報に更新します。
制限事項と特性
このセクションでは、リモートレプリケーションの制限事項と特性について説明します。