[pgsql-jp: 41316] ストリーミングレプリケーションのフェイルバック方法
池田亘
ikeda.wataru @ gmail.com
2013年 1月 11日 (金) 03:10:13 JST
池田と申します。質問させて下さい。
同期レプリケーションの検証中なのですが、フェイルオーバーが完了した後、同じ手順でフェイルバックを実施しようとするとスタンバイに pg_ctl
promote を発行してもプライマリに昇格されません。startup process は recovering xxxx
となったままです。
以下の手順でフェイルバックはできないのでしょうか。
抜けている部分、代替手順などあればご教授ください。
* 検証環境
CentOS release 6.3 x86_64
PostgreSQL 9.2
primary(-p 5432), standby(-p 5433)とも同一ホストで稼働。
- postgresql.conf
--
wal_level = hot_standby
archive_mode = off
max_wal_senders = 2
wal_keep_segments = 32
synchronous_standby_names = '*'
hot_standby = on
- recovery.conf
--
standby_mode = 'on'
primary_conninfo = 'host=localhost port=xxxx user=replicator
application_name=xxxx'
restore_command = 'cp -a "/var/lib/pgsql/xxxx/data/pg_xlog/%f" "%p"'
recovery_target_timeline = 'latest'
* フェイルオーバー手順
0. primary(マスタ) と standby で同期レプリケーション。
1. primary を疑似クラッシュ。(immediateで停止。)
2. standby に promote を発行。startup process は waitng、recovery.conf が
recovery.done に置き換わったことを確認。この時のログは以下の通り。
--
LOG: received promote request
LOG: redo done at 0/4000058
LOG: selected new timeline ID: 2
LOG: archive recovery complete
3. primary に recovery.conf を設置して再起動。
--
LOG: streaming replication successfully connected to primary
LOG: standby "primary" is now the synchronous standby with priority 1
4. standby がマスタに昇格して同期レプリケーションが継続していることを確認。
* フェイルバック手順
0. standby(マスタ) と primary で同期レプリケーション。
1. stanby を停止。
2. primary に promote を発行。startup process は recovering
のまま。recovery.done ファイルに置き換わらない。この時 primary のログは以下を繰り返す。
--
LOG: received promote request
LOG: restored log file "000000020000000000000004" from archive
LOG: record with zero length at 0/4000118
FATAL: could not connect to the primary server: could not
connect to server: Connection refused
3. standby に recovery.conf を設置して再起動。どちらもスタンバイモードになる。
--
[standby]
LOG: entering standby mode
LOG: restored log file "000000020000000000000004" from archive
LOG: consistent recovery state reached at 0/4000118
LOG: record with zero length at 0/4000118
LOG: record with zero length at 0/4000118
LOG: database system is ready to accept read only connections
LOG: streaming replication successfully connected to primary
[primary]
LOG: streaming replication successfully connected to primary
4. いずれもマスタ?かつスタンバイモードになっていることを確認。
pgsql-jp メーリングリストの案内