Skip to content

11 abril, 2012

Configuración de réplicas de MySQL

Es bastante frecuente encontrarse con la necesidad tener, no un único servidor de base datos, sino un conjunto de ellos sincronizados. A menudo esto se hace por razones derendimiento y escalabilidad.

MySQL nos ofrece dos posibilidades para solucionar este problema: la replicación y el cluster.

En la replicación de nodos MySQL existe un servidor maestro y N servidoes esclavos. Los esclavos se sincronizan a partir del maestro. Esta sincronización es en un único sentido: del maestro al esclavo. Es por ello por lo que los esclavos únicamente deben usarse para leer, lo que implica que todas las consultas de escritura, habrá que hacerlas sobre el maestro.

A grandes rasgos se puede decir que en el cluster MySQL existen N servidores MySQL donde todos se tratan de igual a igual. En todos los servidores se puede leer y escribir, ya que el sistema de cluster se encarga de sincronizar todos los nodos. Realmente es más complejo que lo que dicen estas 3 líneas, por lo que si tienes curiosidad puedes leer la documentación oficial acerca del Cluster MySQL.

Mientras que en primer caso no existiría la alta disponibilidad, al menos en lo que a escritura se refiere, ya que la caída del maestro implica que no se pueden ejecutar las consultas de escritura; en el segundo caso la alta disponibilidad sí que existe, ya que ante la caída de un nodo, el resto podría seguir funcionando perfectamente.

Este post se centra en la configuación de réplicas MySQL. Me gustaría probar el cluster porque tiene buena pinta. Si lo hago pondré un post sobre cómo se configura.

Configuración

A continuación se describen los pasos que hay que seguir para configurar una réplica de un servidor MySQL.

1. Crear usuario de replicación en el servidor maestro para poder replicar

mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%.mydomain.com' IDENTIFIED BY 'slavepass';

2. Ajustar la configuración del maestro en el my.cnf

[mysqld]
log-bin=mysql-bin
server-id=1

Para mejorar el rendimiento en innodb, ajustar también en el maestro lo siguiente:

innodb_flush_log_at_trx_commit=1
sync_binlog=1

Reiniciar MySQL.

3. Ajustar la configuración del esclavo en el my.cnf

[mysqld]
server-id=2

Reiniciar MySQL

4. Obtener información de replicación del maestro. (Se utilizará en el paso siguiente)

mysql> show master status;

5. Configurar la conexión con el maestro en el esclavo. Los datos MASTER_LOG_FILE y MASTER_LOG_POS hay que cogerlos del resultado del paso anterior.

mysql> CHANGE MASTER TO MASTER_HOST='master_host_name',
MASTER_USER='replication_user_name',
MASTER_PASSWORD='replication_password',
MASTER_LOG_FILE='recorded_log_file_name',
MASTER_LOG_POS=recorded_log_position;

6. Iniciar la sincronización en el esclavo.

mysql> START SLAVE;

Y listo. En caso de que Hubiera más de un esclavo el proceso es análogo.

Espero que sea de utilidad.

fuente: aqui

Mas información: aqui

Articulos relacionados:

  1. MySQL con Eclipse (y otras bases de datos)

Share your thoughts, post a comment.

(required)
(required)

Note: HTML is allowed. Your email address will never be published.

Subscribe to comments