Mysql configurar una replicación maestro – esclavo ?
Introduccion
La replicación de MySQL es un proceso que le permite mantener fácilmente múltiples copias de datos de MySQL al copiarlos automáticamente de una base de datos maestra a una esclava. Esto puede ser útil por muchas razones, incluida la preparación de una copia de seguridad de los datos, una forma de analizarla sin utilizar la base de datos principal o simplemente como un medio para escalar.
Este tutorial cubrirá un ejemplo muy simple de replicación de MySQL: un maestro enviará información a un solo esclavo. Para que el proceso funcione, necesitará dos direcciones IP: una del servidor maestro y otra del esclavo.
Este tutorial usará las siguientes direcciones IP:
10.132.152.60 – Base de datos maestra
10.132.130.91 – Base de datos de esclavos
Primer paso: configurar la base de datos maestra
Abra el archivo de configuración de mysql en el servidor maestro.
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
Una vez dentro de ese archivo, debemos hacer algunos cambios.
El primer paso es encontrar la sección que se ve así, vinculando el servidor al host local:
bind-address = 127.0.0.1
Reemplace la dirección IP estándar con la dirección IP del servidor.
bind-address = 10.132.152.60
Buscamos y descomentamos estas lineas
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
binlog_do_db = wordpress
Después de realizar todos los cambios, continúe y guarde y salga del archivo de configuración.
Reiniciar MySQL.
sudo service mysql restart
Abre el shell MySQL.
mysql -u root -p
Necesitamos otorgar privilegios al esclavo. Puede usar esta línea para nombrar a su esclavo y configurar su contraseña. El comando debe estar en este formato:
GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'%' IDENTIFIED BY 'password';
Ir a la par de:
FLUSH PRIVILEGES;
La siguiente parte es un poco quisquillosa. Para llevar a cabo la tarea, deberá abrir una nueva ventana o pestaña además de la que ya está usando unos pasos más adelante.
En su pestaña actual, cambie a “wordpress”.
USE wordpress;
A continuación, bloquee la base de datos para evitar nuevos cambios:
FLUSH TABLES WITH READ LOCK;
Luego escribe:
SHOW MASTER STATUS;
Verá una tabla que debería verse más o menos así:
mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 | 107 | wordpress | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
Esta es la posición desde la cual la base de datos esclava comenzará a replicarse. Registre estos números, serán útiles más tarde.
Si realiza nuevos cambios en la misma ventana, la base de datos se desbloqueará automáticamente. Por esta razón, debe abrir la nueva pestaña o ventana y continuar con los próximos pasos allí.
Continuando con la base de datos aún bloqueada, exporte su base de datos usando mysqldump en la nueva ventana (asegúrese de estar escribiendo este comando en el shell bash, no en MySQL).
mysqldump -u root -p --opt wordpress> wordpress.sql
Ahora, volviendo a su ventana original, desbloquee las bases de datos (haciéndolas escribibles de nuevo). Termine saliendo del caparazón.
UNLOCK TABLES;
QUIT;
Ahora ya ha terminado con la configuración de la base de datos maestra.
Paso dos: configure la base de datos esclava
Una vez que haya configurado la base de datos maestra. Puede dejarlo de lado por un tiempo, y ahora comenzaremos a configurar la base de datos esclava.
Inicie sesión en su servidor esclavo, abra el shell MySQL y cree la nueva base de datos que va a replicar del maestro (luego salga):
CREATE DATABASE wordpress;
EXIT;
Importe la base de datos que exportó previamente de la base de datos maestra.
mysql -u root -p wordpress </path/to/wordpress.sql
Ahora tenemos que configurar la configuración del esclavo de la misma manera que lo hicimos con el maestro:
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
Tenemos que asegurarnos de tener algunas cosas configuradas en esta configuración. El primero es la identificación del servidor. Este número, como se mencionó antes, debe ser único. Como está configurado en el valor predeterminado (todavía 1), asegúrese de cambiarlo.
server-id = 2
Después de eso, asegúrese de que tenga los siguientes tres criterios debidamente completados:
relay-log = /var/log/mysql/mysql-relay-bin.log
log_bin = /var/log/mysql/mysql-bin.log
binlog_do_db = wordpress
Tendrá que agregar en la línea de registro de retransmisión: no está allí por defecto. Una vez que haya realizado todos los cambios necesarios, guarde y salga del archivo de configuración del esclavo.
Reinicia MySQL una vez más:
sudo service mysql restart
El siguiente paso es habilitar la replicación desde el shell de MySQL.
Abra el shell MySQL una vez más e ingrese los siguientes detalles, reemplazando los valores para que coincidan con su información:
CHANGE MASTER TO MASTER_HOST='10.132.152.60',MASTER_USER='slave_user', MASTER_PASSWORD='password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS= 107;
Este comando realiza varias cosas al mismo tiempo:
1.- Designa el servidor actual como el esclavo de nuestro servidor maestro.
2.- Proporciona al servidor las credenciales de inicio de sesión correctas
3.- Por último, le permite al servidor esclavo saber dónde comenzar a replicar; el archivo de registro maestro y la posición del registro provienen de los números que escribimos anteriormente.
Con eso, ha configurado un servidor maestro y esclavo.
Activar el servidor esclavo:
START SLAVE;
Puede ver los detalles de la replicación esclava escribiendo este comando. El G reorganiza el texto para hacerlo más legible.
SHOW SLAVE STATUSG
Si hay un problema al conectar, puede intentar iniciar el esclavo con un comando para omitirlo:
SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;START SLAVE;