2013-06-04 11 views
16

rozważenia, mam 4 komplety replikacji i config wygląda następująco:Jak przekonwertować replikę MongoDB ustawiony na samodzielny serwer

{ 
"_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"} 
] 
} 

jestem w stanie połączyć się do wszystkich zestawów z mongo --port <port>

Istnieją dokumenty umożliwiające uzyskanie informacji na temat Convert a Standalone to a Replica Set, ale czy ktoś może mi powiedzieć, jak przekonwertować z powrotem do wersji samodzielnej z zestawu replik?

Odpowiedz

12

Wystarczy usunąć hosta z zestawu replik (rs.remove('host:port')), ponownie uruchomić go bez parametru replSet i ponownie go odłączyć.

+3

Jeśli nie chcesz, aby trzymać swoje informacje można również usunąć 'local' db – Sammaye

+1

nie działa: ' '' bippo: PRIMARY> rs.remove ("rudi.dev: 27017"); { "Komunikat o błędzie": "wyjątek: nie można odnaleźć siebie w nowym replset config", "code": 13433, "ok": 0 } bippo: primary> rs.config() { " _id”: "bippo" "version": 1, "członków": [ { "_id": 0, "host" "rudi.dev:27017" } ] } ' ' –

+0

Napisz pełny dokument dla konwersji ReplicaSet na pojedynczy serwer [tecnicume] (http://tecnicume.blogspot.it/2016/02/mongodb-migrazione-da-replicaset.html). – Furetto

25

Usuń wszystkie hosty pomocnicze z zestawu replik (rs.remove ("host: port")), zrestartuj demon mongo bez parametru replSet (edycja /etc/mongo.conf), a hosty dodatkowe uruchomią się ponownie w trybie autonomicznym.

Host główny jest trudny, ponieważ nie można go usunąć z zestawu replik za pomocą polecenia rs.remove. Gdy masz już tylko węzeł główny w zestawie replik, powinieneś wyjść z powłoki mongo i zatrzymać mongo. Następnie edytuj plik /etc/mongo.conf i usuń parametr replSet i ponownie uruchom mongo. Po uruchomieniu Mongo jesteś już w trybie autonomicznym, ale powłoka Mongo poprosi wiadomość jak:

2015-07-31T12: 02: 51,112 + 0100 [initandlisten] ** UWAGA: mongod zaczął bez - -replSet jeszcze 1 dokumenty są obecne w local.system.replset

aby usunąć ostrzeżenie można zrobić 2 procedury: 1) droping lokalnym db i ponowne Mongo:

use local 
db.dropDatabase(); 

/etc/init.d/mongod restart 

2) lub jeśli nie chcesz być tak radykalne, można zrobić:

use local 
db.system.replset.find() 

i poprosi komunikat:

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

wtedy go usunąć przy użyciu:

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

i będzie prawdopodobnie szybka :

WriteResult({ "nRemoved" : 1 }) 

Teraz możesz restart Mongo i ostrzeżenia powinny być usunięte, a będziesz miał swój Mongo w trybie autonomicznym bez ostrzeżeń

+0

Musiałem uruchomić 'rs.initiate()', aby ponownie utworzyć klaster replikacji i uczynić węzeł PRIMARY. Dzięki! – Tristan

+2

'' 'nie autoryzowany lokalnie do wykonania polecenia {delete: \" system.replset \ ", usuwa: [{q: {_id: \" rs0 \ "}, limit: 0.0}], uporządkowano: true}' ' 'przy robieniu usunięcia. Jaka rola jest potrzebna, aby móc usunąć z '' 'system.replset'''? –

1

1) Idź do Mongo powłokę na serwerach pomocniczych

2) Zatrzymać serwery pomocnicze przy użyciu poniżej polecenia:

use admin 
    db.shutdownServer() 

Twoja główna wola automatycznie stanie się samodzielnym serwerem.

Aby uzyskać więcej informacji, proszę sprawdzić poniższy link: http://www.learnit.net.in/2016/03/stopping-and-starting-mongodb.html

+0

to zadziałało dla mnie dzięki dużo ....... –

Powiązane problemy