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)
- su-postgres
- / opt / pgsql91 / data /のtrigger.txtをタッチします
- recovery.confはrecovery.doneになります
- psql -c "; SELECT pg_start_backup( 'backup'、true)";
- rsync -a -v -e ssh / opt / pgsql91 / data / 10.0.66.1:/opt/pgsql91/data/ --exclude postmaster.pid
- psql -c "; SELECT pg_stop_backup()";
新しいスレーブ(10.0.66.1)
- recovery.confを作成します。cprecovery.doneからrecovery.conf
- vi recovery.conf変更IPアドレス:primary_conninfo = 'host = 10.0.66.2'
- postgresqlを開始します
だから私の質問は今:
- これは役割を切り替える正しい方法ですか?
- 誰かがこのプロセスを自動化しましたか?
- 同期レプリケーションが有効になっている場合、スレーブが応答するのを待っているため、新しいマスターサーバーはトランザクションをコミットしません。ただし、他のサーバーである古いマスターがダウンしているため、スレーブはありません。これは正しいですか、または新しいスレーブがダウンしている間、同期レプリケーションを一時的に無効にする必要がありますか?