4つのレプリケートセットがあり、構成は次のとおりであることを考慮してください。
{
"_id": "rs_0",
"version": 5,
"members" : [
{"_id": 1, "Host": "127.0.0.1:27001"},
{"_id": 2, "Host": "127.0.0.1:27002"},
{"_id": 3, "Host": "127.0.0.1:27003"},
{"_id": 4, "Host": "127.0.0.1:27004"}
]
}
mongo --port <port>
を使用してすべてのセットに接続できます
スタンドアロンをレプリカセットに変換する に関する情報を取得するためのドキュメントがありますが、レプリカセットからスタンドアロンに戻す方法を教えてください。
レプリカセット(rs.remove('Host:port')
)からホストを削除し、replSet
パラメーターなしで再起動すると、再びスタンドアロンになります。
レプリカセット(rs.remove( 'Host:port'))からすべてのセカンダリホストを削除し、replSetパラメーターなしでmongoデーモンを再起動し(/etc/mongo.confを編集)、セカンダリホストがスタンドアロンモードで再び起動します。
プライマリホストは、rs.removeを使用してレプリカセットから削除できないため、扱いにくいものです。レプリカセットにプライマリノードのみを設定したら、mongoシェルを終了してmongoを停止する必要があります。次に、/ etc/mongo.confを編集してreplSetパラメーターを削除し、mongoを再起動します。 mongoを起動すると、すでにスタンドアロンモードになっていますが、mongoシェルは次のようなメッセージを表示します。
2015-07-31T12:02:51.112 + 0100 [initandlisten] **警告:mongodは--replSetなしで開始されましたが、local.system.replsetには1つのドキュメントが存在します
警告を削除するには、2つの手順を実行できます。1)ローカルデータベースを削除し、mongoを再起動します。
use local
db.dropDatabase();
/etc/init.d/mongod restart
2)またはあなたがとても過激になりたくない場合は、次のことができます:
use local
db.system.replset.find()
次のようなメッセージが表示されます。
{ "_id" : "replicaSetName", "version" : 1, "members" : [ { "_id" : 0, "Host" : "hostprimary:mongoport" } ] }
次を使用して消去します。
db.system.replset.remove({ "_id" : "replicaSetName", "version" : 1, "members" : [ { "_id" : 0, "Host" : "hostprimary:mongoport" } ] })
おそらくプロンプトが表示されます:
WriteResult({ "nRemoved" : 1 })
これで、mongoを再起動できます。警告は表示されなくなります。mongoは警告なしでスタンドアロンモードになります。
MongoDB Documentation は、レプリカセットメンバーのメンテナンスを実行するために以下を提案します。これにより、レプリカセットメンバーは、さらなる操作のためにスタンドアロンモードになります。少し変更するだけで、スタンドアロンにできます。
sh.startBalancer(timeout, interval)
を実行しますdb.adminCommand( { removeShard: "mongodb0" } )
rs.stepDown(300)
を実行しますdb.shutdownServer()
を実行してノードを停止しますrs.remove("Host:port")
を実行しますこの後、問題のノードは、スタンドアロンモードで稼働している必要があります。
1)セカンダリサーバーのmongo Shellに移動します
2)以下のコマンドを使用して、セカンダリサーバーを停止します。
use admin
db.shutdownServer()
以下のコマンドを実行した後。プライマリは自動的にスタンドアロンサーバーになります。
詳細については、以下のリンクを確認してください。 http://www.tutespace.com/2016/03/stopping-and-starting-mongodb.html
Ubuntuマシンで
#replication: #replSetName: rs0
use local
db.dropDatabase()