前回、
Slave auto promotionについて記載するといったが、
詳細はさておき、先に結論を書いておく。
【前提】
- maxscaleによるWriterReaderSplit機能を使う
- masterダウン時には、生きているslaveが自動昇格する
【結論】
- ノード数は3以上が推奨と書かれているが、ノード数が1になると、maxscaleのWriterReaderSplitが機能しなくなる
- slaveの同期が失敗していている状態では、masterに昇格しないし、maxscaleのクラスターからも外れる
ということが挙げられる。
つまり、3ノードあっても、2ノード死んだら、実質アウトなのである。
そのため、打っておく手段としては、
- masterがダウン→手動復旧→自動で新masterのslaveとなるようにする
- 1ノードになった場合、maxscale経由でアクセスしないようにする
ということをやっておけば完璧だと思われる。
ちなみに、良い点として、masterがダウン→復旧しても、新masterとバイナリログポジションがずれているため、
maxsacle上のクラスターからは外され、マルチマスター状態にはならない。(単独のマスターとして存在する)
幸い、maxscaleは結構イベントが拾えるので、
上記対策もなんとか実現できそうな気がしている。
そのあたりの検証記事を、今後書こうと思います。
以上
コメントがあればどうぞ