この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。
どうもメガネです。6回目です。
前回紹介した設定ではdb1で障害が発生した場合db2でリカバリが行われることが確認できましたが、
このままだとdb2にも障害が起きるかもしれません。そこで今度はdb1を待機系としてウォームスタンバイを復旧する設定をします。
今回は前回の設定が終わっていることを前提で行います。
さきほどまで主系だったdb1のデータベースインスタンスはもう不要なので削除します。
$ rm -rf db1
archive1の中も削除したいですがシンボリックリンクが残っている可能性があるので残しておいてください。
$ psql -p5433 -c “select pg_start_backuo(‘backuo2’) template1
pg_start_backup
——————
0/9000020
(1 row)
$ cp -Rp db2 db1
$ psql -p5433 -c “select pg_stot_backuo() template1
pg_stop_backup
——————
0/A00000000
(1 row)
次に設定ファイルを編集します。
db1/recovery.confとdb1/postgresql.confの設定を行います。
以下のように変更してください。
db1/recovery.conf
restore_command = ‘pg_standby -l -t /tmp/trigger /tmp/archive2 %f %p %r’
db1/postgresql.conf
archive_command = ‘cp %p /tmp/archive1/%f’
#port = 5433
また前回のように完全バックアップのディレクトリの中からpostmaster.pidとpg_xlogの中身を削除します。
$ rm db1/postmaster.pid
$ rm db1/pg_xlog/*
rm: db1/pg_xlog/archive_status: is a directory
$ rm db1/pg_xlog/archive_status/*
$ pg_ctl -D /tmp/db1 start
以上で設定は終了です。