[pgsql-jp: 39127] pgpoolによりバックエンドのデータベースの異常を検知できないでしょうか。

高尾 宏治 kouji @ netlab.jp
2008年 1月 31日 (木) 14:53:58 JST


高尾です。
# 話題をpgpoolに変更するため、Subjectを変更しています。
# 本メールは、以下のSubjectではじまる一連のスレッドに関連しています。
#  [pgsql-jp: 39107] データディレクトリが
# 突然使用できなくなったことを検知する設定について

pgpool 3.1.2を使用しています。
pgpoolについてご質問とご要望があります。

On 2008/01/31, at 12:36, 高尾 宏治 wrote:

> 稼動系と待機系の主従構成で運用しており、
> データベースの同期はpgpoolで実現しています。
> 待機系のデータディレクトリがアンマウントされてしまうと、
> それ以降、pgpool経由でクエリを発行すると、
> pgpoolがデータの不整合を検知するため、全てのクエリが失敗するようになります。

データの不整合を検知したとき、pgpoolのログには以下が記録されます。

2008-01-31 14:39:08 ERROR: pid 3816: read_kind: kind does not match between backends master(83) secondary(69)
2008-01-31 14:39:08 ERROR: pid 3816: pool_do_auth: failed to read kind before backendkeydata

手元のpgpoolの設定では、データの不整合が発生しても
フェイルオーバーしないように設定しています。

  replication_stop_on_mismatch = false

しかし、セカンダリのデータディレクトリが
アンマウントされるというような異常が発生したときは、
クエリのレスポンスからpgpoolが異常を検知し、
セカンダリを切り離すようにはできないものでしょうか。
pgpoolの設定などで実現できるのであれば、
ご教授いただけないでしょうか。
また、もし、現在のバージョンではそのようなことが設定できないのであれば、
機能の追加をご検討いただけないでしょうか。
よろしくお願いいたします。

最後に、データディレクトリがアンマウントされた時の
PostgreSQL 8.4.5のpsqlコマンドの実行時の作業ログを書きます。
何かの参考になれば幸いです。
----- ここから -----
$ psql -Upostgres -d testdb -h localhost -p 5433 -c "BEGIN; SELECT * FROM users; "
psql: FATAL:  could not open file "global/pg_database": No such file or directory
$ echo $?
2
----- ここまで -----

以上です。

---
株式会社ネットワーク応用通信研究所 研究員 高尾 宏治
〒690-0826 島根県松江市学園南二丁目12番5号
          HOYOパークサイドビル・2F
TEL:0852-28-9280 FAX:0852-28-9281
URL:http://www.netlab.jp/
e-mail:kouji @ netlab.jp




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