GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo configurar la replicación maestro-esclavo de MariaDB en CentOS 7

El concepto de replicación de la base de datos garantiza que los datos se copien en varios servidores desde un servidor maestro. Esto proporciona redundancia de datos y garantiza que los datos no se pierdan en caso de que falle el nodo maestro. En este artículo, echamos un vistazo a la replicación de MariaDB Master-Slave en CentOS 7. Demostraremos cómo se pueden copiar datos de una base de datos ubicada en un nodo Master a otra base de datos ubicada en un sistema Slave.

Escenario de replicación maestro-esclavo de MariaDB

Aquí está la configuración de la replicación:



Master node (CentOS 7 64 bit) : IP 173.82.2.236

Slave node: (CentOS 7 64 bit) : IP 173.82.94.57

Paso 1:Instale MariaDB tanto en el nodo maestro como en el esclavo

Para comenzar, inicie sesión en el nodo maestro y esclavo y ejecute los siguientes comandos para instalar el servidor MariaDB

yum install mariadb-server mariadb

Salida de muestra

Inicie el servicio MariaDB y actívelo en el arranque



# systemctl start mariadb
# systemctl enable mariadb

Salida de muestra

Paso 2:establezca la contraseña de MariaDB tanto en el maestro como en el esclavo

De forma predeterminada, la contraseña de MariaDB/MySQL suele estar vacía y los usuarios no autorizados pueden acceder a la base de datos. Necesitamos hacerlo seguro configurando una contraseña y fortaleciéndola con otras pocas configuraciones. Para lograr esto, ejecute el siguiente comando tanto en el nodo maestro como en el esclavo

mysql_secure_installation

Salida de muestra

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none): 
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

Set root password? [Y/n] y ## Enter Y and press Enter
New password:   ## Enter new password
Re-enter new password:  ## Enter password again
Password updated successfully!
Reloading privilege tables..
 ... Success!


By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] y  ## Enter Y and press Enter
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] y  ## Enter Y and press Enter
 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] y  ## Enter Y and press Enter
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] y  ## Enter Y and press Enter
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

Paso 3:Configuración del nodo maestro

Ahora que hemos fortalecido nuestras instancias de MariaDB en ambos nodos, configuremos el nodo maestro.

Primero, necesitamos permitir el puerto 3306 de MariaDB a través del cortafuegos de CentOS 7. Para lograr esto, ejecute los comandos

# firewall-cmd --add-port=3306/tcp --zone=public --permanent

Salida de muestra

Vuelva a cargar el cortafuegos para efectuar los cambios

# firewall-cmd --relaod

Salida de muestra

A continuación, realice algunos cambios en /etc/my.cnf archivo

vim /etc/my.cnf

agregue las siguientes líneas en el [mysqld] sección



[mysqld]
server_id=1
log-basename=master
log-bin
binlog-format=row
binlog-do-db=replica_db
[...]

Aquí, replica_db es la base de datos que vamos a crear y replicar en el esclavo.

Luego, reinicie el servicio MariaDB usando el comando:

systemctl restart mariadb

Ahora vamos a iniciar sesión en MariaDB como usuario root:

mysql -u root -p

El siguiente paso será Crear la replica_db base de datos

MariaDB [(none)]> CREATE DATABASE replica_db;

A continuación, cree un usuario y una contraseña esclavos. Por ejemplo, usaremos slave_user como nombre de usuario esclavo y P@ssword100 como contraseña:


MariaDB [(none)]> STOP SLAVE;
Query OK, 0 rows affected, 1 warning (0.00 sec)

MariaDB [(none)]> GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'%' IDENTIFIED BY 'P@ssword100';
Query OK, 0 rows affected (0.00 sec)

A continuación, vacíe los privilegios como se muestra


MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> FLUSH TABLES WITH READ LOCK;
Query OK, 0 rows affected (0.00 sec)

A continuación, ejecute el siguiente comando para mostrar el estado del maestro

SHOW MASTER STATUS;

Paso 4:Hacer una copia de seguridad de la base de datos en el servidor Maestro y transferirla al Esclavo

A continuación, ejecute el siguiente comando para hacer una copia de seguridad de todas las bases de datos maestras

 # mysqldump --all-databases --user=root --password --master-data > masterdatabase.sql

Esto crea un archivo llamado masterdatabase.sql en su directorio de trabajo actual.

Vuelva a iniciar sesión en MySQL como usuario root:

mysql -u root -p

Y desbloquea las tablas:



MariaDB [(none)]> UNLOCK TABLES;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> quit
Bye

Ahora copia el masterdatabase.sql archivo a su servidor Esclavo.

Entonces el comando será:

scp masterdatabase.sql [email protected]:/home

Recuerde que 173.82.94.57 es nuestro servidor esclavo de MariaDB.

Paso 4:Configuración del esclavo MariaDB

Ahora es el momento de configurar el nodo MariaDB Slave

Edite el archivo /etc/my.cnf archivo

vim /etc/my.cnf

Agregue las siguientes entradas debajo de [mysqld] sección como se muestra

 
[mysqld]
server-id = 2
replicate-do-db=replica_db
[...]

Aquí, replica_db es la base de datos creada en el nodo del servidor maestro. Además, tenga en cuenta el uso de ID de servidor diferentes para los servidores maestro y esclavo. En este caso, la identificación del servidor es 2

Guarde y salga del archivo.

A continuación, vamos a importar la base de datos maestra como se muestra

mysql -u root -p < /home/masterdatabase.sql 

Tenga en cuenta que ya habíamos copiado el archivo masterdatabase.sql del servidor maestro al directorio /home/ del servidor esclavo.

Reinicie el servicio MariaDB para efectuar los cambios.

systemctl restart mariadb

Ahora inicie sesión en MariaDB como usuario root

mysql -u root -p

Detener al esclavo. Indique al esclavo dónde encontrar el archivo de registro maestro e inicie el esclavo.


MariaDB [(none)]> STOP SLAVE;

MariaDB [(none)]> CHANGE MASTER TO MASTER_HOST='173.82.2.236', MASTER_USER='slave_user', MASTER_PASSWORD='P@ssword100', MASTER_LOG_FILE='mariadb-bin.000001', MASTER_LOG_POS=473;
Query OK, 0 rows affected (0.03 sec)

MariaDB [(none)]> STOP SLAVE;
Query OK, 0 rows affected (0.01 sec)

A continuación, ejecute el siguiente comando para mostrar el estado del Esclavo

MariaDB [(none)]> SHOW SLAVE STATUS\G;

Prueba de la replicación de MariaDB

Lado maestro:

Diríjase a su servidor maestro de MariaDB e inicie sesión en la instancia de MariaDB usando el comando como se muestra

mysql -u root -p

Crea la base de datos replica_db

A continuación, cree una tabla Persons

Agregue un registro como se muestra

Finalmente, muestra la tabla

Lado esclavo:

Ahora, inicie sesión en la instancia de la base de datos MariaDB en el servidor esclavo

mysql -u root -p

Luego, muestre las bases de datos usando el siguiente comando

SHOW DATABASES;

Como puede ver, la replica_db la base de datos está presente, lo que implica que se ha replicado!

Avancemos y probemos dentro de la base de datos y verifiquemos si hay tablas presentes. Ejecutar

use replica_db;

Entonces

show tables;

Como puede ver, la tabla Personas creado anteriormente en el nodo principal está presente. ¡Perfecto!

Revelemos sus registros para estar totalmente seguros de que nuestra base de datos se ha replicado por completo

select *from replica_db;

Como se observa, todos los contenidos han sido replicados y son precisos. ¡Así se hace!

En este artículo, ha aprendido cómo configurar la replicación maestro-esclavo de MariaDB en CentOS 7. Pruébelo y no dude en opinar.


Linux
  1. Cómo restablecer la contraseña raíz de MySQL o MariaDB

  2. Mutt:¿Cómo almacenar la contraseña de forma segura?

  3. Cómo configurar VSFTPD en CentOS 8

  4. Cómo configurar WireGuard VPN en CentOS 8

  5. ¿Cómo instalar MySQL en CentOS 7.x?

Cómo configurar un servidor TeamSpeak en CentOS 7

Cómo configurar un servidor de Minecraft en CentOS 7

Cómo configurar GitLab en CentOS 8

¿Cómo restablecer la contraseña de root de MySQL 8.0 en Centos 7.x?

Cómo administrar Buzones con RoundCube en CentOS 7

Cómo restablecer la contraseña raíz en CentOS/RHEL 8