[pgcluster: 503] レプリケーションサーバの仕様に関して

kazunari takahashi kazunari.takahashi @ ctc-g.co.jp
2004年 8月 13日 (金) 18:53:38 JST


高橋です.

下記の件、了解いたしました.
ありがとうございます.

> # そろそろ限界は近い...

週末は休んでくださいね.

> 例えば,トランザクションの最中にクラスタDBがクラッシュした場合,
> トランザクションは中断されていますので,セッションを終了する必要がありま
> す.もしセッションを切らずに,他のクラスタDBにセッションを繋ぎなおした
> 場合,トランザクションが継続しているように誤解してしまう可能性があります.

了解いたしました.
エラーが検知できればよいと思います.

> 少し違いますが,トランザクション処理の最後のコミットをレプリケーション中
> に,レプリケーションサーバがクラッシュした場合,セッションを切り離さず,
> スレーブのレプリケーションサーバがセッションを引き継いでコミットを実行す
> る機能(レプリケーション・ログによる復旧)は次のバージョンで入れる予定で
> す.

次期バージョン期待しております.
いつくらいのリリースになりそうですか?
半年先、1ヶ月先、1週間先といったざっくりとしたスケジュール感で問題ありませんので、
お教えくださいませんか?


さらにレプリケーションサーバが落ちた時の挙動について
お聞きしたいことがあります.

1. レプリケーションサーバの不具合の検知方法 (ログ?)

2. レプリケーションサーバを復旧させるには、
   ロードバランサー、クラスタサーバを落とさなければならないか?

3. トランザクション実行中に、レプリケーションサーバが落ちた場合の挙動

3に関しては、簡単な調査を致しました.
トランザクション中にレプリケーションサーバが落ちるとその後の機能がストッ
プしてしまいます(セカンダリのレプリケーションサーバがある場合)

####################################
#環境
####################################
pgcluster-1.0.7av14

pglb × 1 (solaris8 sparc)
clusterDB ×3 (solaris8 sparc) host名:serverA , serverB , serverC
rgrp × 2 (solaris8 sparc)
####################################
#手順
####################################


----------------------------------------
1.  1トランザクション中に1000件インサート
----------------------------------------

begin;
insert into test (name) values('a');
×1000
commit;

をロードバランサ経由で実行

----------------------------------------
2.  レプリケーションサーバを落とす
----------------------------------------

$ pgreplicate -D /usr/local/pgsql/etc stop

----------------------------------------
3.  結果確認
----------------------------------------
プログラムは正常終了.
マスタレプリケーションサーバが落ちた後、
セカンダリレプリケーションサーバに通信している様子(デバックログから確認)
プログラム終了後、ロードバランサでpsqlコマンドで接続し、
insert文実行しても、プロンプトが返ってこない.

serverA:
test=> select count(*) from test;
 count
-------
   656
(1 row)

serverB:
test=> select count(*) from test;
 count
-------
  1000
(1 row)

serverC:
test=> select count(*) from test;
 count
-------
   655
(1 row)


以上 宜しくお願いいたします.

高橋 一成 <kazunari.takahashi @ ctc-g.co.jp>




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