Búsqueda de sitios web

Configurar la replicación de MariaDB en Ubuntu/Debian


En esta guía, le mostraré cómo configurar la replicación maestro-esclavo de MariaDB en el servidor Ubuntu y Debian. MariaDB es una bifurcación desarrollada por la comunidad del sistema de gestión de bases de datos relacionales MySQL, que cuenta con una gran comunidad detrás de su desarrollo, seguridad y mejoras.

El proceso de replicación de MariaDB le permite mantener múltiples

Tenemos otros tutoriales que cubren la instalación y configuración del servidor MariaDB de un solo nodo tanto en Ubuntu como en Debian.

Paso 1: Instale MariaDB en Ubuntu/Debian

Tengo dos nodos que se utilizarán para configurar MariaDB

Node 1: 192.168.18.40
Node 2: 192.168.18.41

Instalar MariaDB en Ubuntu/Debian

Utilice los siguientes comandos para instalar el servidor MariaDB en el servidor Ubuntu/Debian. Agregue el repositorio usando los siguientes comandos.

curl -LsS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash -s --

Luego instale los paquetes requeridos:

sudo apt update
sudo apt install mariadb-server mariadb-client

Establecer contraseña de root cuando se le solicite

$ sudo mariadb-secure-installation
Switch to unix_socket authentication [Y/n] n
Change the root password? [Y/n] y
Remove anonymous users? [Y/n] y
Disallow root login remotely? [Y/n] y
Remove test database and access to it? [Y/n] y
Reload privilege tables now? [Y/n] y

Se requiere una prueba para confirmar la contraseña para acceder a la consola de la base de datos.

$ mysql -u root -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 42
Server version: 10.11.3-MariaDB-1:10.11.3+maria~ubu2204 mariadb.org binary distribution

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

Paso 2: configurar el servidor maestro MariaDB

Una vez que MariaDB esté instalado en ambos servidores, inicie sesión en el Nodo 1 (nodo maestro) a través de ssh y cambie la dirección de escucha a la dirección IP real del servidor. Edite el archivo /etc/mysql/my.cnf y agregue la siguiente línea en la sección mysqld .

#bind-address            = 127.0.0.1
bind-address             = 192.168.18.40

Establezca la ID del servidor, que será un identificador único del servidor maestro.

server-id = 100

Crear un usuario de replicación de base de datos

$ mysql -u root -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 50

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> grant replication slave on *.* to mysql_replica@'%' identified by 'StrongPassword';
Query OK, 0 rows affected (0.001 sec)

MariaDB [(none)]> flush privileges; 
Query OK, 0 rows affected (0.001 sec)

MariaDB [(none)]> exit
Bye

Reinicie el servidor MariaDB para que los cambios surtan efecto.

sudo systemctl restart mysql

Verifique el estado usando el comando ss o netstat .

# ss -tunelp | grep 3306
tcp   LISTEN  0       70               192.168.18.40:3306         0.0.0.0:*      users:(("mysqld",pid=16877,fd=22)) uid:111 ino:48116 sk:4 <->

Si tiene un firewall en ejecución, abra el puerto 3306

sudo ufw allow 3306

Paso 3: Configurar el servidor esclavo MariaDB

Inicie sesión en el servidor/servidores esclavos y configure MariaDB:

sudo vim /etc/mysql/my.cnf

Establezca los valores siguientes en la sección [mysqld] .

[mysqld]
bind-address = 192.168.18.41
server-id = 101
log_bin = /var/log/mysql/mariadb-bin
read_only = 1
report-host = mariadb-slave1
expire-logs-days = 7

read_only=1: Esto configura el esclavo en solo lectura

server-id=101: este es un número de identificación de servidor único. El valor predeterminado será si "master-host " no está configurado.

log_bin=/var/log/mysql/mariadb-bin:  Esto habilita

Reinicie mariadb después del cambio.

sudo systemctl restart mysql

Paso 4: Inicializar el proceso de replicación

Deberíamos estar listos para iniciar el proceso de replicación en el servidor esclavo. Comience verificando el Estado en el maestro:

MariaDB [(none)]> show master status\G
*************************** 1. row ***************************
            File: mariadb-bin.000003
        Position: 344
    Binlog_Do_DB: 
Binlog_Ignore_DB: 
1 row in set (0.000 sec)

Tome nota del archivo de registro maestro actual y de su posición. Luego configura

Inicie sesión en el servidor MariaDB Slave como usuario root y configure la conexión al servidor Master

$ mysql -u root -p
CHANGE MASTER TO MASTER_HOST='192.168.18.40',
MASTER_USER='mysql_replica',
MASTER_PASSWORD='StrongPassword',
MASTER_LOG_FILE='mariadb-bin.000003',
MASTER_LOG_POS=344;

Luego comience la replicación en el esclavo:

mysql> start slave;
Query OK, 0 rows affected (0.002 sec)

Para verificar el estado del esclavo, use:

MariaDB [(none)]> show slave status\G
*************************** 1. row ***************************
                Slave_IO_State: Waiting for master to send event
                   Master_Host: 192.168.18.40
                   Master_User: mysql_replica
                   Master_Port: 3306
                 Connect_Retry: 60
               Master_Log_File: mariadb-bin.000003
           Read_Master_Log_Pos: 344
                Relay_Log_File: mysqld-relay-bin.000002
                 Relay_Log_Pos: 557
         Relay_Master_Log_File: mariadb-bin.000003
              Slave_IO_Running: Yes
             Slave_SQL_Running: Yes
               Replicate_Do_DB: 
           Replicate_Ignore_DB: 
            Replicate_Do_Table: 
        Replicate_Ignore_Table: 
       Replicate_Wild_Do_Table: 
   Replicate_Wild_Ignore_Table: 
                    Last_Errno: 0
                    Last_Error: 
                  Skip_Counter: 0
           Exec_Master_Log_Pos: 344
               Relay_Log_Space: 867
               Until_Condition: None
                Until_Log_File: 
                 Until_Log_Pos: 0
            Master_SSL_Allowed: No
            Master_SSL_CA_File: 
            Master_SSL_CA_Path: 
               Master_SSL_Cert: 
             Master_SSL_Cipher: 
                Master_SSL_Key: 
         Seconds_Behind_Master: 0
 Master_SSL_Verify_Server_Cert: No
                 Last_IO_Errno: 0
                 Last_IO_Error: 
                Last_SQL_Errno: 0
                Last_SQL_Error: 
   Replicate_Ignore_Server_Ids: 
              Master_Server_Id: 100
                Master_SSL_Crl: 
            Master_SSL_Crlpath: 
                    Using_Gtid: No
                   Gtid_IO_Pos: 
       Replicate_Do_Domain_Ids: 
   Replicate_Ignore_Domain_Ids: 
                 Parallel_Mode: conservative
                     SQL_Delay: 0
           SQL_Remaining_Delay: NULL
       Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it
              Slave_DDL_Groups: 0
Slave_Non_Transactional_Groups: 0
    Slave_Transactional_Groups: 0
1 row in set (0.001 sec)

Slave IO y SQL deben indicar el estado de ejecución:

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

La verificación de la lista de procesos en el maestro también debería mostrar las conexiones de los servidores esclavos.

MariaDB [(none)]> select ID,user,host,db,command,time,state from information_schema.processlist order by time desc limit 5;
+----+---------------+---------------------+------+-------------+------+------------------------------------------------------------------+
| ID | user          | host                | db   | command     | time | state                                                            |
+----+---------------+---------------------+------+-------------+------+------------------------------------------------------------------+
| 38 | mysql_replica | 192.168.18.41:51522 | NULL | Binlog Dump |  988 | Master has sent all binlog to slave; waiting for binlog to be up |
|  2 | system user   |                     | NULL | Daemon      |    0 | InnoDB purge worker                                              |
|  5 | system user   |                     | NULL | Daemon      |    0 | InnoDB shutdown handler                                          |
|  1 | system user   |                     | NULL | Daemon      |    0 | InnoDB purge coordinator                                         |
|  4 | system user   |                     | NULL | Daemon      |    0 | InnoDB purge worker                                              |
+----+---------------+---------------------+------+-------------+------+------------------------------------------------------------------+
5 rows in set (0.000 sec)

Si es usuario de MySQL, marque Configurar la replicación maestro-esclavo de MySQL 8.0 en Ubuntu.

Libros de base de datos para leer:

  • Los mejores libros para aprender bases de datos MySQL/MariaDB