Historias
Slashboxes
Comentarios
 

Replicación maestro-maestro con MySQL 5 en Debian

Entrada escrita por Robbie y editada por Yonderboy el 03 de Junio 2008, 07:31h   Printer-friendly   Email story
desde el dept. bases-de-datos
En documentroot leo acerca de cómo configurar una replicación master-master en MySQL 5, nada difícil y explicado paso a paso. Lo he probado y ha funcionado sin problemas. Claro que para más de dos máquinas personalmente optaría por un clúster en PostgreSQL.

Nota del editor: Se trata de una traducción de un artículo de Falko Timme publicado hace algunos meses en HowtoForge.

Este hilo ha sido archivado. No pueden publicarse nuevos comentarios.
Mostrar opciones Umbral:
Y recuerda: Los comentarios que siguen pertenecen a las personas que los han enviado. No somos responsables de los mismos.
  • por desas3 (26637) el Martes, 03 Junio de 2008, 08:02h (#1049801)
    ( Última bitácora: Viernes, 29 Octubre de 2010, 09:43h )
    Casualmente, hace un par de semanas tuve que realizar esta configuración y aprendí bastante del tema (y de cómo no debes replicar una base de datos en modo "multi-master" sin leerte de arriba a abajo toda la documentación).

    He leído el artículo sólo por encima, pero es algo impreciso. Hace cosas que no son necesarias, como:
    1. Mantener el LOCK TABLES WITH FLUSH READ hasta restaurar el volcado de la primera base de datos en la otra instancia. El bloqueo de las tablas sólo es necesario hasta haber hecho el volcado y copiado los datos de replicación del maestro (binary log file & position). Luego puedes liberar las tablas sin problemas. Esto puede no ser muy útil durante la iniciación de la base de datos, pero en caso de que una réplica muera es el mejor sistema para reinstalarla afectando lo mínimo a los usuarios de la otra.
    2. Escribe los datos de replicación en el fichero my.cnf: esto lo hace, seguramente, porque lo leyó en el Howto. Yo lo hice la primera vez también, pero no es necesario y además te obliga a cambiar el fichero si quieres iniciar una instancia sin que haya replicación. Lo mejor es usar el comando CHANGE MASTER TO para establecer todos los parámetros necesarios. Si luego queremos detener completamente la replicación (por ejemplo, porque la otra instancia ha muerto), basta ejecutar CHANGE MASTER TO ''; Como nota curiosa, si hacéis esto acordaos de borrar (shred, preferiblemente) el fichero ~/.mysql_history, ya que la contraseña utilizada para la replicación quedará almacenada en el mismo.
    3. Permite acceso de replicación al usuario desde cualquier host: el principio de mínimo privilegio recomienda que sólo se permita desde los equipos necesarios (es decir, las dos o más instancias). Para ello, ejecutar un comando GRANT replication slave on 'rep_user'@'host_n'; por cada instancia mysql. Como al principio restauras un volcado de la primera instancia en las demas, puedes ejecutar todos los comandos GRANT en la primera instancia.


    Por otra parte el artículo no trata otros temas como los problemas que pueden surgir con la replicación (especialmente interesante es el caso en el que cambias "a mano" la tabla mysql.user, sin usar el comando GRANT, puesto que para que los privilegios se repliquen tienes que ejecutar un FLUSH PRIVILEGES en cada una de las otras instancias y, si no lo sabes, encontrar la causa de los errores de conexión que aparecerán es difícil), como hacer backups de esta arquitectura, como restaurar una réplica si el sistema muere, cómo añadir nuevas réplicas, etc.

    Ah, si alguien piensa utilizar esto para algo serio, es interesante que active la opción sync_binlong=1 en /etc/my.cnf, como explica el manual de MySQL 5.0 [mysql.com]

    Yo utilicé el artículo Adevanced MySQL Replication Techniques" [onlamp.com] que es algo más completo (aunque también hace la chapucilla de escribir los datos de replicación en el my.cnf) y directamente el manual de MySQL (una vez conoces el truco del auto_increment_{increment,offset} el manual es la mejor fuente).
    --
    Este comentario ha sido escrito en Google Chrome dev Build para Linux a partir de electrones 100% reciclados.