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
Publicar un comentario