Paso 1:comprobar si GTID está habilitado
Antes de comenzar, verifique si GTID está habilitado. Se recomienda utilizar GTID con la replicación de MariaDB.
```
mysql -u raíz -p
Ingrese la contraseña raíz de MariaDB
MOSTRAR VARIABLES GLOBALES COMO 'gtid_mode';
```
Asegúrese de que el resultado de la consulta anterior sea ON o ON_PERMISSIVE. Si está APAGADO, ejecute este comando para habilitar GTID:
```
ESTABLECER GLOBAL gtid_mode=ON;
```
Nota:Si GTID estaba inicialmente APAGADO, reinicie el servicio MariaDB para que este cambio sea efectivo.
Paso 2:crear un nuevo usuario para la replicación
Cree un nuevo usuario que los servidores esclavos puedan usar para conectarse al maestro y obtener actualizaciones. Este usuario debe tener el privilegio ESCLAVO DE REPLICACIÓN.
```
mysql -u raíz -p
CREAR USUARIO 'repluser'@'%' IDENTIFICADO POR 'contraseña-segura';
CONCEDER ESCLAVO DE REPLICACIÓN EN *.* A 'repluser'@'%';
PRIVILEGIOS DE ENJUAGUE;
```
Paso 3:configurar la replicación maestro-maestro de MySQL
_a) En Maestro 1:_
- Detener el servicio MariaDB:
```
parada de sudo servicio mariadb
```
- Cree y abra el archivo _my.cnf_ en un editor de texto.
- Para sistemas basados en Debian/Ubuntu:
```
sudo nano /etc/mysql/my.cnf
```
- Para sistemas basados en RedHat/CentOS/Fedora:
```
sudo nano /etc/my.cnf
```
- Edite el archivo _my.cnf_ para incluir la siguiente configuración:
```
[mysqld]
ID de servidor
ID del servidor =1
Habilite el modo GTID si aún no está habilitado
gtid_mode =activado
Vincular a todas las interfaces de red
dirección de enlace =0.0.0.0
Configuración de replicación
log-bin=/var/log/mysql/mariadb-bin
binlog_do_db=mydb # la base de datos que desea replicar
Master1 recibirá sus actualizaciones de master2. Elimine la línea siguiente si este es el primer maestro que está configurando.
host_maestro =192.168.1.20
Opcionalmente, si es necesario (útil si estás intentando recuperar un esclavo de un fallo):
relé-log=/var/log/mysql/mariadb-relay-bin.log
relé-log-index=/var/log/mysql/mariadb-relay-bin.index
```
*El server_id en la configuración anterior debe ser un ID único para este servidor maestro.
*binlog_do_db especifica qué base de datos replicar.
*Master_host especifica la dirección IP o el nombre de host del otro servidor maestro si está configurando una replicación maestra dual.
- Guarde y salga del archivo de configuración _my.cnf_.
- Inicie el servicio MariaDB:
```
inicio del servicio sudo mariadb
```
_b) En Maestro 2:_
- Repetir los mismos pasos que para el master 1, excepto:
- Especifique un server_id diferente (por ejemplo, server-id=2)
- Especifique la dirección IP o el nombre de host del maestro 1 como master_host.
Paso 4:configurar el esclavo
_a) En esclavo:_
- Detener el servicio MariaDB:
```
parada de sudo servicio mariadb
```
- Edite el archivo _my.cnf_:
```
sudo nano /etc/mysql/my.cnf
```
- Asegúrese de que la dirección de enlace esté configurada en 0.0.0.0 para que el esclavo pueda aceptar conexiones de ambos maestros.
- Añade las siguientes líneas:
```
[mysqld]
Establezca el ID del servidor igual que Master1.
ID del servidor =1
gtid_mode =activado
log_slave_updates=1
```
- Guarde y salga del archivo de configuración _my.cnf_.
- Inicie el servicio MariaDB:
```
inicio del servicio sudo mariadb
```
- Conectarse a la base de datos esclava:
```
mysql -u raíz -p
```
- Configurar la replicación en el esclavo:
```mysql
CAMBIAR MAESTRO A
MASTER_HOST='master1_ip_address',
MASTER_USER='repluser',
MASTER_PASSWORD='contraseña segura',
MASTER_AUTO_POSITION =1;
INICIAR ESCLAVO;
```
_b) Supervisar el estado de replicación:_
- Verifique el estado de replicación tanto en el maestro como en el esclavo:
```mysql
MOSTRAR ESTADO DE ESCLAVO\G;
```
El estado de replicación debe mostrar que el esclavo está conectado y replicando desde los maestros.