DBAtlas · データベース運用アトラス

過半数を失った後にレプリカセットの再構成を強制する (force reconfig)

MongoDBレプリカセット

コマンド

// On a surviving member with the most recent optime (runs as a secondary):
rs.status().members.map(m => ({ host: m.name, state: m.stateStr, health: m.health, optime: m.optimeDate }))
cfg = rs.conf()
cfg.members.map((m, i) => ({ i: i, host: m.host }))
// Keep only the reachable members (example: members 0 and 2):
cfg.members = [cfg.members[0], cfg.members[2]]
rs.reconfig(cfg, { force: true })
// Verify the new primary election:
rs.status().members.map(m => ({ host: m.name, state: m.stateStr }))

概要

投票メンバーの過半数が恒久的に失われた場合 (例: データセンター全体の喪失)、生き残ったメンバーから新しい構成を作成し、セットが再びプライマリを選出できるようにする。

使用する場面

災害シナリオでのみ: 過半数が戻らず、セットが読み取り専用のまま動けない場合。

注意

これは最後の手段である。失われたメンバーが後で古い構成のまま復帰すると、スプリットブレインやロールバックが発生する可能性がある。それらをネットワークから隔離し、復帰させる際はデータを消去して初期同期で追加する。最新の optime を持つメンバーを選ぶ。そうしないと、他のメンバーで過半数コミットされていない書き込みがロールバックされる。通常のメンバー変更に force を使用しない。

DBAtlas で開く →

関連項目