Com configurar la replicació de MySQL a RHEL, Rocky i AlmaLinux


La replicació de dades és el procés de copiar les vostres dades en diversos servidors per millorar la disponibilitat de dades i millorar la fiabilitat i el rendiment d'una aplicació. A la replicació de MySQL, les dades es copien d'una base de dades del servidor mestre a altres nodes en temps real per garantir la coherència de les dades i també per proporcionar còpia de seguretat i redundància.

En aquesta guia, demostrem com podeu configurar la replicació de MySQL (Master-Slave) en distribucions basades en RHEL com CentOS, Fedora, Rocky Linux i AlmaLinux.

Per tant, aquí teniu la nostra configuració del laboratori de rèplica de MySQL.

MySQL Master - 10.128.0.14
MySQL Slave - 10.128.15.211

Comencem…

Pas 1: instal·leu MySQL al servidor mestre i esclau

Començarem instal·lant la base de dades MySQL tant al servidor principal com al servidor esclau.

$ sudo dnf install @mysql

Un cop finalitzada la instal·lació, feu un punt per iniciar el servidor de bases de dades.

$ sudo systemctl start mysqld

A continuació, activeu-lo per iniciar l'inici del sistema o en reiniciar-lo.

$ sudo systemctl enable mysqld

A continuació, confirmeu que el servidor de bases de dades MySQL s'està executant tal com es mostra:

$ sudo systemctl status mysqld

Pas 2: Assegureu MySQL al servidor mestre i esclau

El següent pas és assegurar la base de dades MySQL tant al servidor principal com al servidor esclau. Això es deu al fet que la configuració predeterminada és insegura i presenten algunes llacunes que els pirates informàtics poden aprofitar fàcilment.

Per tant, per endurir MySQL, executeu l'ordre:

$ sudo mysql_secure_installation

En primer lloc, se us demanarà que configureu la contrasenya root de MySQL. Assegureu-vos de proporcionar una contrasenya d'arrel segura, preferiblement amb més de 8 caràcters que són una barreja de majúscules, minúscules, caràcters especials i numèrics.

Per a les indicacions restants, escriviu Y per ajustar el servidor de bases de dades a la configuració recomanada.

Un cop hàgiu acabat d'instal·lar i endurir MySQL al node mestre i esclau, el següent és configurar el node mestre.

Pas 3: configureu el node mestre (servidor)

El següent pas és configurar el node mestre i concedir-hi accés al node esclau. Primer, hem d'editar el fitxer de configuració mysql-server.cnf.

$ sudo vim /etc/my.cnf.d/mysql-server.cnf

Afegiu les línies següents a la secció [mysqld].

bind-address	 = 10.128.0.14
server-id 	 = 1
log_bin		 = mysql-bin

Un cop fet, deseu els canvis i sortiu. A continuació, reinicieu el servidor MySQL.

$ sudo sysemctl restart mysqld

A continuació, inicieu sessió al shell de MySQL.

$ sudo mysql -u root -p

Executeu les ordres següents per crear un usuari de base de dades que s'utilitzarà per vincular el mestre i l'esclau per a la replicació.

mysql> CREATE USER 'replica'@'10.128.15.211' IDENTIFIED BY '[email ';
mysql> GRANT REPLICATION SLAVE ON *.*TO 'replica'@'10.128.15.211';

Apliqueu els canvis i sortiu del servidor MySQL.

mysql> FLUSH PRIVILEGES;
mysql> EXIT;

Comproveu l'estat del mestre.

mysql> SHOW MASTER STATUS\G

Preneu nota del nom i la posició del fitxer. Ho necessitareu més endavant quan configureu l'esclau per a la replicació. En el nostre cas, tenim el nom del fitxer com a mysql-bin.000001 i la posició 1232.

Pas 4: configureu el node esclau (servidor)

Ara, torneu al node Slave. Una vegada més, editeu el fitxer de configuració mysql-server.cnf.

$ sudo vim /etc/my.cnf.d/mysql-server.cnf

Com abans, enganxeu aquestes línies a la secció [mysqld]. Canvieu l'adreça IP perquè es correspongui amb la IP de l'esclau. A més, assigneu un identificador de servidor diferent. Aquí li hem assignat el valor de 2.

bind-address	 = 10.128.15.211
server-id	 = 2
log_bin 	 = mysql-bin

Deseu els canvis i sortiu del fitxer. A continuació, reinicieu el servidor de bases de dades.

$ sudo systemctl restart mysqld

Per configurar el node esclau per replicar-se des del node mestre, inicieu sessió al servidor MySQL de l'esclau.

$ sudo mysql -u root -p

En primer lloc, atureu els fils de replicació:

mysql> STOP SLAVE;

A continuació, executeu l'ordre següent per configurar el node esclau per replicar les bases de dades del mestre.

mysql> CHANGE MASTER TO
     MASTER_HOST='10.128.0.14' ,
     MASTER_USER='replica' ,
     MASTER_PASSWORD='[email ' ,
     MASTER_LOG_FILE='mysql-bin.000001' ,
     MASTER_LOG_POS=1232;

Tingueu en compte que els senyaladors MASTER_LOG_FILE i MASTER_LOG_POS corresponen als valors del fitxer i de la posició del node mestre al final del pas 1.

MASTER_HOST, MASTER_USER i MASTER_PASSWORD corresponen a l'adreça IP mestra, l'usuari de rèplica i la contrasenya de l'usuari de rèplica, respectivament.

A continuació, inicieu els fils de replicació esclau:

mysql> START SLAVE;

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

Ara, per provar si la rèplica entre el node mestre i el node esclau funciona, inicieu sessió al servidor de base de dades MySQL al node mestre:

$ sudo mysql -u root -p

Crear una base de dades de prova. Aquí, la nostra base de dades de prova s'anomena replication_db.

mysql> CREATE DATABASE replication_db;
Verify the existence of the database.
mysql> SHOW DATABASES;

Ara, aneu al node esclau, inicieu sessió al servidor MySQL i confirmeu que la base de dades replication_db està present. A partir de la sortida següent, podem veure que la base de dades està present. Aquesta és la confirmació que la replicació s'ha produït des del node mestre fins al node esclau.

mysql> SHOW DATABASES;

I això és tot, hem demostrat amb èxit com podeu configurar un model de replicació mestre-esclau MySQL que pugui replicar bases de dades des del node mestre fins al node esclau.