[pgsql-jp: 36437] Re: pgpoolでfail Overするタイミング
Tatsuo Ishii
ishii @ sraoss.co.jp
2005年 11月 22日 (火) 18:47:00 JST
石井です。
> moriyamaです
>
> pgpool2.6.5で試させて頂いてます。
>
> PostgreSQL8.0.3との組み合わせで動作確認をしていたところ、VACUUMを実行
> した直後にMaster側のDBが切り離されました。
>
> 発生条件:
> ・pgpoolを稼動してから数日間VACUUMを一回もかけずにいた
> ・VACUUMを実行する前にshow pool_status で稼動状況を確認した時にはDBが2台とも
>
> 正常に稼動していた
> VACUUMを開始した直後にshow コマンドを実行したところ、MasterDBがFail Over していた
>
> どなたか原因が分かる方、よろしくお願い致します。
>
> 以下がFail Over 時のログになります。
どうやらまたもやVACUUMをCSEから実行されているようですね。あのツールは
挙動が不可解だし(なぜか必ずクエリのキャンセルをするし...)、使っている
libpqのバージョンが古く、更新も止まっているようなので使うのを止めた方
がいいと思います(問題の切り分けの邪魔になることもあります)。
それはともかく、
> 2005-11-21 19:13:10 ERROR: pid 31850: pool_process_query: kind does not
> match between backends master(E) secondary(P)
というエラーは、マスタがE(エラー)を返しているのに、セカンダリは
P(CursorResponse)を返していることを示しています。もし本当にこれが
VACUUMを実行した直後の状態だとすると、かなり不可解ですね。VACUUMがEを
返すことはありますが、Pを返すことはあり得ません。Pが返るのは検索をし
たときだけです。VACUUMだけでなく、SELECTか何かを実行しているように見え
ますが、違いますか?
もうちょっとログの前の方を見れば、実行したSQLが出ているはずです。
仮にVACUUMでないとして、ではなぜマスタとセカンダリの状態が違ってしまっ
たかというのは、詳細に調べないとわかりません。Eが出ているということは、
PostgreSQLのログにも何か出ているはずです。
--
Tatsuo Ishii
SRA OSS, Inc. Japan
> 2005-11-21 19:13:09 DEBUG: pid 32228: I am 32228 accept fd 6
> 2005-11-21 19:13:09 DEBUG: pid 32228: Protocol Major: 1234 Minor: 5678
> database: user:
> 2005-11-21 19:13:09 DEBUG: pid 32228: Cancel request received
> 2005-11-21 19:13:09 DEBUG: pid 32228: connecting postmaster Unix domain
> socket: /tmp/.s.PGSQL.5531
> 2005-11-21 19:13:09 DEBUG: pid 32228: connected to postmaster Unix domain
> socket: /tmp/.s.PGSQL.5531 fd: 11
> 2005-11-21 19:13:09 DEBUG: pid 32228: Cancel request received
> 2005-11-21 19:13:09 DEBUG: pid 32228: connecting postmaster Unix domain
> socket: /tmp/.s.PGSQL.5532
> 2005-11-21 19:13:09 DEBUG: pid 32228: connected to postmaster Unix domain
> socket: /tmp/.s.PGSQL.5532 fd: 11
> 2005-11-21 19:13:10 DEBUG: pid 31850: read kind from backend E
> 2005-11-21 19:13:10 DEBUG: pid 31850: pool_process_query: waiting for
> secondary for data ready
> 2005-11-21 19:13:10 ERROR: pid 31850: pool_process_query: kind does not
> match between backends master(E) secondary(P)
> 2005-11-21 19:13:10 DEBUG: pid 31850: connecting postmaster Unix domain
> socket: /tmp/.s.PGSQL.5531
> 2005-11-21 19:13:10 DEBUG: pid 31850: connected to postmaster Unix domain
> socket: /tmp/.s.PGSQL.5531 fd: 11
> 2005-11-21 19:13:10 DEBUG: pid 31850: connecting postmaster Unix domain
> socket: /tmp/.s.PGSQL.5532
> 2005-11-21 19:13:10 DEBUG: pid 31850: connected to postmaster Unix domain
> socket: /tmp/.s.PGSQL.5532 fd: 11
> 2005-11-21 19:13:10 LOG: pid 31850: notice_backend_error: master: 1 fail
> over request from pid 31850
> 2005-11-21 19:13:10 DEBUG: pid 14035: failover_handler called
> 2005-11-21 19:13:10 LOG: pid 14035: starting degeneration. shutdown master
> host (5531)
> 2005-11-21 19:13:10 DEBUG: pid 14035: kill 32185
pgsql-jp メーリングリストの案内