[pgcluster: 179] クラスタサーバの復旧

Masanari Ishida ishida @ credist.co.jp
2004年 2月 27日 (金) 19:29:37 JST


お世話になります。石田と申します。

以前の投稿でもありましたが、クラスタサーバ復旧がうまくいく時と
いかない時があります。

試したのはpgcluster-1.0.6/1.0.6b/1.0.6cv1です。構成は以下のとおりです。

レプリケーションサーバ:1台(REP1:デバッグモードで起動)
クラスタサーバ:3台(CL1〜3)
psql実行用:1台(AP1)
を別々のマシン上で実行しました。

------------
|パターン1|
------------

1)CL3を停止
 $ pg_ctl stop -m immediate -o "-i"
2)AP1よりpsqlにてCL1に接続し、exitする。
 REP1のログにCL3がerrorと記録
3)CL3を復旧。(だれもクラスタサーバには接続していない。)
 $ pg_ctl start -o "-i -R"
4)AP1よりpsqlでCL1に接続し、INSERT文を実行
 test_db=# insert into tbl1 values (1);
5)REP1に以下が表示され、ログにはCL3がerrorとなる。
 DEBUG(get_ip_by_name): send_replicate_packet_to_server query=insert into tbl1
values (1)

 DEBUG(get_ip_by_name): db:test_db port:5432 user:postgres host:CL3 query:insert
into tbl1 values (1)

 DEBUG(get_ip_by_name): sync_command(SELECT
PGR_SYSTEM_COMMAND_FUNCTION(2,1077858286,670307) )
 WARNING:  Message from PostgreSQL backend:
  The Postmaster has informed me that some other backend
  died abnormally and possibly corrupted shared memory.
  I have rolled back the current transaction and am
  going to terminate your database system connection and exit.
  Please reconnect to the database system and repeat your query.
 ERROR(get_ip_by_name): PQexec error

 DEBUG(PGRsend_load_balance_packet): sem_unlock[3]
 DEBUG(PGRsem_unlock): replicate_loop selected
6)CL3よりpsqlで接続
 1.0.6b/cv1では接続できませんでした。応答をずっと待ち続けているような感じでした。
 1.0.6では接続できました。でもREP1から切り離されているのでレプリケート対象外
 となっていました。

ただし、再度同様のことを行うと上記のような問題は発生せず、
正常に復旧し、レプリケートもされていきます。
3回目は上記同様。更に続けていくと以下のようになりました。

1回目:異常  2回目:正常
3回目:異常  4回目:正常
5回目:異常  6回目:正常
7回目:異常  8回目:正常
9回目:異常 10回目:正常

------------
|パターン2|
------------
1)〜3)までパターン1と同じ。
4)AP1よりCL3に接続し、exitする。
5)AP1よりCL1に接続し、INSERTを実行。
6)AP1よりCL3に接続し、参照系、更新系の処理を行う。問題発生せず。

ただし、再度同様のことを行うと、パターン1のようにCL3がREP1から切断されます。
これを更に続けていくと以下のようになりました。

1回目:正常  2回目:異常
3回目:正常  4回目:異常
5回目:正常  6回目:異常
7回目:正常  8回目:異常
9回目:正常 10回目:異常

1.0.6cv1で、ロードバランサを使用した場合も行ってみましたが
同様でした。

以上、ご報告です。

----------------------------------------
Masanari Ishida < ishida @ credist.co.jp >
----------------------------------------






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