PostgreSQLには、RDBMSへのレプリケーションを構築するさまざまな方法を表すさまざまな高可用性オプションのマトリックスがあります。
ここにあるPostgreSQLの高可用性、負荷分散およびレプリケーション機能のマトリックス
ご質問
- OracleがサポートするPostgreSQL High Availability Matrixのアプローチはどれですか?
- OracleはPostgreSQLでは利用できない手法で高可用性を実現しますか?
PostgreSQLには、RDBMSへのレプリケーションを構築するさまざまな方法を表すさまざまな高可用性オプションのマトリックスがあります。
ここにあるPostgreSQLの高可用性、負荷分散およびレプリケーション機能のマトリックス
ご質問
回答:
OracleのData Guardレプリケーションは、PostgreSQL 9.0以降のデータベースに組み込まれているPostgreSQLの「PITRを使用したホット/ウォームスタンバイ」に似ています。バージョン9.1では、同期レプリケーションも追加されます。ここでのPostgreSQLのOracleに対する利点の1つは、Sync Repがトランザクションごとに制御できることです。完全同期の「重要!」トランザクションの後に、Postgresで非同期の「失っても大丈夫」が続きます。
OracleのRACは、PostgreSQLがそのグリッドで「共有ディスクフェイルオーバー」とラベル付けしているものに似ています。主な違いは、RACがOracle製品に完全に統合されているのに対し、「共有ディスクフェイルオーバー」は何かを行う方法を説明するだけです。PostgreSQLに必要なクラスタウェアソフトウェアをアセンブルする必要があります。RACがPostgreSQLで複製するのが難しいと思われる高度な処理はさまざまです。それらのほとんどはセットアップが非常に複雑で、Oracleのインストールによっても正しく機能しないことがよくあります。RACが組み込まれているからといって、自動的にセットアップされるわけではありません。
Oracleで行うことができる、PostgreSQLでの複製が非常に難しい主なことは、マルチマスターレプリケーションです。PostgreSQLでマルチマスターを行うことは可能ですが、Bucardoのようなアドオンソフトウェアでのみ可能です。そして、そのようなプログラムはすべて、マルチマスターOracleインストールが提供するものよりも、それらを使用して何ができるかについてより多くの制限があります。
質問の「オラクルがサポートする」という部分がよくわかりません。PostgresはOracleによって「サポート」されていません。
Oracleの物理的なStandByは、PostgreSQLストリーミングレプリケーションと同等です。
ストリーミングレプリケーションを使用する場合、PostgreSQLの非同期レプリケーションは「最大パフォーマンス」モードを使用するOracleのスタンバイと同等ですが、PostgreSQLの同期(9.1以降)レプリケーションは「最大可用性」モードを使用するOracleのスタンバイと同等です。
OracleにはReal Application Cluster(RAC)と呼ばれる別のオプションがあります。これはPostgresでは利用できないものです(ノードがダウンした場合、ロードバランシングと別のノードへのセッションの自動リダイレクトも行います)。
Oracleでは、基本的に、ホットスタンバイの実行とRACの使用のどちらかを選択できます。
高可用性の主な目的は、単一障害点を取り除くことです。RACはこれをサーバーレベルで実行し、サービスを中断することなくサーバーの障害を許可します。ASM、ミラーリング、および2つ以上の物理的に独立したストレージプール(またはSAN)を使用して、ストレージエンドで同様のことを達成する必要があります。
ホットスタンバイを使用すると、障害発生時にサービスが中断されますが、より簡単で、「エンジニアリング上のトレードオフ」が少なくなります。
良質のハードウェアも不可欠です(SATAではなくSAS、冗長PSU、UPSなど)。
検討する必要がある高可用性のその他の側面もあります(例:人為的エラー)。Oracleからのこのホワイトペーパーでは、それらについてさらに詳しく説明しています。