Oracle は高可用性をどのように実現していますか?

Oracle は高可用性をどのように実現していますか?

私たちは、MySQL クラスタの代替となる Oracle または pgsql を探しています。Oracle 11 データベース システムの HA に関するドキュメントをすべて読みましたが、十分に理解できませんでした。私が理解したのは、HA を実行しているのは RAC だということです。背後に mysql-proxy のようなプロキシがありますか? または、クラスタはハートビートのようなソフトウェアを使用して IP アドレスを変更していますか? または、プライマリの障害に備えて、アプリケーションは接続文字列に別の宛先を持っている必要がありますか? これが必要なので、コア アプリケーションの再コーディングにどの程度の労力が必要かを評価します。

答え1

Oracle RAC の仕組みは少し複雑ですが、簡単に説明すると次のようになります。

Oracle RAC は、Oracle データベース ノードで構成されています。各ノードにはローカル リスナーがあり、クラスタ全体には 1 つ以上の SCAN (Single Client Access Name) リスナーがあります。各リスナーには独自の仮想 IP アドレスがあります。ホストが停止すると、停止したホストのリスナー アドレスは別のホストに引き継がれます。ホストには、ハートビートが流れ、サーバー間の同期が行われる専用の相互接続インターフェイスが必要です。

クライアントは SCAN リスナーにのみ接続する必要があり、その IP アドレスは一定です (クラスターに複数の SCAN がある場合、DNS はこれらのアドレスに名前を解決し、ラウンドロビンを使用してクライアントが SCAN に接続するようにします)。クライアントが接続すると、クラスターはクライアントを最適なローカル リスナーにリダイレクトしますが、そのためにクライアントがそれ以上設定する必要はありません。

Oracle には RAC に関するかなり優れたドキュメントがありますが、RAC の実装と管理は (控えめに言っても) 簡単ではありません。RAC を使用する場合は、pfo のアドバイスに従って専門家を雇う必要があります。

答え2

RAC は RAC であり、非常にブラック ボックスです。すべての HA 関連のものは、RAC およびドライバー レベルで処理されます。Oracle は MySql ではないため、アプリケーションの再コーディングのみが必要です。

関連情報