Følg disse trin for at konfigurere MariaDB Master-master/slave-replikering:
Trin 1 - Tjek, om GTID er aktiveret
Før du starter, skal du kontrollere, om GTID er aktiveret. Det anbefales, at du bruger GTID'er med MariaDB-replikering.
```
mysql -u root -s
Indtast MariaDB root-adgangskode
VIS GLOBALE VARIABLER SOM 'gtid_mode';
```
Sørg for, at outputtet af ovenstående forespørgsel er ON eller ON_PERMISSIVE. Hvis du går OFF, skal du køre denne kommando for at aktivere GTID:
```
SET GLOBAL gtid_mode=ON;
```
Bemærk:Hvis GTID oprindeligt var FRA, genstart MariaDB-tjenesten for at gøre denne ændring effektiv.
Trin 2 - Opret en ny bruger til replikering
Opret en ny bruger, som slaveserverne kan bruge til at oprette forbindelse til masteren og få opdateringer. Denne bruger skal have privilegiet REPLICATION SLAVE.
```
mysql -u root -s
OPRET BRUGER 'repluser'@'%' IDENTIFICERET MED 'strong-password';
GIV REPLIKATIONSSLAVE PÅ *.* TIL 'repluser'@'%';
SKYLLE PRIVILEGIER;
```
Trin 3 - Konfigurer MySQL Master-Master-replikering
_a) På Master 1:_
- Stop MariaDB-tjenesten:
```
sudo service mariadb stop
```
- Opret og åbn filen _my.cnf_ i en teksteditor.
- For Debian/Ubuntu-baserede systemer:
```
sudo nano /etc/mysql/my.cnf
```
- For RedHat/CentOS/Fedora-baserede systemer:
```
sudo nano /etc/my.cnf
```
- Rediger filen _my.cnf_ for at inkludere følgende konfiguration:
```
[mysqld]
Server-id'er
server-id=1
Aktiver GTID-tilstand, hvis den ikke allerede er aktiveret
gtid_mode =TIL
Bind til alle netværksgrænseflader
bind-adresse =0.0.0.0
Replikeringskonfiguration
log-bin=/var/log/mysql/mariadb-bin
binlog_do_db=mydb # databasen du ønsker at replikere
Master1 vil modtage sine opdateringer fra master2. Fjern linjen nedenfor, hvis dette er den første master, du konfigurerer.
master_host =192.168.1.20
Valgfrit, hvis det er nødvendigt (nyttigt, hvis du forsøger at genoprette slave fra et nedbrud):
relay-log=/var/log/mysql/mariadb-relay-bin.log
relay-log-index=/var/log/mysql/mariadb-relay-bin.index
```
*Server_id'et i ovenstående konfiguration skal være et unikt ID for denne masterserver.
*Binlog_do_db angiver, hvilken database der skal replikeres.
*Master_host specificerer IP-adressen eller værtsnavnet på den anden masterserver, hvis du opsætter dual master-replikering.
- Gem og afslut konfigurationsfilen _my.cnf_.
- Start MariaDB-tjenesten:
```
sudo service mariadb start
```
_b) På Master 2:_
- Gentag de samme trin som for master 1, bortset fra:
- Angiv et andet server_id (f.eks. server-id=2)
- Angiv IP-adressen eller værtsnavnet for master 1 som master_host.
Trin 4 - Konfigurer slave
_a) På slave:_
- Stop MariaDB-tjenesten:
```
sudo service mariadb stop
```
- Rediger filen _my.cnf_:
```
sudo nano /etc/mysql/my.cnf
```
- Sørg for, at bindingsadressen er sat til 0.0.0.0, så slaven kan acceptere forbindelser fra begge mastere.
- Tilføj følgende linjer:
```
[mysqld]
Indstil server-id til det samme som Master1.
server-id=1
gtid_mode =TIL
log_slave_updates=1
```
- Gem og afslut konfigurationsfilen _my.cnf_.
- Start MariaDB-tjenesten:
```
sudo service mariadb start
```
- Opret forbindelse til slavedatabasen:
```
mysql -u root -s
```
- Konfigurer replikering på slaven:
``` mysql
SKIFT MASTER TIL
MASTER_HOST='master1_ip_address',
MASTER_USER='repluser',
MASTER_PASSWORD='stærk adgangskode',
MASTER_AUTO_POSITION =1;
START SLAVE;
```
_b) Overvåg replikeringsstatus:_
- Tjek replikeringsstatus på både mastere og slaven:
``` mysql
VIS SLAVESTATUS\G;
```
Replikeringsstatussen skal vise, at slaven er tilsluttet og replikerer fra masterne.