2012-06-08 17 views
21

Tengo un clúster de mongo 2 nodos funcionando, con esta configuración de conjunto de réplicas.¿Cómo modificar la configuración del conjunto de réplicas?

config = {_id: "repl1", members:[ 
{_id: 0, host: 'localhost:15000'}, 
{_id: 1, host: '192.168.2.100:15000'}] 
} 

Tengo que mover estos dos nodos a servidores nuevos. He copiado todo, desde servidores antiguos a nuevos, pero estoy teniendo problemas al reconfigurar la configuración de réplica debido al cambio de ip en el segundo nodo.

He intentado esto.

config = {_id: "repl1", members:[ 
{_id: 0, host: 'localhost:15000'}, 
{_id: 1, host: '192.168.2.200:15000'}] 
} 
    rs.reconfig(config) 
    { 


"startupStatus" : 1, 
"errmsg" : "loading local.system.replset config (LOADINGCONFIG)", 
"ok" : 0 
} 

Muestra el mensaje anterior, pero el cambio no está sucediendo.

También intenté cambiar el nombre del conjunto de réplicas pero apuntando a los mismos directorios de datos. estoy consiguiendo el error siguiente:

rs.initiate() 
{ 
"errmsg" : "local.oplog.rs is not empty on the initiating member. cannot initiate.", 
"ok" : 0 
} 

¿Cuáles son los pasos correctos para cambiar la IP, pero manteniendo los datos sobre la segunda nodo, o tengo que recrear/RESYNC el segundo nodo?

+5

¿Por qué su conjunto de réplicas tienen sólo dos nodos? Querrá un [mínimo de tres nodos] (http://www.mongodb.org/display/DOCS/Replica+Sets+-+Basics), y siempre un número impar de nodos. –

+0

Acabo de 'db.oplog.rs.drop()' que elimina los datos del conjunto de réplica local del archivo db. Para obtener más información: http: //docs.mongodb.org/manual/reference/local-database/ – JohnAllen

+0

errmsg: "not master" – lazycommit

Respuesta

27

opción de fuerza que puede utilizar cuando la reconfiguración de conjunto de réplicas:

rs.reconfig(config, {force: true}) 

Tenga en cuenta que, como Adán ya se ha sugerido en los comentarios, debe tener al menos 3 nodos: 2 nodos completos y 1 de árbitro (configuración mínima admitida) o 3 nodos completos (configuración mínima recomendada) para que el nodo primario pueda ser elegido.

31

Bueno, tuve el mismo problema.

Tuve que eliminar todas las réplicas y oplog.

use local 
db.dropDatabase() 

reinicie el mongo con el nuevo nombre de conjunto

config = {_id: "repl1", members:[ 
{_id: 0, host: 'localhost:15000'}, 
{_id: 1, host: '192.168.2.100:15000'}] 
} 

rs.initiate(config) 

Espero que esto funcione para usted también

+0

dropDatabase me salvó la vida – kommradHomer

3

me di cuenta que es una entrada antigua, pero descubrí que estaba recibiendo el mismo error exacto cuando trato de cambiar el puerto utilizado por los secundarios en mi conjunto de réplicas.

En mi caso, tuve que detener el secundario cuya configuración estaba cambiando, y lo mencioné en su nueva dirección y puerto ANTES de aplicar la configuración modificada en el principal.

Esto es en la documentación mongo, pero el orden en el que tuve que llevar las cosas de arriba a abajo fue algo que había leído mis-en la primera pasada, por lo que para mayor claridad he repetido que aquí:

  1. Apague el miembro secundario del conjunto de réplicas que está moviendo.
  2. Trae ese secundaria una copia de seguridad en su nueva dirección
  3. realizar el cambio de configuración, como se detalla en el post original por encima de
Cuestiones relacionadas