[pgcluster: 945] Re: ときどきクエリが失敗する現象について
takay
takay.ml @ gmail.com
2006年 11月 22日 (水) 09:31:27 JST
高柳です。
今朝、同現象が発生し、現象が回復しなかったためいろいろ調べて
状況把握してみました。わかったことは、次の通りです。
まず、前置きとして構成を書いておきます。
WebServerA---LoadBalancerA----ClusterA
\/
/\
WebServerB---LoadBalancerB----ClusterB
Webサーバは2台構成で、DNSラウンドロビンによって振り分けています。
今朝、現象が出たのはBのサーバでした。
(今まで数分後に回復していたのは、もしかしたら、DNSのTTLを300秒
に設定していたため、別のWebサーバに切り替わったからかもしれません。)
問題となっていたテーブル(仮にTableAとします)はServerB上で
psqlからselectすると「ERROR: relation 'TableA' does not exist」
と出て、ServerAから同様にクエリーを投げたところ正常でした。
で、原因なのですが、ServerB上のUserAでpsqlで「\d」してみたところ、
TableAは存在してませんでした。
実はTableAは所有者が「UserB」でスキーマが「public」、
参照する人は「UserA」という関係なのですが、UserAからは
見えていない状態でした。
このとき、ServerA上のUserAからは正常に見えており、また、
ServerB上のUserBからは「public」ではなく「SchemaB(UserBのスキーマ)」
となっていました。
なぜ「public」が「SchemaB」になってしまったのか不明ですが、
Webサーバ、pgcluster(lb/cluster/replication)を再起動したら直りました。
---
takay.ml @ gmail.com
pgcluster メーリングリストの案内