ツナワタリマイライフ

日常ネタから技術ネタ、音楽ネタまで何でも書きます。

Galera Cluster Documentを読む Configuration編(3) RECOVERING THE PRIMARY COMPONENT

はじめに

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です

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は飛ばしたんだけどな、ぐぬぬ。。。