ApsaraDB for OceanBase では、プライマリクラスターインスタンスにスタンバイクラスターインスタンスを追加して、クラスターネットワークを形成できます。このクラスターネットワークでは、プライマリインスタンスとスタンバイインスタンス間でデータが同期され、データベースの高可用性がさらに向上します。
原理
プライマリ/スタンバイアーキテクチャは、1 つのプライマリインスタンスと複数のスタンバイインスタンス (Physical_Standby) で構成されます。カスケードモードでスタンバイインスタンスにスタンバイインスタンスを追加することはできません。プライマリインスタンスとスタンバイインスタンスは、非同期ログレプリケーションを実行することでデータ整合性を維持します。これは、プライマリインスタンスの安定性とパフォーマンスに影響を与えません。
プライマリインスタンスが、レプリカの大部分の障害などの理由で、予期されたとおりまたは予期せず使用できなくなった場合、スタンバイインスタンスがサービスを引き継ぐことができます。OceanBase Database は、サービスのダウンタイムを最小限に抑えるために、RPO が 0 の無損失フェールオーバーと RPO が 0 より大きい損失フェールオーバーという 2 つのディザスタリカバリソリューションを提供します。詳細については、「スタンバイインスタンスのロールをプライマリインスタンスに変更する」をご参照ください。プライマリインスタンスとスタンバイインスタンスはどちらもデータの読み取りをサポートしています。ただし、データの書き込みをサポートしているのはプライマリインスタンスのみです。
次の表は、フローチャートのステップを示しています。
ステップ | 説明 |
1 | アプリケーションまたは業務システムが、プライマリクラスター内のデータベースノードにデータを書き込んだり、データベースノードからデータを読み取ったりします。データベースノードは、オブザーバープロセスが実行されているサーバーです。 |
2 | データが本番クラスターであるプライマリクラスターに書き込まれると、プライマリクラスターは REDO ログを生成します。 |
3 | プライマリクラスターは、非同期ログレプリケーションを実行することで、REDO ログをスタンバイクラスターに自動的に転送します。 |
4 | プライマリクラスターのデータバックアップを含むスタンバイクラスターのデータベースノードは、REDO ログを受信し、データを再生します。 |
5 | アプリケーションまたは業務システムが、スタンバイクラスター内のデータベースノードからデータを読み取ります。 |
シナリオ
プライマリ/スタンバイアーキテクチャは、主に次の 2 つのシナリオで使用されます。
ゾーンディザスタリカバリ
Alibaba Cloud の一部のリージョンでは、2 つのゾーンのみが提供されています。そのため、単一の OceanBase Database インスタンスの 3 つのレプリカが、IDC (ゾーン) レベルでディザスタリカバリ機能を提供することは不可能です。この場合、2 つのゾーンにプライマリインスタンスとスタンバイインスタンスを作成することで、データベースの IDC 間の高可用性を実現できます。1 つの IDC に障害が発生した場合、手動で業務をスタンバイインスタンスに切り替えることができます。
地域ディザスタリカバリ
業務が複数のリージョンにデプロイされている場合は、複数のリージョンにプライマリインスタンスとスタンバイインスタンスを作成することで、データベースのリージョン間高可用性を実現できます。1 つのリージョンに障害が発生した場合、手動で業務をスタンバイインスタンスに切り替えることができます。
プライマリインスタンスとスタンバイインスタンス間のスイッチオーバーには約 5 分かかります。このプロセスでは、一時的な切断が発生する可能性があります。オフピーク時にプライマリ/スタンバイスイッチオーバーを実行し、接続プールなどの手法を使用して自動再接続を実装することをお勧めします。
プライマリインスタンスとスタンバイインスタンスの操作
必要に応じてスタンバイインスタンスを作成できます。次の表に、プライマリインスタンスとスタンバイインスタンスで実行できる操作を示します。
インスタンスタイプ | 操作 |
プライマリインスタンス | プライマリインスタンスに 1 つ以上のスタンバイインスタンスを作成できます。詳細については、「スタンバイインスタンスを作成する」をご参照ください。 |
スタンバイインスタンス | テナントデータがプライマリインスタンスからスタンバイインスタンスに同期された後、スタンバイインスタンスの各テナントにプライマリアドレスを手動で追加する必要があります。詳細については、「スタンバイインスタンスのテナントにプライマリアドレスを追加する」をご参照ください。 |
データベース障害が発生した場合、スタンバイインスタンスのロールをプライマリインスタンスに切り替えて、データ整合性と業務の可用性を確保できます。詳細については、「スタンバイインスタンスのロールをプライマリインスタンスに変更する」をご参照ください。 | |
業務分割などのシナリオでは、スタンバイインスタンスをプライマリインスタンスから切り離して、2 つの独立したインスタンスを取得できます。この操作により、リソース使用率が向上します。詳細については、「スタンバイインスタンスを切り離す」をご参照ください。 |