Följ dessa steg för att konfigurera MariaDB Master-master/slave-replikering:
Steg 1 – Kontrollera om GTID är aktiverat
Innan du börjar, kontrollera om GTID är aktiverat. Det rekommenderas att du använder GTID med MariaDB-replikering.
```
mysql -u root -s
Ange MariaDB root-lösenord
VISA GLOBALA VARIABLER SOM 'gtid_mode';
```
Se till att utdata från ovanstående fråga är ON eller ON_PERMISSIVE. Om du går AV, kör det här kommandot för att aktivera GTID:
```
SET GLOBAL gtid_mode=PÅ;
```
Obs:Om GTID från början var AV, starta om MariaDB-tjänsten för att göra denna ändring effektiv.
Steg 2 - Skapa en ny användare för replikering
Skapa en ny användare som slavservrarna kan använda för att ansluta till mastern och få uppdateringar. Den här användaren bör ha REPLIKATIONSSLAV-behörigheten.
```
mysql -u root -s
SKAPA ANVÄNDARE 'repluser'@'%' IDENTIFIERAD MED 'strong-password';
BIDRAG REPLIKATIONSSLAV PÅ *.* TILL 'repluser'@'%';
SPOLA PRIVILEGIER;
```
Steg 3 - Konfigurera MySQL Master-Master-replikering
_a) På Master 1:_
- Stoppa MariaDB-tjänsten:
```
sudo service mariadb stopp
```
- Skapa och öppna filen _my.cnf_ i en textredigerare.
- För Debian/Ubuntu-baserade system:
```
sudo nano /etc/mysql/my.cnf
```
- För RedHat/CentOS/Fedora-baserade system:
```
sudo nano /etc/my.cnf
```
- Redigera filen _my.cnf_ så att den inkluderar följande konfiguration:
```
[mysqld]
Server-ID:n
server-id=1
Aktivera GTID-läge om det inte redan är aktiverat
gtid_mode =PÅ
Bind till alla nätverksgränssnitt
bind-adress =0.0.0.0
Replikeringskonfiguration
log-bin=/var/log/mysql/mariadb-bin
binlog_do_db=mydb # databasen du vill replikera
Master1 kommer att få sina uppdateringar från master2. Ta bort raden nedan om detta är den första master du konfigurerar.
master_host =192.168.1.20
Valfritt, om det behövs (användbart om du försöker återställa slav från en krasch):
relay-log=/var/log/mysql/mariadb-relay-bin.log
relay-log-index=/var/log/mysql/mariadb-relay-bin.index
```
*Server_id i ovanstående konfiguration bör vara ett unikt ID för denna huvudserver.
*Binlog_do_db anger vilken databas som ska replikeras.
*Master_host anger IP-adressen eller värdnamnet för den andra huvudservern om du ställer in dubbel masterreplikering.
- Spara och avsluta konfigurationsfilen _my.cnf_.
- Starta MariaDB-tjänsten:
```
sudo service mariadb start
```
_b) På Master 2:_
- Upprepa samma steg som för master 1, förutom:
- Ange ett annat server_id (t.ex. server-id=2)
- Ange IP-adressen eller värdnamnet för master 1 som master_host.
Steg 4 - Konfigurera slav
_a) På slav:_
- Stoppa MariaDB-tjänsten:
```
sudo service mariadb stopp
```
- Redigera filen _my.cnf_:
```
sudo nano /etc/mysql/my.cnf
```
- Se till att bindningsadressen är inställd på 0.0.0.0 så att slaven kan acceptera anslutningar från båda masterna.
- Lägg till följande rader:
```
[mysqld]
Sätt server-ID till samma som Master1.
server-id=1
gtid_mode =PÅ
log_slave_updates=1
```
- Spara och avsluta konfigurationsfilen _my.cnf_.
- Starta MariaDB-tjänsten:
```
sudo service mariadb start
```
- Anslut till slavdatabasen:
```
mysql -u root -s
```
- Konfigurera replikering på slaven:
``` mysql
BYT MASTER TILL
MASTER_HOST='master1_ip_address',
MASTER_USER='repluser',
MASTER_PASSWORD='starkt lösenord',
MASTER_AUTO_POSITION =1;
STARTA SLAV;
```
_b) Övervaka replikeringsstatus:_
- Kontrollera replikeringsstatus på både master och slav:
``` mysql
VISA SLAVSTATUS\G;
```
Replikeringsstatusen bör visa att slaven är ansluten och replikerar från masterna.