[pgcluster: 163] Re: レプリケーションサーバの冗長化と復旧

mitani mitani @ sraw.co.jp
2004年 2月 25日 (水) 15:03:37 JST


三谷@広島です.

> カッコ内はスタンバイで小文字は障害とします。
> 1) 正常状態
>  ClusterA, B, C --- ReplicationServer A(B)
> 2) Aが故障
>  ClusterA, B, C --- ReplicationServer a(B)
> 3) Bに切り替え
>  ClusterA, B, C --- ReplicationServer (a)B
> 
> その後、(a)を復旧して系に入れたい時には、クラスタ
> サーバA,B,C、レプリケーションサーバBの再起動は
> 必要なのでしょうか?
> また、再起動する場合、すべて一斉に行わないと
> いけないのでしょうか。
レプリケーションサーバの動的追加機能はまだ作っていません.
現状では,障害発生によって切り離されたレプリケーションサーバを(復旧させ
るために)再度使いたい場合は,クラスタサーバを全部再起動する必要がありま
す.

レプリケーションサーバに障害が発生した場合,トランザクション処理途中のク
エリーはエラーになりますが,新たに開始されるクエリーについては待機系のレ
プリケーションサーバを使用するようになります.
内部的な話ですが,レプリケーションサーバが切り替わった時に,レプリケーショ
ンサーバからクラスタに対して「レプリケーションサーバ更新通知」を出してい
ます.
レプリケーションサーバの動的追加をこの通知で実装すると,トランザクション
処理途中のクエリーがあった場合,アボートしてしまいます.障害発生時は仕方
がないと思うのですが,レプリケーションサーバを追加しただけでクエリーをア
ボートさせるのは嫌なので,別の方法が必要だと思います.

カスケードの実装ではこの辺りを解決しないといけないので,なにか仕組みを考
えたいと思います(この作業が楽しくて,つい機能追加に手をつけてしまうので
すが,結局自分の首を絞めることになるのですねぇ...).

=============================
STATUS:Lock回避対象拡張中
三谷 篤<mitani @ sraw.co.jp>
=============================






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