はじめに
configuration編第3弾はRECOVERING THE PRIMARY COMPONENT。ノードがこけたときどうやってPRIMARY COMPONENTと同じになるまで修復するか、ですかね。クラスタ状態を記録するgvwstate.datの読み方が載ってるので期待。
Recovering the Primary Component — Galera Cluster Documentation
RECOVERING THE PRIMARY COMPONENT
クラスタノードはdisk上にPrimary Componentの状態を保存します。ノードはPrimary Componentの状態とUUIDを記録します。ノードが停止する場合、すべてのノードは最後に接続したノードの状態を保存するとクラスタはPrimary Componentを修復します。(?)
ノード間で異なるwrite-setポジションを持つ時、リカバリプロセスはstate snapshot transferを必要とします。
(訳注:pc.recoveryパラメタをみろと言っている。これをTRUEにすると、grastate.datにPrimary Componentの情報を記録するようになる。クラスタ全体が壊れたとき、最後に接続したノードと再接続することで自動的に復旧するとか)
UNDERSTANDING THE PRIMARY COMPONENT STATE
Primary Componentの状態がディスクに保存されるとき、それはgrastate.datファイルに保存されます。ノードはPrimary Componentの状態が変わるたびにこのファイルを更新または作成します。これはノードの最新のPrimary Componentの情報を保証します。ノードが接続を失った場合、このファイルを参照します。ノードが正常にシャットダウンした場合、このファイルを削除します。
gvwstate.datファイルは2つの部分にわけられます。
- Node Information: my_uuidフィールドに、ノードのUUIDを記載します
- View Information: #vwdevと"vwendの間に、Primary Componentから見ることのできる情報を記載します。
- view_idは3つのパートから特定されます
- view_typeはprimaryの場合常に3を示します
- view_uuidとview_seqはともにユニークに特定できる値です
- bootstrapはノードばブートストラップかどうかを示しますが、Primary Componentのリカバリプロセスには影響しません(訳注:bootstrapってなんだろ)
- memberはPrimary Component内のノードのUUIDです
- view_idは3つのパートから特定されます
MODIFYING THE SAVED PRIMARY COMPONENT STATE
特定のノードを、特別な理由で加入させるという異常な状況のとき、Primary Componentの状態を手動で変更することができます。(訳注:どういう状況だ)
注意:通常時は、安全上の理由で、gvwstate.datの修正は避けるべきだ。予期しない結果をもたらすだろう。
安全に停止後、もしくは最初の起動時、自身のUUIDはランダムに割り当てられます。ノードはgvwstate.datファイルを見つけると、my_uuidフィールドからUUIDを探します。
手動で任意のUUIDを割りあてる場合、新しいPrimary Componentに強制的に加入させます。(?)
例えば、3つのノードがあったとして、クラスタに新しいPrimary Componentを同時に加入させたとします。3つのUUIDを生成して、各ノードに割り当てましょう。
各ノードのgwstate.datを編集します。
(訳注:my_uuidがd3124b〜が2つあるのは間違い?)
3ノードすべてをbootstrapフラグなしで起動させます。起動すると、Galera Clusterはそれぉれのgvwstate.datファイルを読み込みます。ファイルからUUIDとメンバーを引き出すと、ノードが新しいPrimary Componentに加入します。
おわりに
手動でgvwstate.datを編集するシーンがよくわからなかったですね。正常終了のときはこれをリセットし、予期せぬダウンのとき、リカバリ時にはこれを手がかりにするようです。
gvwstateはgalera view stateかな?似た感じのクラスタ状態を保存するファイルでgrastate.datもあります。
Restarting the Cluster — Galera Cluster Documentation
grastate.datはこっちに載ってるみたい。Getting Startedは飛ばしたんだけどな、ぐぬぬ。。。