GNU/Linux >> Tutoriales Linux >  >> Linux

Replicación maestro-maestro con MariaDB

Hace un par de días escribí un tutorial sobre cómo replicar con MariaDB (o MySQL). Esta es una replicación unidireccional:de maestro a esclavo; esto significa que el servidor esclavo recibe las transacciones del maestro. Pero mi cliente necesita una replicación bidireccional, porque no sabemos qué servidor recibirá la transacción y los mismos datos deben estar en ambos. Aquí le mostraré cómo configurar la replicación maestro-maestro con MariaDB para lograr esto.

Mi configuración

En caso de que se haya perdido el artículo anterior, esas son las características de las máquinas virtuales en las que estoy ejecutando esta replicación.

  • OS:Prueba de Debian 'Ratón de biblioteca'
  • Versión de MariaDB:10.5.12
  • Maestro1:192.168.122.13
  • Maestro2:192.168.122.223

Configuración maestra

Ambos maestros obtienen la misma configuración, edite /etc/mysql/mariadb.conf.d/50-server.cnf y reemplace los siguientes valores:

bind-address  = <master.X.ip.address>
server-id        = <X>
report_host    = masterX
log_bin          = /var/log/mysql/mysql-bin.log
relay_log       = /var/lib/mysql/relay-bin
relay_log_index = /var/lib/mysql/relay-bin.index

log-slave-updates
auto_increment_increment=2
auto_increment_offset=X

Donde X es 1 para el primer maestro y 2 para el segundo.
Los valores de autoincremento significan que en los campos de tipo id, uno de los maestros obtendrá siempre números pares y el otro obtendrá siempre números impares. Esto es para evitar que se asigne exactamente el mismo número de identificación en ambos maestros al mismo tiempo.

Ahora reinicie el servicio mariadb e inicie sesión en mysql para crear un usuario (esclavo significa esclavo en español) con privilegios de replicación:

CREATE USER 'esclavo1'@'ip.mysql.master.2' IDENTIFIED BY 'SlavePass' ;
GRANT REPLICATION SLAVE ON *.* TO 'esclavo1'@'ip.mysql.master.2';
FLUSH PRIVILEGES;

Repita en ambos maestros cambiando la información en consecuencia (es decir, en master2 cree un usuario [email protected] ). Pero primero, obtenga un volcado de sql de su primer maestro y cárguelo en el segundo:

master1: mysqldump -u root --all-databases -p --master-data > data.sql
master2: mysql -uroot < data.sql

Ahora obtenga información sobre este maestro que necesitamos para habilitar el modo esclavo en el otro host.

MariaDB [(none)]> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000003|      358 |              |                  |
+------------------+----------+--------------+------------------+
1 row in set (0.000 sec)
STOP SLAVE;

Configuración de esclavos

Ahora es el momento de configurar el modo esclavo en ambos hosts mariadb/mysql:

CHANGE MASTER TO MASTER_HOST='ip.mysql.master.X', MASTER_USER='esclavoX',MASTER_PASSWORD='SlavePass MASTER_LOG_FILE='mysql-bin.000003', MASTER_LOG_POS = 358';
START SLAVE;

El valor master_host es la ip del otro maestro, el valor master_user es el usuario que ha creado en el otro maestro, y finalmente obtiene los valores master_log_file y master_log_post de show master sta tu comando.

Comprobando todo

Para ver si pude habilitar la replicación maestro-maestro con MariaDB, realicé una prueba muy simple:

Creé una base de datos en un maestro, luego una tabla simple (solo 1 campo) e inserté un par de registros. Luego verifiqué con una selección que los datos aparecen en ambos hosts. Finalmente, agregué una columna incremental automática de identificación en un host e inserté algunos datos más para ver cómo aparece:

Solo para agregar más confusión a esas capturas de pantalla:agregué la configuración de incremento automático (incremento y compensación) a my.cnf durante esta prueba y no desde el principio, porque no lo supe hasta que comencé las pruebas.

De todos modos, así es como habilité la replicación maestro-maestro con MariaDB, que también es replicación esclavo-esclavo. O amo-esclavo y replicación esclavo-maestro, lo que sea.

Creo que el siguiente paso lógico es investigar y usar un poco de Galera Cluster.


Linux
  1. Replicar una base de datos maestra usando MariaDB 10 en Debian 8

  2. Cómo configurar la replicación maestro-maestro de MySQL

  3. Configuración de Master-Master Replication con MySQL en Debian 8 (Jessie)

  4. Cómo reemplazar MySQL con MariaDB en CentOS 6

  5. Cómo instalar WordPress con LEMP en Ubuntu 20.04

Cómo configurar la replicación de MariaDB en CentOS Linux

Replicación maestro-esclavo con MariaDB

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

Cómo instalar el servidor web OpenLiteSpeed ​​con MariaDB y PHP

Cómo administrar Buzones con RoundCube en CentOS 7

8 pasos para instalar MirthConnect con MySQL / MariaDB en Linux