MongoMultiMaster es una herramienta de Python que le permite configurar la replicación multimaestro con MongoDB. & Nbsp; Es enfáticamente no es apoyado por 10gen, los fabricantes de MongoDB.
Funciona mediante la consulta del oplog en un conjunto de réplicas y la aplicación de sus operaciones a otro conjunto de réplicas. Es compatible con la replicación bidireccional mediante el etiquetado de cada documento replicado con su fuente.
Instalación
Para instalar, utilizar pip:
PIP instalar MongoMultiMaster
Configuración MongoDB
MMM necesita acceder al conjunto de réplicas oplog para cada maestro. Esto significa que no funciona con los servidores que están configurados como servidores independientes. Para convertir un servidor autónomo a un conjunto de réplicas singleton, primero tiene que decirle lo que tiene el conjunto está en a la hora del lanzamiento:
& Nbsp; mongod --replSet foo
Entonces, para iniciar el conjunto de réplicas, lo que necesita para ejecutar lo siguiente en la consola mongo:
> Rs.initiate ()
Configuración MongoMultiMaster replicación
Una vez creado el maestro conjunto de réplicas, usted tendrá que indicar a MMM donde los servidores son. Esto se hace a través de un archivo de configuración YAML. Un ejemplo del archivo de configuración con dos servidores se incluye a continuación:
SERVIDOR_A:
& Nbsp; id: '2c88ae84-7cb9-40f7-835d-c05e981f564d'
& Nbsp; uri: 'mongodb: // localhost: 27019'
server_b:
& Nbsp; id: '0d9c284b-b47c-40b5-932c-547b8685edd0'
& Nbsp; uri: 'mongodb: // localhost: 27017'
En primer lugar, vamos a comprobar que no hay configuración y que podemos conectar a todos los servidores en el fichero de configuración:
mmm -c test.yml claro-config
Acerca de despejar config en servidores: ['SERVIDOR_A', 'server_b'], ¿estás seguro? (YN) y
Config Claro para SERVIDOR_A
Config Claro para server_b
& Nbsp; mmm -c test.yml volcar-config
=== === Config del servidor
SERVIDOR_A (2c88ae84-7cb9-40f7-835d-c05e981f564d) => mongodb: // localhost: 27019
server_b (0d9c284b-b47c-40b5-932c-547b8685edd0) => mongodb: // localhost: 27017
=== SERVIDOR_A replicación Config
=== Server_b replicación Config
A continuación, vamos a configurar dos colecciones replicadas:
& Nbsp; mmm -c test.yml réplica --src = SERVIDOR_A / test.foo --dst = server_b / test.foo
& Nbsp; mmm -c test.yml réplica --src = SERVIDOR_A / test.bar --dst = server_b / test.bar
Y confirman que están configurados correctamente:
mmm -c test.yml dump-config
=== === Config del servidor
SERVIDOR_A (2c88ae84-7cb9-40f7-835d-c05e981f564d) => mongodb: // localhost: 27019
server_b (0d9c284b-b47c-40b5-932c-547b8685edd0) => mongodb: // localhost: 27017
=== SERVIDOR_A replicación Config
=== Server_b replicación Config
& Nbsp; - test.foo <= SERVIDOR_A / test.foo
& Nbsp; - test.bar <= SERVIDOR_A / test.bar
Ahora, vamos a hacer la replicación bidireccional:
& Nbsp; mmm -c test.yml réplica --src = server_b / test.foo --dst = SERVIDOR_A / test.foo
& Nbsp; mmm -c test.yml réplica --src = server_b / test.bar --dst = SERVIDOR_A / test.bar
Y verificar que es correcta ...
mmm -c test.yml dump-config
=== === Config del servidor
SERVIDOR_A (2c88ae84-7cb9-40f7-835d-c05e981f564d) => mongodb: // localhost: 27019
server_b (0d9c284b-b47c-40b5-932c-547b8685edd0) => mongodb: // localhost: 27017
=== SERVIDOR_A replicación Config
& Nbsp; - test.foo <= server_b / test.foo
& Nbsp; - test.bar <= server_b / test.bar
=== Server_b replicación Config
& Nbsp; - test.foo <= SERVIDOR_A / test.foo
& Nbsp; - test.bar <= SERVIDOR_A / test.bar
Ahora podemos ejecutar el replicador:
& Nbsp; mmm -c test.yml plazo
Cosas a considerar
- La replicación puede quedarse atrás si usted está escribiendo mucho. Esto no es manejado en absoluto.
- Replicación comienza en el momento en que mmm carrera fue llamado primero. Usted debe ser capaz de detener / iniciar mmm y tenerlo continuar donde lo dejó.
- Los conflictos entre los maestros no se manejan; si usted está escribiendo con el mismo documento por las dos cabezas con frecuencia, puede perder la sincronización.
- Replicación inserta un campo de la contabilidad en cada documento para significar el UUID del servidor que el pasado escribió el documento. Esto expande el tamaño de cada documento ligeramente.
Probablemente hay bordes afilados, otros insectos perdidas, y varias cosas desagradables que le esperan si utiliza MMM en un sistema de producción sin pruebas exhaustivas. . Pero si te gusta correr con tijeras y de otra manera vivir peligrosamente, no dude en probarlo
Requisitos :
- Python
Comentarios que no se encuentran