[pgsql-jp: 41078] Re: PostgreSql9.1 同期レプリケーションでスタンバイサーバ故障時の対処

MauMau maumau307 @ gmail.com
2012年 4月 3日 (火) 17:30:14 JST


S.A.さん


MauMauといいます。

藤井さんのいわれたことは、次のマニュアルページの25.2.6.3に書かれています。
S.A.さんもここを読まれて、記事中の
「設定ファイルを再読み込み」というのをサーバの再起動だと思われたのかもしれません。
実際にはサーバを停止する必要はなく、pg_ctl reloadを実行すればすみます。

http://www.postgresql.jp/document/pg910doc/html/warm-standby.html#SYNCHRONOUS-REPLICATION

しかし、スタンバイがダウンしたときに自動的に縮退運転に移行する機能がほしいですね。
もしかしたら、pgpool-IIでできるかもしれません。
私はpgpool-IIをまだ使ったことがないのでわかりませんが、
次のマニュアルをご覧ください。

http://pgpool.projects.postgresql.org/pgpool-II/doc/pgpool-ja.html

[上記ページからの抜粋]
Streaming Replicationでのフェイルオーバ
Streaming replicationを利用したマスタスレーブモードでは、PrimaryやStandbyノードが停止した場合に、レプリケーションモードと同じように自動フェイルオーバを行なわせることができます。特に何も設定しなくても、停止したノードを自動的に切り放すことができますが、Streaming replicationでは、「トリガファイル」を作成することにより、 
Standbyノードを、リカバリモードから更新問い合わせを受け付ける通常のPostgreSQLの動作モードに自動変更することができます。これを利用して、フェイルオーバコマンドを併用して、Primaryノードがダウンしたときに、Standbyノードが自動的にとって代るような設定を行なうことができます。


以上です。

----- Original Message ----- 
From: "test" <test2011y @ kotanikogyo.co.jp>
To: <pgsql-jp @ ml.postgresql.jp>
Sent: Monday, April 02, 2012 7:25 PM
Subject: [pgsql-jp: 41075]PostgreSql9.1 同期レプリケーションでスタンバイサーバ故障時の対処


お世話になります。S.A.と申します。

PostgreSql9.1で同期レプリケーションを考えています。
質問させていただきたいのは、スタンバイサーバが故障した時の
対処です。
プライマリの故障に関しては解説や事例など色々情報を見つけたのですが、
スタンバイサーバが故障した時の対処がいまいちよくわかっていません。
スタンバイサーバの修理が終わるまでプライマリサーバのみで「縮退運転」を
したいのですが、その際の対処方法や注意事項などを調べています。
PostgreSQL9.1.3文書「25.3フェールオーバ」には「フェールオーバは不要です。」
と書かれています。
(http://www.postgresql.jp/document/current/html/warm-standby-failover.html)
 
「フェールオーバは不要」でもなんらかの対処は必要かと考えているのですが
間違っているでしょうか?
「スレーブ(スタンバイ)側がダウンすると、マスタ側の更新もできなくなる。」と
以下のサイトに書かれているので、プライマリで一時的にレプリケーションを停止する 

操作が必要ではないかと考えています。
(http://www.interdb.jp/techinfo/pg_sr/sr_sync03.html)

障害発生時の一次対応はある程度自動化したいのですが、以下のような方法かなと考えています。
1.スタンバイサーバの故障検出方法
データの更新に失敗した時、プライマリーでpg_stat_replicationのstateを調べる。
streamingでなければスタンバイサーバの故障と判断する。
2.レプリケーション停止
postgresql.confを書換えてpg_ctlでリスタート

間違いの指摘や或いはもっと良い方法などを教えていただけないでしょうか。

環境:
プライマリ1台、スタンバイ1台
CentOS6.2



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