¿Es posible configurar MySql Replication para que un esclavo escuche a dos maestros diferentes?
fuente
¿Es posible configurar MySql Replication para que un esclavo escuche a dos maestros diferentes?
Por diseño, un proceso mysqld no puede escuchar simultáneamente dos Maestros diferentes.
El comando CAMBIAR MAESTRO A solo le permite configurar un Maestro como fuente para leer.
Para emular esto, tendrías que alternar entre los dos Maestros mediante programación. Cómo haces eso ?
Aquí está la idea básica.
Configure la replicación de M1 a S1 y luego M2 a S1 de esta manera
Cada vez que cambie de un maestro a otro, debe registrar dos valores de SHOW SLAVE STATUS\G
Estos dos valores representan la última instrucción SQL que vino del maestro y fue la siguiente en ejecutarse en el esclavo.
Hay una precaución importante: mientras M1 y M2 estén actualizando bases de datos mutuamente excluyentes, este algoritmo debería estar bien.
La solución de Rolando tiene muchas advertencias. El primero es un flujo de réplica necesariamente no se replica mientras que el otro funciona. Esto le dará períodos de tiempo en los que su esclavo no está sincronizado. Ahora debe jugar un acto de equilibrio delicado para asegurarse de que cada uno tenga tiempo suficiente para ponerse al día cuando tenga su "turno".
Como se describió, también debe jugar al contador de posiciones de registro para volver a cambiar. Esto realmente parece defectuoso, abriendo la ventana para datos faltantes o inconsistentes o incluso rompiendo la replicación cuando sale mal (ya sea causado por incluso un error 'apagado por uno' en la posición de registro)
Recomendaría simplemente ejecutar múltiples instancias mysql. No hay nada que le impida ejecutar dos o más mysql en la misma máquina. Ambos no pueden operar en el mismo puerto, por supuesto. Sin embargo, realmente no veo esto como un problema, ya que cada cliente y biblioteca le permite especificar algo más que 3306.
Simplemente especifique port = 3307 (o lo que sea en uno de los archivos .cnf).
También tendrá que asegurarse de que los grupos de búferes configurados individualmente y otras configuraciones de memoria no estén en desacuerdo entre sí. Sin embargo, esto es realmente un beneficio, ya que puede ajustar con mayor precisión esa configuración a los requisitos específicos de las bases de datos individuales que se están replicando.
De esta manera, solo tiene dos secuencias de replicación ejecutándose en el mismo servidor; nunca detrás, no se requiere mantenimiento de libros, no se requiere script de "intercambio".
fuente
Fan in (replicación de múltiples fuentes) será compatible con MySQL 5.7.
Un lanzamiento de laboratorios está disponible aquí: http://labs.mysql.com/
fuente
MariaDB que se puede usar como reemplazo in situ para MySql se puede usar. Lo soporta desde la versión 10.2
El problema con el soporte de Mysql 5.7 es la necesidad de GTID, lo que significa que el maestro DEBE también cambiarse, en el caso de MariaDb este no es el caso.
Enlace Ejemplo / Cómo: http://www.skysql.com/blogs/dean-ellis/multi-source-replication-mariadb-100
fuente