mysql-base-de-datos-clicko-informatica

La replicación de MySQL es un proceso en el que los datos de un servidor de base de datos MySQL (el maestro) se copian automáticamente en uno o más servidores de bases de datos MySQL (el esclavo).

La replicación no debe confundirse con las operaciones de respaldo. El objetivo de las copias de seguridad es proteger los datos y/o la estructura de datos, la función de la replicación es generalmente extensible para extender y escribir cargas de trabajo en varios servidores para fines de escalabilidad.

Diagrama y explicación del proceso:

clicko-informatica-diagrama-proceso

  1. Se ejecutan las consultas en el servidor maestro y éstas son registradas en un log-binario.
  2. El master manda un evento al proceso esclavo para avisarle que algo ha cambiado en el maestro
  3. El servidor esclavo lee la siguiente posición desde la última leída del log binario hasta el final y obtiene las consultas nuevas del servidor maestro.
  4. El esclavo ejecuta las consultas leídas en su sistema.

En este tutorial os mostraremos cómo realizar una replicación automática entre un servidor maestro y esclavo en máquinas remotas para Windows y las versiones de servidor MySQL 5.7 y 8.0.

CONFIGURACIÓN SERVIDOR MASTER

  1. Abrimos con permisos de administrador el fichero de configuración de mysql: C:\ProgramData\MySQL\MySQL [5.7/8.0]\my.ini
  2. Debajo de la etiqueta [mysqld] añadimos las siguientes directivas:
    • log-bin=mysql-bin #nombre del log binario
    • server-id=1 #id distinto al esclavo
    • binlog-do-db=as400mg #base de datos a replicar
    • sync_binlog=1
  3. Guardamos el fichero.
  4. Crearemos el usuario que usará el servidor esclavo para conectarse al maestro:
    • Entremos a la consola de MySQL. Hay 2 opciones:
      1. Ejecutar consola MySQL Command Line Client
      2. Con la terminal de Windows:

$ cd C:\”Program Files\MySQL\MySQL Server 5.7\bin

$ mysql -u root -p , e introducimos la clave de root.

  • Dentro de la consola de MySQL ejecutamos el siguiente comando que crea un usuario y le da permisos de replicación:

– MySQL 5.7

$ GRANT REPLICATION SLAVE ON *.* TO ‘usuario_esclavo’@’ip_esclavo’ IDENTIFIED BY ‘clave_usuario_esclavo’;

– MySQL 8.0:

$ CREATE USER ‘usuario_esclavo’@’ip_esclavo’ IDENTIFIED BY ‘clave_usuario_esclavo’;

$ GRANT REPLICATION SLAVE ON *.* TO ‘usuario_esclavo’@’ip_esclavo’ ;

  • Ejecutamos: $ FLUSH PRIVILEGES;
  1. Reiniciamos el servicio: en Servicios de Windows buscar MySQL

 

CONFIGURACIÓN SERVIDOR SLAVE

  1. Abrimos con permisos de administrador el fichero de configuración de mysql: C:\ProgramData\MySQL\MySQL [5.7/8.0]\my.ini
  2. Debajo de la etiqueta [mysqld] añadimos las siguientes directivas:
    • log-bin=mysql-bin              #nombre del log binario
    • server-id=2                           #id distinto al master
  3. Guardamos el fichero.
  4. Reiniciamos el servicio: en Servicios de Windows buscar MySQL
  5. Entramos en la consola MySQL y detenemos el servicio slave:
    • mysql> stop slave;
  6. Ahora en el servidor Maestro miramos la información de estado del proceso master con el comando:
    • mysql> show master status.
  7. Anotamos los valores File y Position del comando anterior, los usaremos en el siguiente punto
  8. Aplicamos la configuración de replicación del servidor esclavo
    • mysql> change master to

-> master_host=’ip_servidor_masgter’,

-> master_user=’usuario_esclavo’,

-> master_password=’clave_usuario_sclavo’,

-> master_log_file=’mysql-bin.00000X’,        #valor anotado File

-> master_log_pos=X,           #valor anotado Position

-> master_port=X;                #puerto configurado (si fuera el caso)

  1. Revisamos la configuración del esclavo:
    • mysql> show slave status \G;
  2. Arrancamos el servicio esclavo:
    • mysql> start slave;
  3. Reiniciamos el servicio: en Servicios de Windows buscar MySQL

Después de realizar este proceso ya tenemos operativo un sistema de replicación de datos de tipo master -> slave. Para comprobarlo basta con realizar alguna acción en el servidor MySQL maestro y veremos como al instante sesta acción se realiza también en el servidor esclavo.

 

Referencias:

https://dev.mysql.com/doc/refman/5.7/en/replication.html

https://dev.mysql.com/doc/refman/8.0/en/replication.html

Facebook
Facebook
LinkedIn
Full stack engineer - Analista programador Web

Full Stack Engineer – Analista Programador Web