OceanBase Cloudは、クロスクラウドアクティブ-アクティブアーキテクチャにより高可用性を実現し、さまざまな障害に直面した場合でも安定したサービスの継続的な提供を保証します。
原理
OceanBase Cloudは、異なるクラウドサービスプロバイダー間で同一のデータとサービスを展開することをサポートします。各クラウド環境はアクティブ状態を維持し、同時にビジネスリクエストを処理するとともに、リアルタイムデータ同期技術によりデータの一貫性を保ちます。
いずれか一方のクラウド環境で障害が発生した場合、もう一方のクラウド環境がすべてのビジネストラフィックをシームレスに引き継ぎ、サービスの中断を防ぎます。このアーキテクチャは、システムのフォールトトレランスを向上させるだけでなく、単一のクラウドサービスプロバイダーへの依存を減らし、システム全体の信頼性と安定性を強化します。
クロスクラウドアクティブ-アクティブレプリケーション機能は、全体として大きく二つの機能に分けられます。それぞれ、クロスクラウド実装とアクティブ-アクティブリンク構築です。
実装方法
クロスクラウドアーキテクチャの実装方法
クロスクラウドのシナリオでは、異なるクラウド間で独自のネットワークソリューション(専用線、パブリックネットワーク、クラウドエンタープライズネットワークなどを含むがこれらに限定されない)を通じて、2つのクラウド間のネットワーク相互接続を実現する必要があります。これにより生じるネットワーク構築の複雑さ、帯域幅と遅延が性能に与える影響、ネットワーク伝送データのセキュリティは、すべてデータ同期の性能とセキュリティに直接的な影響を及ぼし、ひいては顧客業務にも影響します。OceanBase Cloudは上記の問題に対して最適化を行います。具体的な実装方法は以下のとおりです。

クロスクラウドネットワークゲートウェイのサービス化:
OceanBase Cloudは基盤となるクロスクラウドゲートウェイサービスを実装しており、クロスクラウドのネットワーク構築はOceanBase Cloudが担当します。ユーザーは必要なデータ送信元およびデータ送信先のクラウドベンダーとリージョンを選択するだけで、データ移行タスクはクラウドベンダーとリージョンの属性に基づいて必要なネットワークサービスを自動的に判断します。利用面では、クロスクラウドネットワークの構築、監視、運用保守などを意識する必要はありません。すべてOceanBase Cloudのバックグラウンドで自動的に完了し、業務ネットワークには一切影響しません。
伝送コンポーネントローカルデプロイメント:
クロスクラウドネットワークのトラフィックと遅延は、データ伝送の性能に直接的な影響を与えます。OceanBase Cloudのクロスクラウド伝送はこの特性に対応し、基盤となるコンポーネントのデプロイメントアーキテクチャを調整しました。データログ解析コンポーネントをデータ送信元のクラウドベンダーとリージョンに、データ書き込みコンポーネントをデータ送信先のリージョンにデプロイします。これにより、データ送信元の増分データ解析コンポーネントによって不要な同期データの大部分をフィルタリングでき、同時に書き込み側がデータ送信先に近いため、ネットワーク遅延によるデータ書き込み性能の低下を回避できます。
データ伝送のセキュリティ暗号化:
セキュリティ面では、異なるリージョンのクロスクラウドゲートウェイ間で、ガロワ/カウンタモード(GCM)の高度な暗号化標準(AES)と128ビット鍵(AES-128-GCM)を使用してネットワーク層で暗号化を実現します。これは広く使用されている伝送セキュリティを保証する暗号化標準であり、Google CloudやAWSなどの主要なクラウドベンダーでも採用されています。ゲートウェイ間のセッション鍵はOMSプライベートネットワーク間の安全な制御トンネルを通じて転送され、セッション鍵は定期的にローテーションされます。これにより、クロスクラウドネットワーク伝送データのセキュリティを保証します。
アクティブ-アクティブリンクの実装
データベースのディザスタリカバリ要件において、従来のバックアップ・リストアやプライマリ/スタンバイインスタンスに加え、現在では業務の極限的な継続性や性能を考慮してアクティブ-アクティブ構成を構築する必要があります。アクティブ-アクティブ構築では、2つのデータセンターが同時に業務の読み書き処理を担うことが求められ、双方のデータ整合性を保証するためには、リアルタイムの双方向同期を実現する必要があります。現在の業界のデータ同期製品の多くは単方向同期をサポートしていますが、OceanBase Cloudのデータリンクは、MySQL、Oracle、OceanBaseデータベース間の異種データベース間の双方向同期を実現します。データのループ防止と競合検出機能により、アクティブ-アクティブリンクの安定性とデータ一貫性を保証します。

データのループ防止
上図からわかるように、一方の端で業務データを書き込むと、データベースログが記録され、データ同期によって相手端に書き込まれます。データ同期によって相手端に書き込まれた後も同様にデータベースログが記録され、逆方向でもデータ同期によって解析されて書き戻されることで、無限ループの問題が発生します。
データループ問題に対処するため、OceanBase Cloudはデータベースに応じて2つの実装方法を提供しています。MySQLおよびOracleデータベースの場合、増分データの書き込みと同時にトランザクションテーブルを記録し、増分解析コンポーネントがログを解析する前にトランザクションテーブル内のデータを取得します。解析されたデータがトランザクションテーブル内にある場合、データ同期によって生成されたデータと見なされ、関連データはデフォルトで破棄されます。そうでない場合は関連データを同期します。OceanBaseデータベースの場合、データ書き込みコンポーネントのクライアントとサーバーが接続を確立した後にthread_idを指定し、すべての増分書き込みコンポーネントのデータには特定のthread_idが付加されます。増分解析コンポーネントはデータを解析する際、デフォルトで増分コンポーネントのthread_idによって生成されたデータを破棄することで、データループ防止のレプリケーションを実現します。
競合検出
通常、データのアクティブ-アクティブ業務では、業務が2つのデータセンターで同一のデータ(同一の一意キー)に対して同時に書き込みまたは更新操作を行うことを避ける必要があります。理由は、アクティブ-アクティブレプリケーションリンクがそれを正常な業務データの相手端への同期と見なし、データ更新の欠落が発生する可能性があるためです。しかし、実際の業務処理過程では、欠陥などの原因でこのようなデータが発生することは避けられません。OceanBase Cloudのアクティブ-アクティブレプリケーションリンクは、このような問題を解決するための専用機能を備えています。
アクティブ-アクティブレプリケーションリンクの動作中、競合データをリアルタイムで検出し、リンク設定時の設定(ターゲット端データの上書き、競合の無視、ターゲット端データの保持)に基づいて特別処理を行います。業務の実際の状況に応じて適切なデータ処理方法を選択することで、業務データの最終的な整合性を確保します。同時に、OceanBase Cloudは競合データの記録を保持し、ダウンロードによる確認をサポートします。以上により、競合データが発生した原因を分析・特定し、業務ロジックの最終的な最適化に役立ちます。