スタンドアローンのサーバをレプリカセットに登録する方法はドキュメントに書いてあったんですが、その逆のレプリカセットの設定を削除する方法が載っていなかったので、ここにまとめておこうと思います。
mongod.conf からレプリカセットの設定を削除
レプリカセットを構築する時に書いた replication.replSetName
の項目を削除します。また、もし net.bindIp
をフルオープンにしていた場合(本当はちゃんと制限した方がよいです)、その設定も元に戻しましょう。コメントアウトしてる場合もあると思うので、その場合はコメントアウトを外しましょう。
$ sudo vim /etc/mongod.conf
net:
# bindIp: 127.0.0.1 # Listen to local interface only, comment to listen on all interfaces.
replication:
replSetName: "hoge"
ここで sudo service mongod restart
をして mongo
を実行すると以下のような警告が出ます。
** WARNING: mongod started without --replSet yet 1 documents are present in local.system.replset
** Restart with --replSet unless you are doing maintenance and no other clients are connected.
** The TTL collection monitor will not start because of this.
これは local
というデータベースの中にレプリカセットの設定が残っているのが原因です。なので、 local
をふっとばしましょう。
local を db.dropDatabase()
> use local;
> db.dropDatabase();
{ "dropped" : "local", "ok" : 1 }
これで OK です(こわ)。
mongod を再起動
最後に mongod を再起動して終了です。
$ sudo service mongod restart
Stopping mongod: [ OK ]
Starting mongod: [ OK ]
再起動を含むので本番環境でこれをやるのは避けたいところです。メンテモードに移行してから実行した方が安全ですね。不要になった SECONDARY や ARBITER のサーバを落としておくのも忘れないようにしたいです。
参考文献