Guía para crear una replicación en MariaDB

| 2018-12-7 | No hay comentarios »

En este tutorial voy a estar detallando los pasos necesarios para configurar una replicación MASTER-SLAVE para MariaDB.

La replicación se usa para crear múltiples copias de nuestra base de datos y estas copias pueden usarse como otra base de datos para ejecutar nuestras consultas que de otro modo podrían afectar el rendimiento del servidor maestro, como por ejemplo: Ejecutar algunas consultas analíticas pesadas o simplemente podemos usarlas para  fines de redundancia. Podemos automatizar todo ese proceso!

Así que ahora configuraremos nuestra replicación MASTER-SLAVE, para esto necesitamos dos servidores con Mariadb, ejemplo:

Master – 192.168.0.2 MASTER – master.programacion.com.py

Slave – 192.168.0.3  SLAVE – slave.programacion.com.py

Paso 1- Configuración del Master

$ nano /etc/my.cnf

y luego dejarlo así:

[mysqld]
log-bin
server_id=1
replicate-do-db=important
bind-address=192.168.0.2

Guardar y luego reiniciar mariadb:

$ systemctl restart mariadb

Loguearse:

$ mysql –u root –p

Esto creará un nuevo usuario para el esclavo llamado “slaveuser” y le asignará los privilegios necesarios:

STOP SLAVE;
GRANT REPLICATION SLAVE ON *.* TO ‘slaveuser’@’%’ IDENTIFIED BY ‘iamslave’;
FLUSH PRIVILEGES;
FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;

Paso 2 – Crear un backup

$ mysqldump –u root –p important > important_backup.sql

Luego:

$ mysql –u root –p
$ UNLOCK TABLES;

$ scp important_backup.sql root@192.168.0.3:/data

Esto completa nuestra configuración en el servidor maestro, ahora pasaremos a configurar nuestro servidor esclavo.

Paso 3 – Configuración del SLAVE

Comenzaremos de nuevo con la edición del archivo ‘/etc/my.cnf’ y buscaremos la sección [mysqld] e ingresaremos los siguientes detalles,

[mysqld]
server-id = 2
replicate-do-db=important
[…]

$ mysql -u root -p < /data/ important_backup.sql

Cuando se complete el proceso, le otorgaremos los privilegios a “slaveuser” en la base de datos “important” al iniciar sesión en mariadb en el servidor esclavo,

$ mysql –u root –p

GRANT ALL PRIVILEGES ON important.* TO ‘slaveuser’@’localhost’ WITH GRANT OPTION;
FLUSH PRIVILEGES;

Siguiente reinicio de mariadb para implementar los cambios.

$ systemctl restart mariadb

Paso 4 – Inicar la replicación

Recuerde, necesitamos las variables MASTER_LOG_FILE y MASTER_LOG_POS que obtuvimos al ejecutar “SHOW MASTER STATUS” en mariadb en el servidor maestro. Ahora ingrese a mariadb en el servidor esclavo y le diremos a nuestro servidor esclavo dónde buscar el maestro ejecutando los siguientes comandos:

STOP SLAVE;
CHANGE MASTER TO MASTER_HOST=’192.168.0.2′, MASTER_USER=’slaveuser’, MASTER_PASSWORD=’iamslave’, MASTER_LOG_FILE=’mariadb-bin.000001′, MASTER_LOG_POS=460;
START SLAVE;
SHOW SLAVE STATUS\G;

Paso 5 – Probar

Ahora crearemos una nueva tabla en nuestra base de datos en el maestro para asegurarnos de que la replicación esté funcionando o no. Entonces, ingrese a mariadb en el servidor maestro,

$ mysql –u root –p

use important;

create table x (c int);

insert  into x (c) value (1);

select * from x;

Ahora iniciemos sesión en nuestra base de datos esclava para asegurarnos de que nuestra replicación de datos esté funcionando,

$ mysql –u root –p
$ use important;
$ select * from x;

Con eso podrá visualizar que la salida muestra el mismo valor que insertamos en el servidor maestro, por lo tanto, la replicación funciona correctamente sin ningún problema.

Espero que este tutorial les sea de gran ayuda.

Acerca del autor: Rodrigo Paszniuk

Ingeniero Informático, amante de la tecnología, la música, el ciclismo y aprender cosas nuevas.




SEGUÍNOS EN FACEBOOK


GITHUB