Mongo ghost sync & slaveDelay
I updated the previous slide that was added slaveDelay and its (serious) probrem !!
Ghost sync & slaveDelay
前回のスライドをアップデートして、slaveDelayとその問題を追記しました。
概要
Ghost sync
MongoDB replica set のnode間のネットワーク障害などで、Primaryに繋げなくなってしまったSecondaryを救済する仕組み。
可能な限りavailabilityを優先する思想はMongoっぽくて好感。
slaveDelay
致命的なヒューマンエラーを救済できそうな、かなりユニークな仕組み。
意図的にSecondaryの同期を遅延させ、ヒューマンエラーの伝播を防ぐ。
db.dropDatabase()
のような復旧不能なコマンドを打ってしまっても、slaveDelayノードまで伝播する前に対処すれば助かる。
Ghost sync と slaveDelayの組み合わせ
slaveDelayノードを同期ターゲットとしてしまったSecondaryは意図せずslaveDelayノードになってしまう。
ただし自分が遅延している事を知らないし、周りも把握できない。
クライアント(アプリなど)は意図せず古い情報を参照し続ける可能性がある。
ちゃんと検知して、HIDDENなりMAINTAINANCEなりになってくれ!ってjiraにポストしといた。
PS.
いつの間にかdebugging with submitter になってた・・・
サクっと直ってて欲しかったなぁー