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

Fujii Masao masao.fujii @ gmail.com
2013年 1月 18日 (金) 01:44:36 JST


2013/1/17 mitani <mitani @ sraw.co.jp>:
> 藤井さん、こんにちは。
> 三谷@広島です。
>
> おっしゃる通り、4の「Aをスタンバイとして起動」の前に
> ベースバックアップをとって、転送する必要がありますね。
> ----------------------
> Bにて
> $ psql -p 12345 -c "SELECT pg_start_backup(now()::text)" postgres
> $ rsync -av --delete --exclude=pg_xlog --exclude=postmaster.pid \
>  --exclude=postgresql.conf --exclude=recovery.conf \
>  /usr/local/pgsql/data2/* /usr/local/pgsql/data1
> $ psql -p 12345 -c "SELECT pg_stop_backup()" postgres
>
> とやってから、
> Aの設定:
>  <recovery.conf>
> ・standby_mode = on

これに、primary_conninfoも設定してもらえればよいと思います。

> $ pg_ctl -D /usr/local/pgsql/data1 start
> ---------------------
> これで、AがWAL転送前に死んだ場合もtimelineの不整合というエラーは出ずに
> ベースバックアップ後にかかった更新も、
> ちゃんとBのarchiveからリカバリーしてスタンバイになってくれます。
> (障害発生のタイミングを作るのが難しいので、AとBを別サーバにしてやってみました。)

はい、旧マスタAをスタンバイとして起動する前に、新マスタBから
上記手順のようにオンライン物理バックアップで取得してもらえれば
OKです。

以上、よろしくお願いいたします。

-- 
Fujii Masao


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