2011-10-31 33 views
6

Tengo un mongodb replicaset en ubuntu .. En el conjunto de réplicas, los hosts se definen como localhost. Puedes ver ;mongodb replicaset host nombre de host cambio error

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

}

quiero cambiar de acogida Direcciones con ip real de servidor. Pero cuando corro rs.reconfig, me sale error:

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

}

cómo puedo solucionarlo? Gracias.

Respuesta

1

La única forma que encontré para cambiar los nombres de host es recrear el conjunto de réplicas. Para hacerlo bien, los directorios de db deben ser limpiados. Luego, se reinició todo servidor con modo de replicación.

19

No es una forma más limpia de hacer esto:

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

continuación, reinicie mongo

+1

Esto funciona - debe reiniciar mongod después, para asegurar la nueva configuración de host es recogido. Cuando tenga éxito, "rs.status()" devolverá el nombre de host correcto para cada miembro. – seanhodges

+2

Esto soluciona el error al cambiar los hosts, pero descubrí que también tenía que ejecutar cfg = rs.conf(); rs.reconfig (cfg); después del reinicio para hacer que esto se pegue. – asparagino

Cuestiones relacionadas