Archive of June 2010


Sat 12 Jun

Replicación maestro-esclavo en MongoDB

Esta es una entrada cortita, gracias en parte a la extrema facilidad de administrador de nuestra base de datos NoSQL favorita. En esta ocasión vamos a ver como crear una replicación dentre dos sistemas MongoDB, en arquitectura Maestro-Esclavo. Como pasa bastante habitualmente, la arquitectura Maestro-Maestro, a pesar de ser posible, no la recomiendan. Esta, al igual que en MySQL, se basa en el truco de hacer que un esclavo sea al mismo tiempo maestro.

Yo voy a mostrar la opción recomendada, Maestro-Esclavo.

Para ello, lo primero es instalar dos MongoDB en Debian Lenny.

El primero se llamará Maestro con IP 192.168.1.105 y el segundo Esclavo con IP 192.168.1.101.

Arrancamos el maestro indicando que actuará con ese Rol:

debian1:/usr/local/mongodb# bin/mongod --master
Sat Jun 12 16:41:23 Mongo DB : starting : pid = 2158 port = 27017 
dbpath = /data/db/ master = 1 slave = 0  64-bit 
Sat Jun 12 16:41:23 db version v1.4.3, pdfile version 4.5
Sat Jun 12 16:41:23 git version: 47ffbdfd53f46edeb6ff54bbb734783db7abc8ca
Sat Jun 12 16:41:23 sys info: Linux domU-12-31-39-06-79-A1 
2.6.21.7-2.ec2.v1.2.fc8xen #1 SMP Fri Nov 20 17:48:28 EST 2009 x86_64 BOOST_LIB_VERSION=1_41
Sat Jun 12 16:41:23 waiting for connections on port 27017
Sat Jun 12 16:41:23 ******
Sat Jun 12 16:41:23 creating replication oplog of size: 944MB (use --oplogSize to change)
Sat Jun 12 16:41:23 ******
Sat Jun 12 16:41:23 allocating new datafile /data/db/local.ns, filling with zeroes...
Sat Jun 12 16:41:23 done allocating datafile /data/db/local.ns, size: 16MB, took 0.026 secs
Sat Jun 12 16:41:23 allocating new datafile /data/db/local.0, filling with zeroes...
Sat Jun 12 16:41:23 done allocating datafile /data/db/local.0, size: 64MB, took 0.185 secs
Sat Jun 12 16:41:23 allocating new datafile /data/db/local.1, filling with zeroes...

Una vez hecho, arrancamos el Esclavo indicándole por parámetro donde está su Maestro:

debian2:/usr/local/mongodb/bin# ./mongod --slave --source 192.168.1.105:27017
Sat Jun 12 16:42:03 Mongo DB : starting : pid = 2172 port = 27017 
dbpath = /data/db/ master = 0 slave = 1  64-bit 
Sat Jun 12 16:42:03 db version v1.4.3, pdfile version 4.5
Sat Jun 12 16:42:03 git version: 47ffbdfd53f46edeb6ff54bbb734783db7abc8ca
Sat Jun 12 16:42:03 sys info: Linux domU-12-31-39-06-79-A1 
2.6.21.7-2.ec2.v1.2.fc8xen #1 SMP Fri Nov 20 17:48:28 EST 2009 x86_64 BOOST_LIB_VERSION=1_41
Sat Jun 12 16:42:03 waiting for connections on port 27017
Sat Jun 12 16:42:03 web admin interface listening on port 28017
Sat Jun 12 16:42:04 allocating new datafile /data/db/local.ns, filling with zeroes...
Sat Jun 12 16:42:04 done allocating datafile /data/db/local.ns, size: 16MB, took 0.028 secs
Sat Jun 12 16:42:04 allocating new datafile /data/db/local.0, filling with zeroes...
Sat Jun 12 16:42:05 done allocating datafile /data/db/local.0, size: 64MB, took 0.185 secs
Sat Jun 12 16:42:05 building new index on { _id: 1 } for local.sources
Sat Jun 12 16:42:05 Buildindex local.sources idxNo:0 { name: "_id_", ns: "local.sources", key: { _id: 1 } }
Sat Jun 12 16:42:05 done for 0 records 0secs
Sat Jun 12 16:42:05 repl: from host:192.168.1.105:27017
Sat Jun 12 16:42:05 repl:   applied 1 operations
Sat Jun 12 16:42:05 repl:  end sync_pullOpLog syncedTo: Sat Jun 12 16:42:00 2010 4c139cb8:1

Ya tenemos las dos bases de datos en marcha:

Creamos una nueva base de datos llamada test y añadimos una colección:

\> use test
switched to db test
\> a = { nombre : "Miguel Angel", apellido : "Nieto" }
{ "nombre" : "Miguel Angel", "apellido" : "Nieto" }
\> db.gente.save(a);

Comprobamos que se ha añadido en Maestro:

Comprobamos que se ha añadido en Esclavo:

Y lo buscamos en el Esclavo:

Más facil y rápido imposible :)


Fri 11 Jun

Finalmente no me certifico en MySQL Cluster

Realmente no es porque yo no quiera, que en realidad tengo muchas ganas, si no que el pésimo servicio de atención al cliente de Oracle me lo impide por su completa inutilidad operativa. Llevo meses esperando que hagan algo que a priori es sencillo, comprobar mis certificados en PearsonVUE para permitirme sacar la nueva certificación en Prometric. Algo tan sencillo como eso, más aún siendo Oracle cliente también de PearsonVUE, se ha convertido en una hazaña imposible.

Desde la última vez que me pidieron algunos datos y documentos desde "suncert_ww@oracle.com" no he vuelto a saber de ellos. Y cuando escribo ya no me llega ni el mensaje de respuesta automática. Por lo tanto, ¿que puedo pensar de esto? O que estoy filtrado de por vida o que son unos completos inútiles. Desde aquí lanzo unas preguntas:

  • ¿Si tuviese una cuenta en Metalink u Oracle Support me harían más caso?
  • ¿Y Si estuviese interesado en certificarme en Oracle?

Estas pidiendo ayuda al servicio de soporte para poder certificarte y te sientes como si estuvieras mendigando.

Si alguien ha tenido un problema similar y ha logrado solucionarlo, ¡que se comunique conmigo para saber como! Contacto