Búsqueda de sitios web

Cómo configurar la replicación maestro-esclavo de MySQL en Ubuntu 18.04


La replicación maestro-esclavo MySQL es un procedimiento que permite replicar o copiar archivos de bases de datos en uno o más nodos de una red. Esta configuración proporciona redundancia y tolerancia a fallas de modo que, en caso de una falla en el nodo maestro, las bases de datos aún se pueden recuperar en el nodo esclavo. Esto les da a los usuarios la tranquilidad de saber que no todo se perderá en ningún caso, ya que aún se puede recuperar una réplica de las bases de datos desde un servidor diferente.

En esta guía, aprenderá cómo realizar una replicación maestro-esclavo de una base de datos MySQL en un sistema Ubuntu 18.04.

Requisitos previos

En la configuración, tendremos dos servidores ejecutando Ubuntu 18.04 con las siguientes direcciones IP.

Master server: 10.128.0.28
Slave server: 10.128.0.29

Profundicemos ahora y veamos cómo podemos configurar la configuración de replicación maestro-esclavo en Ubuntu.

Paso 1: Instale MySQL en los nodos maestro y esclavo

Los repositorios de Ubuntu contienen la versión 5.7 de MySQL. Para aprovechar las funciones nuevas y evitar posibles problemas, debe instalar la última versión de MySQL. Pero primero, actualicemos los dos nodos usando el siguiente comando apto.

sudo apt update

Para instalar MySQL en ambos nodos, ejecute el comando.

sudo apt install mysql-server mysql-client

A continuación, abra el archivo de configuración mysql.

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

En el nodo maestro, desplácese y localice el atributo bind-address como se muestra a continuación.

bind-address 	 =127.0.0.1

Cambie la dirección de loopback para que coincida con la dirección IP del nodo maestro.

bind-address  	=10.128.0.28

A continuación, especifique un valor para el atributo server-id en la sección [mysqld]. El número que elija no debe coincidir con ningún otro número de identificación del servidor. Asignemos el valor 1.

server-id	 =1

Al final del archivo de configuración, copie y pegue las líneas siguientes.

log_bin = /var/log/mysql/mysql-bin.log
log_bin_index =/var/log/mysql/mysql-bin.log.index
relay_log = /var/log/mysql/mysql-relay-bin
relay_log_index = /var/log/mysql/mysql-relay-bin.index

Salga del archivo de configuración y reinicie el servicio MySQL para que los cambios surtan efecto en el nodo maestro.

sudo systemctl restart mysql

Para verificar que el servidor MySQL se esté ejecutando como se esperaba, emita el comando.

sudo systemctl status mysql

¡Perfecto! ¡El servidor MySQL está funcionando como se esperaba!

Paso 2: cree un nuevo usuario para la replicación en Master Node

En esta sección, crearemos un usuario de replicación en el nodo maestro. Para lograr esto, inicie sesión en el servidor MySQL como se muestra.

sudo mysql -u root -p

A continuación, continúe y ejecute las consultas siguientes para crear un usuario de réplica y otorgar acceso al esclavo de replicación. Recuerde utilizar su dirección IP.

mysql> CREATE USER 'replication_user'@'10.128.0.29' IDENTIFIED BY 'replica_password';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'replication_user '@'10.128.0.29';

A continuación, ejecute el siguiente comando.

mysql> SHOW MASTER STATUS\G

El resultado debería ser similar a lo que puede ver a continuación.

Esté atento y observe el valor mysql-bin.000002 y el ID de posición 1643. Estos valores serán cruciales al configurar el servidor esclavo.

Paso 3: configurar el servidor esclavo MySQL

Dirígete al servidor esclavo y, como hicimos con el servidor maestro, abre el archivo de configuración de MySQL.

sudo vim  /etc/mysql/mysql.conf.d/mysqld.cnf

Al igual que el servidor maestro, proceda a editar las siguientes líneas.

bind-address           = 10.128.0.29

Como antes, especifique un valor para el atributo server-id en la sección [mysqld]. Esta vez seleccione un valor diferente. Vayamos con 2.

server-id		=2 

Nuevamente, pegue las líneas siguientes al final del archivo de configuración.

log_bin = /var/log/mysql/mysql-bin.log
log_bin_index =/var/log/mysql/mysql-bin.log.index
relay_log = /var/log/mysql/mysql-relay-bin
relay_log_index = /var/log/mysql/mysql-relay-bin.index

Luego reinicie el servidor MySQL en el nodo esclavo.

sudo systemctl restart mysql

Una vez hecho esto, guarde y salga del editor de texto.

A continuación, inicie sesión en el shell MySQL como se muestra.

sudo mysql -u root -p

En este paso, deberá realizar alguna configuración que permitirá que el servidor esclavo se conecte al servidor maestro. Pero primero, detenga los subprocesos esclavos como se muestra.

mysql> STOP SLAVE; 

Para permitir que el servidor esclavo replique el servidor maestro, ejecute el comando.

mysql> CHANGE MASTER TO MASTER_HOST ='10.128.0.28', MASTER_USER ='replication_user', MASTER_PASSWORD ='Saturn@1234', MASTER_LOG_FILE = 'mysql-bin.000002', MASTER_LOG_POS = 1643;

Si tiene suficiente interés, observará que hemos utilizado el valor mysql-bin.00002 y el ID de posición 1643 que se muestran anteriormente después de crear el usuario de replicación esclavo.

Adicionalmente se ha utilizado la dirección IP, el usuario de replicación y la contraseña del servidor Maestro.

Luego, inicie el hilo que había detenido anteriormente.

mysql> START SLAVE;

Paso 4: verificar la replicación maestro-esclavo de MySQL

Para verificar si la configuración realmente funciona como se esperaba, crearemos una nueva base de datos en el maestro y verificaremos si se ha replicado en el servidor esclavo MySQL.

Inicie sesión en MySQL en el servidor maestro.

sudo mysql -u root -p

Creemos una base de datos de prueba. En este caso, crearemos una base de datos llamada replication_db.

mysql> CREATE DATABASE replication_db;

Ahora, inicie sesión en su instancia de MySQL en el servidor esclavo.

sudo mysql -u root -p

Ahora enumere las bases de datos utilizando la consulta.

mysql> SHOW DATABASES;

Notarás que la base de datos que creaste en el maestro se ha replicado en el esclavo. Impresionante ! ¡Su replicación maestro-esclavo de MySQL está funcionando como se esperaba! Ahora puede estar seguro de que, en caso de cualquier falla, se replicarán copias de los archivos de la base de datos en el servidor esclavo.

Conclusión

En esta guía, aprendió cómo configurar una configuración de replicación MySQL Master-slave en Ubuntu 18.04.