とあるMongoDBをレプリカセットメンバーから外し、残っているデータをそのまま活用したい時。
※自己責任で
MongoDBのレプリカセット「A(PRIMARY)」「B」「C」「D」を例に取る。
【やりたいこと】一旦Dをremoveし、新たなレプリカセットを構築。
# Aのmongoで実施
rs.conf()
remove("Dのhost:Dのport")
その後、D持ってるデータを引き継いで別の新規レプリカセットを構築する際、エラーが発生することがある。
どうすれば良いか。D側のlocal DBを削除する(最終手段)
rm -rf [フルパス]/mongo/local/*
その後、rs.statusすると「Not Initialize」(うる覚え)と出るのでレプリカセット構築可能の合図。
もしABCのMongoDBのレプリカセットメンバーに改めて戻したい場合は
mongoストップ⇒Dのmongo配下を全削除⇒再起動⇒A(PRIMARY)側でrs.add("Dのhost:Dのport")で追加すれば完了。実に簡単。
※ここではlocalの削除も行われているので、簡単にメンバーに戻すことができる
めでたしめでたし