Los pasos para configurar la replicación de MySQL no eran muy complicados, ¿recuerdas Configurar replicación en MySQL?

Ahora si quisieramos que la replicación se haga en varios servidores. Básicamente la historia es la misma en cuanto a la creación de usuarios y los seteos para el log binario.

¿Qué cambia? ¿Que debo agregar? ¿Que recaudos debo tomar?

Vayamos por parte:

  • ¿Que cambia? nada, simplemente tendremos más archivos a modificar (/etc/my.cnf)
  • ¿Que debo agregar? además de los seteos clásicos con el host, usuario y contraseña del "master", agregaremos algunas opciones para tomar ciertos recaudos
  • ¿Que recaudos debo tomar? lo principal viene dado por los campos auto incrementales, donde se recomienda modificar las opciones de desplazamiento (auto-increment-increment) y valor de los autoincrementales (auto-increment-offset). Finalmente, también es fundamental seter en 0 la variable replicate-same-server-id para evitar loops infinitos.

Asumiendo que tenemos resuelto el tema de los usuarios y configurados los logs binarios, esto es lo que deberiamos hacer para configurar la replicación nativa en un total de cuatro servidores:

replicacion

  • Servidor 1
    • Modificar el archivo /etc/my.cnf
[...]
[mysqld]
server-id = 1
replicate-same-server-id = 0
auto-increment-increment = 4
auto-increment-offset = 1

master-host = 192.168.0.4
master-user = usuario_slave_para_s1
master-password = password_usuario_slave_para_s1
master-connect-retry = 60
replicate-do-db = example
[...]

  • Reiniciar el servidor

En Linux:/etc/init.d/mysql restart

  • Servidor 2
    • Modificar el archivo /etc/my.cnf
[...]
[mysqld]
server-id = 2
replicate-same-server-id = 0
auto-increment-increment = 4
auto-increment-offset = 2

master-host = 192.168.0.1
master-user = usuario_slave_para_s2
master-password = password_usuario_slave_para_s2
master-connect-retry = 60
replicate-do-db = example
[...]

  • Reiniciar el servidor

En Linux:/etc/init.d/mysql restart

  • Servidor 3
    • Modificar el archivo /etc/my.cnf
[...]
[mysqld]
server-id = 3
replicate-same-server-id = 0
auto-increment-increment = 4
auto-increment-offset = 3

master-host = 192.168.0.2
master-user = usuario_slave_para_s3
master-password = password_usuario_slave_para_s3
master-connect-retry = 60
replicate-do-db = example
[...]

  • Reiniciar el servidor

En Linux:/etc/init.d/mysql restart

  • Servidor 4

    • Modificar el archivo /etc/my.cnf
[...]
[mysqld]
server-id = 4
replicate-same-server-id = 0
auto-increment-increment = 4
auto-increment-offset = 4

master-host = 192.168.0.3
master-user = usuario_slave_para_s4
master-password = password_usuario_slave_para_s4
master-connect-retry = 60
replicate-do-db = example
[...]

  • Reiniciar el servidor

En Linux:/etc/init.d/mysql restart

Omitiremos el paso de igualar las bases de datos, pues daremos por supuesto que se encuentran igualadas o bien que se trata de una instalación de cero.

Vía: HowToForge

Más información en ONLamp.com