[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 メーリングリストの案内