Com configurar MySQL Master-Slave Replication a Ubuntu 18.04


La replicació mestre-esclau de MySQL és un procediment que permet replicar o copiar fitxers de base de dades en un o més nodes d'una xarxa. Aquesta configuració proporciona redundància i tolerància a errors de manera que, en cas d'error al node mestre, les bases de dades encara es poden recuperar al node esclau. Això dóna als usuaris la tranquil·litat que no es perdrà tot en cap cas, ja que una rèplica de les bases de dades encara es pot recuperar des d'un servidor diferent.

En aquesta guia, aprendràs a realitzar una rèplica de base de dades MySQL Master-slave en un sistema Ubuntu 18.04.

A la configuració, tindrem dos servidors amb Ubuntu 18.04 amb les següents adreces IP.

Master server: 10.128.0.28
Slave server: 10.128.0.29

Ara endinsem-nos i veiem com podem configurar la configuració de rèplica mestre-esclau a Ubuntu.

Pas 1: instal·leu MySQL als nodes mestres i esclaus

Els repositoris d'Ubuntu contenen la versió 5.7 de MySQL. Per aprofitar les funcions noves i evitar problemes potencials, hauríeu d'instal·lar la darrera versió de MySQL. Però primer, actualitzem els dos nodes mitjançant la següent comanda apt.

$ sudo apt update

Per instal·lar MySQL als dos nodes, executeu l'ordre.

$ sudo apt install mysql-server mysql-client

A continuació, obriu el fitxer de configuració de mysql.

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

Al node mestre, desplaceu-vos i localitzeu l'atribut bind-address com es mostra a continuació.

bind-address 	 =127.0.0.1

Canvieu l'adreça de loopback perquè coincideixi amb l'adreça IP del node mestre.

bind-address  	=10.128.0.28

A continuació, especifiqueu un valor per a l'atribut server-id a la secció [mysqld]. El número que trieu no hauria de coincidir amb cap altre número d'identificador de servidor. Assignem el valor 1.

server-id	 =1

Al final del fitxer de configuració, copieu i enganxeu les línies següents.

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

Sortiu del fitxer de configuració i reinicieu el servei MySQL perquè els canvis tinguin efecte al node mestre.

$ sudo systemctl restart mysql

Per verificar que el servidor MySQL s'executa com s'espera, emet l'ordre.

$ sudo systemctl status mysql

Perfecte! El servidor MySQL s'està executant com s'esperava!

Pas 2: creeu un usuari nou per a la replicació al node mestre

En aquesta secció, crearem un usuari de replicació al node mestre. Per aconseguir-ho, inicieu sessió al servidor MySQL tal com es mostra.

$ sudo mysql -u root -p

A continuació, procediu i executeu les consultes següents per crear un usuari de rèplica i concedir accés a l'esclau de rèplica. Recordeu utilitzar la vostra adreça 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ó, executeu l'ordre següent.

mysql> SHOW MASTER STATUS\G

La sortida hauria de ser similar al que podeu veure a continuació.

Estigueu atents i tingueu en compte el valor mysql-bin.000002 i l'ID de posició 1643. Aquests valors seran crucials a l'hora de configurar el servidor esclau.

Pas 3: configureu el servidor esclau MySQL

Dirigiu-vos al servidor esclau i, com vam fer amb el servidor mestre, obriu el fitxer de configuració de MySQL.

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

Igual que el servidor mestre, procediu a editar les línies següents.

bind-address           = 10.128.0.29

Com abans, especifiqueu un valor per a l'atribut server-id a la secció [mysqld]. Aquesta vegada seleccioneu un valor diferent. Anem amb 2.

server-id		=2 

De nou, enganxeu les línies de sota al final del fitxer de configuració.

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

A continuació, reinicieu el servidor MySQL al node esclau.

$ sudo systemctl restart mysql

Un cop fet, deseu i sortiu de l'editor de text

A continuació, inicieu sessió a l'intèrpret d'ordres de MySQL tal com es mostra.

$ sudo mysql -u root -p

En aquest pas, haureu de fer una configuració que permeti que el servidor esclau es connecti al servidor mestre. Però primer, atureu els fils esclaus tal com es mostra.

mysql> STOP SLAVE; 

Per permetre que el servidor esclau repliqui el servidor mestre, executeu l'ordre.

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

Si esteu prou interessats, observareu que hem utilitzat el valor mysql-bin.00002 i l'ID de posició 1643 que es mostrava anteriorment després de crear l'usuari de rèplica esclau.

A més, s'ha utilitzat l'adreça IP, l'usuari de rèplica i la contrasenya del servidor mestre.

Més tard, inicieu el fil que havíeu aturat abans.

mysql> START SLAVE;

Pas 4: verifiqueu la replicació mestre-esclau de MySQL

Per comprovar si la configuració funciona com s'esperava, crearem una nova base de dades al mestre i comprovarem si s'ha replicat al servidor MySQL Slave.

Inicieu sessió a MySQL al servidor mestre.

$ sudo mysql -u root -p

Creem una base de dades de prova. En aquest cas, crearem una base de dades anomenada replication_db.

mysql> CREATE DATABASE replication_db;

Ara, inicieu sessió a la vostra instància MySQL al servidor esclau.

$ sudo mysql -u root -p

Ara llisteu les bases de dades mitjançant la consulta.

mysql> SHOW DATABASES;

Notareu que la base de dades que heu creat al mestre s'ha replicat a l'esclau. Genial! La vostra rèplica MySQL Master-slave funciona com s'esperava! Ara podeu estar segur que en cas de fallada, les còpies dels fitxers de la base de dades es replicaran al servidor esclau.

En aquesta guia, heu après a configurar una configuració de rèplica MySQL Master-slave a Ubuntu 18.04.