[pgcluster: 648] Re: Clusterリカバリ中の更新クエリについて

Chikahisa Yabuzuka yabuzuka @ cseltd.co.jp
2005年 1月 12日 (水) 17:05:49 JST


三谷様

お世話になっております。
薮塚です。

先日教えていただいた方法(マスタDBをLBから見えなくする)で
新たに検証を進めておりますが、リカバリを繰り返すうちに
DB接続ができなくなる現象に遭遇いたしました。

環境は
 pgcluster-1.0.8b
 RedHat Linux Enterprise Server AS 3.0
です。

構成は
1台のマシンに、ロードバランサ×1、Cluster×2、Replicater×1 を稼動させていま
す。
それを2台用意しております。(プライマリとセカンダリの構成です)
各ロードバランサはClusterのマスタDBにはアクセスしないように
pglb.confに記述をしております。
ロードバランサは各マシンのマスタDBではない方のClusterにアクセスします。

手順ですが、
1.マスタDBではないClusterを停止させて、その後リカバリを実行します。
2.リカバリ完了後、もう一方のホスト上のマスタDBではないClusterを停止させ
 リカバリを実行させます。
3.上記1,2の作業を繰り返していくと、psqlを使ってDB接続ができなくなります。
 Clusterを停止させた後に発生します。
 ロードバランサから見て、どちらか一方のClusterは稼動している状態なのですが
 メッセージ「psql: Sorry, backend connection is full」が出力されてしまいま
す。
 また、ロードバランサに下記のようなメッセージが出力されます。

このような状況になった場合はロードバランサを再起動することで回避できるのです
が
「ERROR:load_balance_main():no cluster available」と出ているのが気になりま
す。
原因等をご教授いただければ幸いです。
よろしくお願いいたします。



---------- ロードバランサのメッセージ ----------

DEBUG:PGRscan_cluster:2 ClusterDB can be used
DEBUG:PGRscan_cluster:pgc01.postgresql.jp [7432],useFlag->98 max->32
use_num->4

DEBUG:PGRscan_cluster:pgc02.postgresql.jp [7432],useFlag->99 max->32
use_num->3

DEBUG:PGRscan_cluster:2 ClusterDB can be used
DEBUG:PGRscan_cluster:pgc01.postgresql.jp [7432],useFlag->98 max->32
use_num->4

DEBUG:PGRscan_cluster:pgc02.postgresql.jp [7432],useFlag->99 max->32
use_num->3

DEBUG:PGRscan_cluster:2 ClusterDB can be used
DEBUG:PGRscan_cluster:pgc01.postgresql.jp [7432],useFlag->98 max->32
use_num->4

DEBUG:PGRscan_cluster:pgc02.postgresql.jp [7432],useFlag->99 max->32
use_num->3

DEBUG:PGRscan_cluster:2 ClusterDB can be used
DEBUG:PGRscan_cluster:pgc01.postgresql.jp [7432],useFlag->98 max->32
use_num->4

DEBUG:PGRscan_cluster:pgc02.postgresql.jp [7432],useFlag->99 max->32
use_num->3

DEBUG:PGRscan_cluster:2 ClusterDB can be used
DEBUG:PGRscan_cluster:pgc01.postgresql.jp [7432],useFlag->98 max->32
use_num->4

DEBUG:PGRscan_cluster:pgc02.postgresql.jp [7432],useFlag->99 max->32
use_num->3

ERROR:PGRload_balance():no cluster available
ERROR:load_balance_main():load balance process failed


ERROR:load_balance_main():no cluster available
DEBUG:do_accept():I am 10472 accept fd 6
DEBUG:read_startup_packet():Protocol Major: 2 Minor: 0 database: testDB
user: testDB

----------------------------------------






> -----Original Message-----
> From: pgcluster-admin @ ml.postgresql.jp
> [mailto:pgcluster-admin @ ml.postgresql.jp]On Behalf Of mitani
> Sent: Friday, January 07, 2005 5:45 PM
> To: pgcluster @ ml.postgresql.jp
> Subject: [pgcluster: 640] Re: Clusterリカバリ中の更新クエリについて
>
>
> 三谷@広島です.
>
> > リカバリを実行する際には全てのセッションを閉じないといけないというこ
> とでしょ
> > うか。
> 全て,ではなく,リカバリ中はマスタDBへのセッションを閉じる必要がありま
> す.
> つまり,ロードバランサが複数ある場合,どのロードバランサからであっても
>> リカバリ中はマスタDBへのセッションを閉じる必要があります.
>
> 「リカバリ中であっても,セッションは絶対に切りたくない」ということであ
>> ば,初めからマスタDBを外部からアクセスされないようにしておくと言う方法
>> あるかと思います.
> (ロードバランサの設定ファイルから外しておくとか)
>
> データウェアハウス的に使われる場合に,そのような構成で使われているとこ
>> もあるようです.
>
> =============================
> 三谷 篤<mitani @ sraw.co.jp>
> =============================
>




pgcluster メーリングリストの案内