sql >> Databasteknik >  >> NoSQL >> MongoDB

Hur man konverterar en MongoDB-replikuppsättning till en fristående server

Ta bort alla sekundära värdar från replikuppsättningen (rs.remove('host:port')), starta om mongo-deamonen utan replSet-parameter (redigerar /etc/mongo.conf) och de sekundära värdarna startar i fristående läge igen.

Den primära värden är knepig, eftersom du inte kan ta bort den från replikuppsättningen med rs.remove. När du bara har den primära noden i replikuppsättningen bör du avsluta mongo-skalet och stoppa mongo. Sedan redigerar du /etc/mongo.conf och tar bort parametern replSet och startar mongo igen. När du väl startar mongo är du redan i fristående läge, men mongoskalet kommer att få ett meddelande som:

2015-07-31T12:02:51.112+0100 [initandlisten] ** VARNING:mongod startade utan --replSet ännu finns 1 dokument i local.system.replset

för att ta bort varningen kan du göra två procedurer:1) Ta bort den lokala db och starta om mongo:

use local
db.dropDatabase();

/etc/init.d/mongod restart

2)Eller om du inte vill vara så radikal kan du göra:

use local
db.system.replset.find()

och det kommer att fråga ett meddelande som:

{ "_id" : "replicaSetName", "version" : 1, "members" : [ { "_id" : 0, "host" : "hostprimary:mongoport" } ] }

då kommer du att radera den med:

db.system.replset.remove({ "_id" : "replicaSetName", "version" : 1, "members" : [ { "_id" : 0, "host" : "hostprimary:mongoport" } ] })

och det kommer förmodligen att fråga:

WriteResult({ "nRemoved" : 1 })

Nu kan du starta om mongon och varningen bör vara borta, och du kommer att ha din mongo i fristående läge utan varningar



  1. Arkitektur för Redis cache &Mongo för uthållighet

  2. Kan mongo överföra arraydata?

  3. Hur kan jag använda "Not Like"-operatorn i MongoDB

  4. Genomsnittligt ett underdokumentfält över dokument i Mongo