[pgsql-jp: 41317] Re: ストリーミングレプリケーションのフェイルバック方法

mitani mitani @ sraw.co.jp
2013年 1月 11日 (金) 11:48:11 JST


池田さん、こんにちは。
三谷@広島です。

念のため、primaryとstandbyのrecovery.confを
それぞれ開示してもらうことは可能でしょうか。


On Fri, 11 Jan 2013 03:10:13 +0900
池田亘 <ikeda.wataru @ gmail.com> wrote:

> 池田と申します。質問させて下さい。
> 同期レプリケーションの検証中なのですが、フェイルオーバーが完了した後、同じ手順でフェイルバックを実施しようとするとスタンバイに 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. いずれもマスタ?かつスタンバイモードになっていることを確認。
> 
> __________  ESET NOD32 Antivirus からの情報, ウイルス定義データベースのバージョン 7881 (20130110) __________
> 
> このメッセージは ESET NOD32 Antivirus によって検査済みです。
> 
> http://canon-its.jp
> 
> 
> 


-- 
mitani <mitani @ sraw.co.jp>


pgsql-jp メーリングリストの案内