Tutorial Replicación de Servidores MySQL (Master-Slave)

Nota: Este tutorial parte desde la base de que ya los dos servidores tienes MySQL instalados.

Tenemos dos (2) servidores:
Master: 192.168.0.91
Slave: 192.168.0.71

Paso 1:
En el servidor master editar el archivo de configuración de MySQL 
nano /etc/mysql/my.cnf y agregar esto:

server-id=1
log-bin=mysql-bin
innodb_flush_log_at_trx_commit=1
sync_binlog=1

Paso 2:
Reiniciamos el servidor Master:

service mysql restart

Paso 3:
Creamos el usuario en el Master que servirá para replicación con el servidor esclavo:

CREATE USER 'esclavo'@'192.168.0.71' IDENTIFIED BY 'esclavo';
GRANT REPLICATION SLAVE ON *.* TO 'esclavo'@'192.168.0.71' IDENTIFIED BY 'replpassword';

Nota: este paso lo puedes ejecutar desde la consola de MySQL o desde algún gestor de MySQL siempre y cuando se tenga un usuario con privilegios suficientes.

Paso 4:
Para prevenir la escritura a base de datos en el Master ejecutar esto:

FLUSH TABLES WITH READ LOCK;

Paso 5:
Hacer un backup de todas las  bases de datos del master, para poder luego restaurarlas en el esclavo, esto lo puedes hacer utilizando MySQL Administrator, mysqldump, o cualquier otro programa que te genere un backup.

Paso 6:
Ejecutar el siguiente comando y anotar lo que muestre 'file' y 'position' que será usado en el servidor esclavo más tarde.

SHOW MASTER STATUS;



Paso 7:
En el master correr el siguiente comando para desbloquear las tablas:

UNLOCK TABLES;


Desde aquí en Adelante comenzamos la configuración en el servidor esclavo

Paso 8:
Editar el archivo de configuración de MySQL
nano /etc/mysql/my.cnf y agregar esto:

server-id=2

Paso 9:
Ejecutar este comando en el servidor esclavo:

CHANGE MASTER TO
MASTER_HOST='192.168.0.91',
MASTER_USER='esclavo',
MASTER_PASSWORD='replpassword',
MASTER_PORT=3306,
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=631,
MASTER_CONNECT_RETRY=10;

En MASTER_LOG_FILE y en MASTER_LOG_POS cambiar los valores por los que obtuvieron en el Paso 6.

Paso 10:

En el Server Slave restaurar el backup de la base de datos original, esto lo pueden restaurar desde MySQL Administrator o desde lo que prefieran.

Paso 11:

En el Server Esclavo ejecutar esto para iniciar el servicio:

START SLAVE;


Finalizada la configuración!!!!


Ya con estos pasos anteriores cualquier modificación que hagan en el Server Master, se verá reflejada en el Server Slave.



Notas:
Comprobar que la Replicación esté Funcionando:

Para comprobar que está funcionando la replicación, ejecutar este comando en el Server Slave:

show slave status;

Allí pueden ver que los campos que están al final, se tratan sobre errores y si da alguno se mostrara la descripción.

Replicar solo Algunas Base de Datos no todas:

En el Server Slave en la ruta de configuración (/etc/mysql/my.cnf) debes agregar esto adaptándolo a sus necesidades, ejemplo:

replicate-wild-do-table=basededatos_nombre.%

Si deseas más de una base de datos solo debes duplicar esa línea e indicar el nombre de la base de datos ejemplo:

replicate-wild-do-table=estado.%
replicate-wild-do-table=ciudad.%
replicate-wild-do-table=parroquia.%

En el  ejemplo anterior solo estaremos replicando esas tres bases de datos,  los otros esquemas que se encuentren en el Server Master no serán replicados.


Algunos Errores Posibles:

Si al consultar show slave status; sale el siguiente error:

sql error: binary logging not possible. message: transaction level read-committed in inndb is not safe for binlog mode 'statement'

Ejecuta el Paso 6 y luego el Paso 9 nuevamente.


Comentarios

Entradas populares de este blog

VNC 5.1.0+SERIAL [FULL][MEGA]