Para configurar a replicação mestre-mestre/escravo MariaDB, siga estas etapas:
Etapa 1 - Verifique se o GTID está ativado Antes de começar, verifique se o GTID está habilitado. É recomendado usar GTIDs com replicação MariaDB.
```
mysql -u raiz -p
Digite a senha root do MariaDB
MOSTRAR VARIÁVEIS GLOBAIS COMO 'gtid_mode';
```
Certifique-se de que a saída da consulta acima esteja ON ou ON_PERMISSIVE. Se você desligar, execute este comando para ativar o GTID:
```
DEFINIR GLOBAL gtid_mode=ON;
```
Nota:Se o GTID estava inicialmente DESLIGADO, reinicie o serviço MariaDB para que esta alteração tenha efeito.
Etapa 2 – Criar um novo usuário para replicação Crie um novo usuário que os servidores escravos possam usar para se conectar ao mestre e obter atualizações. Este usuário deve ter o privilégio REPLICATION SLAVE.
```
mysql -u raiz -p
CRIAR USUÁRIO 'repluser'@'%' IDENTIFICADO POR 'senha forte';
GRANT REPLICATION SLAVE ON *.* TO 'repluser'@'%';
PRIVILÉGIOS DE FLUSH;
```
Etapa 3 - Configurar a replicação mestre-mestre do MySQL _a) No Mestre 1:_
- Pare o serviço MariaDB:
```
sudo serviço mariadb parar
```
- Crie e abra o arquivo _my.cnf_ em um editor de texto.
- Para sistemas baseados em Debian/Ubuntu:
```
sudo nano /etc/mysql/my.cnf
```
- Para sistemas baseados em RedHat/CentOS/Fedora:
```
sudo nano /etc/my.cnf
```
- Edite o arquivo _my.cnf_ para incluir a seguinte configuração:
```
[mysqld]
IDs do servidor
id do servidor =1
Ative o modo GTID se ainda não estiver ativado
gtid_mode=ATIVADO
Vincular a todas as interfaces de rede
endereço de ligação =0.0.0.0
Configuração de replicação
log-bin=/var/log/mysql/mariadb-bin
binlog_do_db=mydb # o banco de dados que você deseja replicar
Master1 receberá suas atualizações do master2. Remova a linha abaixo se este for o primeiro master que você está configurando.
mestre_host =192.168.1.20
Opcionalmente, se necessário (útil se você estiver tentando recuperar o escravo de uma falha):
relay-log=/var/log/mysql/mariadb-relay-bin.log
relé-log-index=/var/log/mysql/mariadb-relay-bin.index
```
*O server_id na configuração acima deve ser um ID exclusivo para este servidor mestre.
*O binlog_do_db especifica qual banco de dados replicar.
*O master_host especifica o endereço IP ou nome do host do outro servidor mestre se você estiver configurando a replicação mestre dupla.
- Salve e saia do arquivo de configuração _my.cnf_.
- Inicie o serviço MariaDB:
```
sudo serviço mariadb iniciar
```
_b) No Mestre 2:_
- Repita os mesmos passos do mestre 1, exceto:
- Especifique um server_id diferente (por exemplo, server-id=2)
- Especifique o endereço IP ou nome do host do mestre 1 como master_host.
Etapa 4 - Configurar Slave _a) No Escravo:_
- Pare o serviço MariaDB:
```
sudo serviço mariadb parar
```
- Edite o arquivo _my.cnf_:
```
sudo nano /etc/mysql/my.cnf
```
- Certifique-se de que o endereço de ligação esteja definido como 0.0.0.0 para que o escravo possa aceitar conexões de ambos os mestres.
- Adicione as seguintes linhas:
```
[mysqld]
Defina o ID do servidor como Master1.
id do servidor =1
gtid_mode=ATIVADO
log_slave_updates=1
```
- Salve e saia do arquivo de configuração _my.cnf_.
- Inicie o serviço MariaDB:
```
sudo serviço mariadb iniciar
```
- Conecte-se ao banco de dados escravo:
```
mysql -u raiz -p
```
- Configure a replicação no escravo:
```mysql
MUDAR MESTRE PARA
MASTER_HOST='master1_ip_address',
MASTER_USER='repluser',
MASTER_PASSWORD='senha forte',
MASTER_AUTO_POSIÇÃO =1;
INICIAR ESCRAVO;
```
_b) Monitorar o status da replicação:_
- Verifique o status da replicação nos mestres e no escravo:
```mysql
MOSTRAR STATUS DO ESCRAVO\G;
```
O status da replicação deve mostrar que o escravo está conectado e replicando a partir dos mestres.