2011-10-31 18 views
6

Mam replikę mongody na ubuntu .. W zestawie replik, hosty są zdefiniowane jako localhost. Możesz zobaczyć ;mongodb replicaset nazwa błędu zmiany nazwy

{ 
    "_id" : "myrep", 
    "version" : 4, 
    "members" : [ 
      { 
        "_id" : 0, 
        "host" : "localhost:27017" 
      }, 
      { 
        "_id" : 2, 
        "host" : "localhost:27018" 
      }, 
      { 
        "_id" : 1, 
        "host" : "localhost:27019", 
        "priority" : 0 
      } 
    ] 

}

Chcę zmienić adresy hosta z prawdziwego IP serwera. Ale gdy uruchamiam rs.reconfig, otrzymuję błąd:

{ 
    "assertion" : "hosts cannot switch between localhost and hostname", 
    "assertionCode" : 13645, 
    "errmsg" : "db assertion failure", 
    "ok" : 0 

}

jaki sposób można go rozwiązać? Dziękuję.

Odpowiedz

1

Jedynym sposobem na zmianę nazw hostów jest odtworzenie zestawu replik. Aby zrobić to dobrze, db katalogi muszą być oczyszczone. Następnie, po uruchomieniu wszystkich nowych serwerów z trybem replikacji, utworzono nowy zestaw z nowymi nazwami hosta.

19

Jest czystszy sposób, aby to zrobić:

use local 
cfg = db.system.replset.findOne({_id:"replicaSetName"}) 
cfg.members[0].host="newHost:27017" 
db.system.replset.update({_id:"replicaSetName"},cfg) 

następnie ponownie Mongo

+1

To działa - należy ponownie uruchomić mongod potem, aby upewnić się, że nowe ustawienie gospodarz podniósł. Po pomyślnym zakończeniu, "rs.status()" zwróci poprawną nazwę hosta dla każdego członka. – seanhodges

+2

To obejście błędu zmieniającego hosty, ale znalazłem też musiałem wykonać cfg = rs.conf(); rs.reconfig (cfg); po ponownym uruchomieniu, aby to się udało. – asparagino

Powiązane problemy