thumb

とあるMongoDBをレプリカセットメンバーから外し、残っているデータをそのまま活用したい時。





楽天市場でデジタル機器も見つかる♪(PR)

そろそろふるさと納税で税金対策の時期ですよ♪(PR)



※自己責任で

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の削除も行われているので、簡単にメンバーに戻すことができる

めでたしめでたし

おすすめの記事