web-dev-qa-db-ja.com

PostgreSQLを使用した高可用性クラスターの作成

データベース設計は初めてです。高可用性クラスターを作成するタスクがあります。私はたくさんグーグルしましたが、PostgreSQLでこれを行う良い方法が見つかりませんでした。

どこから始めればよいですか?高可用性クラスターの作成に必要な手順は何ですか?

3
Sunil Kumar

PostgreSQL用のHAクラスターをセットアップするには、多くの方法があります。いくつかの方法は大きくて難しいです。

最も簡単な方法は次のとおりです。

  1. データベースをスタンバイサーバーに同期する
  2. ハートビートをインストールして非対称クラスタリングを行う

この方法は、適切な縮退でHAクラスタを構築する最も簡単な方法です。

2
cc4re

レプリケーションのほとんどのメソッドは通常非同期です。私は以下をお勧めします:

  • 2つのDBサーバーにPostgreSQLをインストールします。
  • 2つのDBサーバーにDRBDをインストールする
  • ucarp または Linux Heartbeat to create
    • DB VIP
    • 自動フェイルオーバー
  • デフォルトのPostgreSQLデータにDRBDプライマリをマウントする
  • PostgreSQLデータをコピーします
  • DRBDプライマリでのPostgreSQLの起動

覚えておいてください DRBDは同期ディスクレベルレプリケーションです

UPDATE 2012-10-18 12:01 EDT

DRBDはアクティブ/パッシブネットワークRAID-1であるため、STONITH(Shoot the Other Node in the Head))は、適切にスクリプト化された自動フェイルオーバーで対応する必要があります。さらに、パッシブサイズ(別名DRBDセカンダリ) )はPostgreSQLを実行していません。DRBDはネットワークRAID-1設定でディスクレプリケーションを実行するだけです。ucarpまたはHeartbeatに設定したアップスクリプトは、次のようにして悲観的である必要があります。

  1. dBVIPを想定
    • a。 DRBDプライマリでDBVIPがまだ使用されている場合、DRBDセカンダリはDBVIPを想定できません
    • b。 DBVIPがDRBDプライマリで使用されていない場合、DRBDセカンダリはDBVIPを想定できます
  2. dRBDを分割して分割する(つまり、パッシブ側をDRBDプライマリとして起動する)
  3. _/dev/drbd0_への_/var/lib/pgsql_のマウント
  4. postgreSQLの起動

1つのサーバーのみで起動するDBVIPを使用している場合は、スプリットブレインシナリオを心配する必要はありません。データが書き込まれる場所は、DBVIPを持っている人が決定します。 DRBDセカンダリ(パッシブサイズ)が前述の4つのステップを実行する場合、ucarpまたはHeartBeatのアップスクリプトがDBVIPを検出することを確認する必要があります(つまり、DBVIPでping -cを実行し、nothinで戻ってきます)。 ip addr add DBVIP/32 dev (interface)を実行します。

自動フェイルオーバーが発生すると、ucarpまたはHeartBeatのダウンスクリプトを実行して、比喩的にSTONITHを処理します。

  • PostgreSQLのシャットダウン
  • _/var/lib/pgsql_から_/dev/drbd0_をアンマウント
  • _drbdadm disconnect drbd0_
  • _drbdadm secondary drbd0_

次に、DBVIPが新しいプライマリ上にあることがわかったら、新しいDRBDプライマリに移動し、_drbdadm connect drbd0_を実行して_cat /proc/drbd_を監視し、新しいDRBDプライマリが新しいDRBDセカンダリと同期することを確認します。

2
RolandoMySQLDBA