# Replicación multimaestra

La replicación multimaestra (en inglés: Multi-master replication) es un método de replicación de base de datos donde se habilitan los datos para ser distribuidos en un grupo de computadoras, y actualizado por cualquier miembro del grupo. El sistema de replicación multimaestra es responsable de propagar la modificación de los datos a los diferentes miembros, estos datos pueden ser contrastados con una replicación maestra-esclava, en donde un miembro del grupo está asignado como el "maestro" para tomar las piezas de datos y es el único del nodo habilitado a modificarlos. Otros miembros solo pueden modificar los datos comunicándose con el maestro del nodo. Habilitando solo un maestro se facilita la consistencia en los miembros del grupo, pero es de reducida flexibilidad frente a la replicación multimaestra.

## Ventajas

* Si un maestro falla, otros maestros continuaran actualizando la base de datos
* Los maestros pueden estar en diferentes lugares físicos. Ej: a través de una red distribuida

## Desventajas

* Muchos sistemas de replicación multimaestra son pobremente consistentes. Ej: retardo y asincronía, violación de propiedades ACID
* Varios de los sistemas de replicación son muy complejos y producen latencia en la comunicación
* Problemas como resolución de conflictos puede volverse difícil en tanto incrementa el número de nodos lo cual aumenta las latencias

## Métodos
### Basado en Log

Un log de transacción de base de datos esta referenciada a capturar cambios hechos en las bases de datos. Para la captura de transacciones basadas en log, los cambios de las bases de datos solo pueden ser distribuidas asíncronamente.

### Basado en Trigger

Los Triggers en el suscriptor capturan cambios hechos para a la base de datos y los envían al publicador. Con captura de transacción basada en trigger, la base de datos puede ser distribuida tanto síncronamente como asíncronamente.

## Implementaciones

La mayoría de los servidores de directorio basados en LDAP implementan replicación multimaestra.

### OpenLDAP

El más usado servidor de código abierto de LDAP implementa replicación multimaestra desde la versión 2.4 (October 2007)

### MySQL

MariaDB y MySQL tienen soporte de replicación y posibilita el esquema de replicación multimaestra desde la versión 3.23. El MySQL Cluster soporta detección y resolución de conflictos entre múltiples maestros desde la versión 6.3.

### PostgreSQL

PostgreSQL, desde la versión 9.0, incluye replicación binaria interna (built-in binary replication), basada en intercambio de cambios a todos los bloques de bases de datos para otros sistemas asíncronos después del commit. PostgreSQL también habilitara ejecuciones de queries de solo lectura para las réplicas esclavas. esto permitirá dividir el tráfico de lectura sobre múltiples nodos eficientemente.
PostgreSQL ofrecerá múltiples soluciones para replicación multi-maestra, incluyendo soluciones basadas en commit de dos faces. Las herramientas Bucardo, rubyrep, PgPool y PgPool-II, PgCluster y Sequoia como algunas otras soluciones propietarias. Otra promesa es la esperada implementación replicación sincrónica con Postgres-R y Postgres-XC que están en desarrollo.

### Ingres

Con el Ingres Replicator, los objetos que se actualizan en un servidor Ingres pueden ser replicador en otros servidores locales o remotos a través de replicación multi-maestra. Si uno de los servidores falla, la conexión del cliente puede ser redirigida a otro servidor. Esto no es requerido por todos los servidores Ingres en un ambiente de replicación en cada uno de los otros porque esta nube causa excesivo tráfico de red en las implementaciones. Por el contrario, Ingres Replicator provee de un elegante y sofisticado diseño que permite que intercambiar los datos entre servidores indicados ordenadamente reduciendo así el tráfico de red. Esto permite que alguno funcione como servidor contra fallas mientras los demás obtienen los nuevos datos, que es reforzado con un protocolo de commit en dos faces asegurando así la correcta transacción durante al replicación. Ingres Replicator además es capaz de operar con soluciones RDBMSs de diferentes proveedores.