Replicación de MySQL 8 maestro-esclavo en Ubuntu 20.04

A veces, es posible que necesitemos replicar datos de un servidor de base de datos MySQL a uno o más servidores de base de datos MySQL automáticamente. Básicamente, los administradores de la base de datos realizan tareas relacionadas con la base de datos, como la replicación, la agrupación en clústeres y la conmutación por error automática. Administrar servidores de bases de datos MySQL y realizar tareas de replicación son responsabilidades de los expertos en bases de datos. En este artículo, aprenderemos cómo configurar la replicación de la base de datos MySQL maestro-esclavo en Ubuntu 20.04. En este artículo, usaremos MySQL 8 para la replicación.

requisitos previos

  • Dos servidores ubuntu
  • Cuenta de usuario con privilegios de raíz
  • Conexión a Internet para descargar paquetes

En esto examplese están utilizando los siguientes servidores.

  • Maestro – 192.168.178.135
  • Esclavo – 192.168.178.137

Instale el servidor MySQL 8 en ambos nodos

La instalación de MySQL es un proceso simple y directo. En el sistema Ubuntu, MySQL se puede instalar usando el repositorio de paquetes APT. Antes de la instalación, actualice el índice de paquetes de Ubuntu con el siguiente comando.

$apt update

Instale el paquete del servidor MySQL usando el siguiente comando.

$apt install mysql-server -y

La instalación nueva del servidor MySQL lo deja sin seguridad. Ejecute el script “mysql_secure_installation” para cambiar algunas de las opciones predeterminadas menos seguras, como inicios de sesión de root remotos, base de datos de prueba, usuarios de muestra, etc.

$ mysql_secure_installation

Iniciar y habilitar el servicio MySQL

$ systemctl start mysql
$ systemctl enable mysql

Configurar el servidor de la base de datos maestra

Ahora necesitamos hacer algunos cambios en el servidor maestro para la replicación. Editar el mysqld.conf archivo bajo el directorio /etc/mysql/mysql.conf.d y agregue las siguientes líneas. Recuerde agregar las variables de configuración debajo del [mysqld] sección.

$ vi /etc/mysql/mysql.conf.d/mysqld.conf
[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
log-error = /var/log/mysql/error.log
server-id = 1
log-bin = /var/log/mysql/mysql-bin.log
tmpdir = /tmp
binlog_format = ROW
max_binlog_size = 800M
sync_binlog = 1
expire-logs-days = 5
slow_query_log=1
slow_query_log_file=/var/lib/mysql/mysqld-slow.log

Donde:

  • server-id: identificación única del servidor MySQL. Este ID no se puede reutilizar en ningún nodo del clúster.
  • log-bin: este es el archivo en el que se almacena toda la información de replicación.
  • max_binlog_size: tamaño del archivo binlog.

Además, comente la dirección de enlace como:

#bind-address =127.0.0.1

reiniciar el servicio mysql

$systemctl restart mysql

Cree un nuevo usuario para el servicio de replicación en el nodo principal

Ahora necesitamos crear un usuario de base de datos en un nodo maestro que será utilizado por los esclavos cuando se conecten. Inicie sesión en la base de datos con el usuario raíz y cree el usuario.

$ mysql -u root -p
$ mysql> CREATE USER [email protected] IDENTIFIED BY '[email protected]';

Nota: Especificar la dirección IP al crear el usuario aceptará conexiones MySQL solo desde el host especificado. Se rechazarán las conexiones de otros hosts. En esto example, he usado la dirección IP de mi servidor esclavo MySQL. Es posible que deba cambiar esta dirección IP a su entorno en consecuencia.

El usuario necesita privilegios de ESCLAVO DE REPLICACIÓN para poder replicar los datos de MySQL. Utilice la siguiente consulta para otorgar los privilegios.

mysql> GRANT REPLICATION SLAVE on *.* to [email protected] ;

Verifique los privilegios otorgados mediante la siguiente consulta.

mysql> SHOW GRANTS FOR [email protected];

Crear un usuario de replicación

Configurar el nodo DB esclavo

Ya hemos instalado el servidor MySQL en el paso anterior. Ahora cambiaremos algunos archivos de configuración para habilitar el proceso de replicación. Editar el mysqld.conf archivar bajo /etc/mysql/mysql.conf.d directorio y agregue los siguientes contenidos.

$vi /etc/mysql/mysql.conf.d/mysqld.conf

Contenido del archivo de configuración:

[mysqld]
log_bin = /var/log/mysql/mysql-bin.log
server-id = 2
read_only = 1
tmpdir = /tmp
binlog_format = ROW
max_binlog_size = 800M
sync_binlog = 1
expire-logs-days = 5
slow_query_log = 2

Donde,

  • id-servidor – ID de servidor MySQL único.
  • solo lectura – El nodo esclavo está configurado en modo de solo lectura
  • log_bin – Habilita el registro binario en el nodo esclavo
  • registro_consulta_lenta – Habilita el registro de consultas lentas

Además, comente la línea de dirección de enlace.

# bind-address = 127.0.0.1

Configuración del servidor de base de datos esclavo

Ahora reinicie el servicio MySQL

$ systemctl restart mysql

Conectar el servidor esclavo al servidor maestro

Antes de configurar el servidor esclavo, vaya al servidor maestro y verifique el estado.

$ mysql -u root -p
mysql> SHOW MASTER STATUSG

Conectar servidores de base de datos

Tome nota de las siguientes banderas que usaremos en el servidor esclavo.

  • Archivo: mysql-bin.000002
  • Puesto: 156

Ahora configure los parámetros en el servidor esclavo que se usarán para conectar el servidor maestro. Siga los pasos a continuación.

  • Inicie sesión en el servidor MySQL usando credenciales de raíz
$ mysql -u root -p
  • Detener subprocesos esclavos
mysql> STOP SLAVE;
  • Configurar el servidor esclavo para replicar el servidor maestro
mysql> CHANGE MASTER TO MASTER_HOST='192.168.178.137', MASTER_USER='replication_user', MASTER_PASSWORD='[email protected]', MASTER_LOG_FILE='mysql-bin.000003', MASTER_LOG_POS=1050;

configuración de replicación de MySQL maestro/esclavo

Donde,

  • 192.168.178.137 – Dirección IP del servidor maestro
  • usuario_replicación – Usuario MySQL del servidor maestro
  • contraseña – Contraseña de usuario de replicación
  • mysql-bin.000002 – Archivo de registro del servidor maestro
  • 156 – Posición de registro del servidor maestro

Ahora active el servidor esclavo.

mysql> START SLAVE;

Verifique el estado del esclavo usando la siguiente consulta

mysql> SHOW SLAVE STATUSG

Tenga en cuenta el estado de la siguiente bandera.

  • Slave_IO_Running: Conectando
  • Slave_IO_Running: Conectando

La replicación está activa y funcionando.

Verifique la replicación maestro-esclavo

El maestro y el esclavo están configurados para replicar. Podemos verificar si la replicación maestro-esclavo está funcionando o no. En el servidor maestro, inicie sesión en el shell de MySQL y cree una base de datos de prueba.

$ mysql -u root -p
mysql> CREATE DATABASE example_db;

Verifique la base de datos creada.

mysql> SHOW DATABASES;

Comprobar si la replicación funciona

Ahora inicie sesión en el servidor esclavo

$ mysql -u root -p

Ejecute la siguiente consulta para enumerar las bases de datos.

mysql> SHOW DATABASES;

Base de datos creada en el nodo esclavo automáticamente

Puede ver que la base de datos creada en el servidor maestro se replica en el servidor esclavo.

Conclusión

En este artículo, aprendimos cómo configurar el nodo maestro y esclavo de MySQL en Ubuntu 20.04. Puede seguir este artículo para configurar la replicación de MySQL maestro-esclavo en Ubunutu 18.04 también.

Replicación de MySQL 8 maestro-esclavo en Ubuntu 20.04

Related Posts