PostgreSQL 9.1で自動フェイルオーバー用に2つの同一のサーバーをセットアップするにはどうすればよいですか。
[〜#〜] os [〜#〜]
Centos 5
ソースからコンパイルされたPostgreSQL 9.1
postgresユーザーアカウントは両方のマシンに存在し、両方のマシンに接続するためのsshパスワードレスキーを持っています。
私の現在のセットアップ:
マスターサーバー構成:
postgresql.conf:
listen_address = '*'
wal_level = hot_standby
max_wal_senders = 3
checkpoint_segments = 16
wal_keep_segments = 8
archive_mode = on
archive_command = 'cp "%p" /opt/pgsql91/archive/"%f"'
pg_hba.conf:
Host replication all 10.0.66.1/32 trust
Host replication all 10.0.66.2/32 trust
スタンバイサーバー
postgresql.confおよびpg_hba.confは、マスターサーバーで構成されているものと同じです。
recovery.conf:
standby_mode = 'on'
primary_conninfo = 'Host=10.0.66.1'
trigger_file = '/opt/pgsql91/data/trigger.txt'
HzRootのおかげで、サーバーをスタンバイからマスターに切り替える方法を理解しました。
次のコマンドを使用して、新しいスレーブを新しいマスターと同期し、レプリケーションのバックアップを取得して実行できます。
新しいマスター(10.0.66.2)
新しいスレーブ(10.0.66.1)
だから私の質問は今です:
チェックアウト repmrg :
repmgrは、DBAおよびシステム管理者がPostgreSQLデータベースのクラスターを管理するのに役立つオープンソースツールのセットです。
PostgreSQL 9で導入されたホットスタンバイ機能を利用することにより、repmgrは、高可用性とスケーラビリティの要件を持つデータベースのセットアップと管理のプロセスを大幅に簡素化します。
repmgrは、管理と日常管理を簡素化し、生産性を高め、PostgreSQLクラスタの全体的なコストを削減します。
- 複製プロセスの監視。 DBAが高レベルで発行できるようにする
- スイッチオーバーやフェイルオーバーなどの可用性操作。
次の2つのことを行います。
自動フェイルオーバーの場合、repmgrdはトリックを実行し、pgPoolのようなネットワーク内のSPOFではありません。ただし、すべてのデーモンを監視し、障害発生後にそれらを元に戻すことは依然として重要です。
RPMを含むバージョン2.0がまもなくリリースされます。
recovery.confファイルに、マスターからスレーブにフェイルオーバーするようpostgresに指示する行を追加する必要があります。追加する必要があります
trigger_file = '/any/file/to/trigger'
このファイルを指定されたパスに作成したとき。ノードが変更されます。 (ファイルには何も含まれていません。トリガーにすぎません)
ストリーミングレプリケーション に関する追加情報を見つけることができます
一方、いくつかのトリックを使用して自動的に作成することは可能かもしれませんが、監視ツールを使用して手動でフェイルオーバーを行う方が良いでしょう。
誰かがこれにpgpool-IIを使用することを検討しましたか?
http://pgpool.projects.postgresql.org/contrib_docs/simple_sr_setting/index.html
PostgreSQLのレプリケーションを設定しています。古いマスターが戻ってきたときにトリッキーな部分が発生するようです。
私が読んだことから、pgpoolはそのほとんどを自動化できるようです。ただし、PostgreSQL 9.1にすでに存在するレプリケーション機能を活用しているかどうかはわかりません。