Führen Sie die folgenden Schritte aus, um die MariaDB-Master-Master/Slave-Replikation zu konfigurieren:
Schritt 1 – Überprüfen Sie, ob GTID aktiviert ist
Überprüfen Sie vor dem Start, ob GTID aktiviert ist. Es wird empfohlen, GTIDs mit der MariaDB-Replikation zu verwenden.
„
mysql -u root -p
Geben Sie das MariaDB-Root-Passwort ein
GLOBALE VARIABLEN WIE 'gtid_mode' anzeigen;
„
Stellen Sie sicher, dass die Ausgabe der obigen Abfrage ON oder ON_PERMISSIVE ist. Wenn Sie OFF erhalten, führen Sie diesen Befehl aus, um GTID zu aktivieren:
„
SET GLOBAL gtid_mode=ON;
„
Hinweis:Wenn GTID ursprünglich AUS war, starten Sie den MariaDB-Dienst neu, damit diese Änderung wirksam wird.
Schritt 2 – Erstellen Sie einen neuen Benutzer für die Replikation
Erstellen Sie einen neuen Benutzer, den die Slave-Server verwenden können, um eine Verbindung zum Master herzustellen und Updates zu erhalten. Dieser Benutzer sollte über die Berechtigung REPLICATION SLAVE verfügen.
„
mysql -u root -p
ERSTELLEN SIE BENUTZER 'repluser'@'%' IDENTIFIED BY 'strong-password';
GRANT REPLICATION SLAVE ON *.* TO 'repluser'@'%';
FLUSH-PRIVILEGIEN;
„
Schritt 3 – Einrichten der MySQL-Master-Master-Replikation
_a) Auf Master 1:_
- Stoppen Sie den MariaDB-Dienst:
„
sudo service mariadb stop
„
- Erstellen und öffnen Sie die Datei _my.cnf_ in einem Texteditor.
- Für Debian/Ubuntu-basierte Systeme:
„
sudo nano /etc/mysql/my.cnf
„
- Für RedHat/CentOS/Fedora-basierte Systeme:
„
sudo nano /etc/my.cnf
„
– Bearbeiten Sie die Datei _my.cnf_ so, dass sie die folgende Konfiguration enthält:
„
[mysqld]
Server-IDs
Server-ID=1
GTID-Modus aktivieren, falls noch nicht aktiviert
gtid_mode =EIN
An alle Netzwerkschnittstellen binden
Bindungsadresse =0.0.0.0
Replikationskonfiguration
log-bin=/var/log/mysql/mariadb-bin
binlog_do_db=mydb # die Datenbank, die Sie replizieren möchten
Master1 erhält seine Updates von Master2. Entfernen Sie die Zeile unten, wenn dies der erste Master ist, den Sie konfigurieren.
master_host =192.168.1.20
Optional, bei Bedarf (nützlich, wenn Sie versuchen, den Slave nach einem Absturz wiederherzustellen):
Relay-log=/var/log/mysql/mariadb-relay-bin.log
Relay-log-index=/var/log/mysql/mariadb-relay-bin.index
„
*Die server_id in der obigen Konfiguration sollte eine eindeutige ID für diesen Masterserver sein.
*binlog_do_db gibt an, welche Datenbank repliziert werden soll.
*Der Master-Host gibt die IP-Adresse oder den Hostnamen des anderen Master-Servers an, wenn Sie eine Dual-Master-Replikation einrichten.
- Speichern und beenden Sie die Konfigurationsdatei _my.cnf_.
- Starten Sie den MariaDB-Dienst:
„
Sudo-Dienst Mariadb starten
„
_b) Auf Master 2:_
- Wiederholen Sie die gleichen Schritte wie für Master 1, außer:
- Geben Sie eine andere server_id an (z. B. server-id=2)
- Geben Sie die IP-Adresse oder den Hostnamen von Master 1 als Master_Host an.
Schritt 4 – Slave einrichten
_a) Auf Slave:_
- Stoppen Sie den MariaDB-Dienst:
„
sudo service mariadb stop
„
- Bearbeiten Sie die Datei _my.cnf_:
„
sudo nano /etc/mysql/my.cnf
„
- Stellen Sie sicher, dass die Bind-Adresse auf 0.0.0.0 eingestellt ist, damit der Slave Verbindungen von beiden Mastern akzeptieren kann.
- Fügen Sie die folgenden Zeilen hinzu:
„
[mysqld]
Stellen Sie die Server-ID auf die gleiche wie Master1 ein.
Server-ID=1
gtid_mode =EIN
log_slave_updates=1
„
- Speichern und beenden Sie die Konfigurationsdatei _my.cnf_.
- Starten Sie den MariaDB-Dienst:
„
Sudo-Dienst Mariadb starten
„
- Verbinden Sie sich mit der Slave-Datenbank:
„
mysql -u root -p
„
- Konfigurieren Sie die Replikation auf dem Slave:
„MySQL
ÄNDERN SIE MEISTER ZU
MASTER_HOST='master1_ip_address',
MASTER_USER='repluser',
MASTER_PASSWORD='starkes-passwort',
MASTER_AUTO_POSITION =1;
START-SKLAVE;
„
_b) Replikationsstatus überwachen:_
- Überprüfen Sie den Replikationsstatus auf beiden Mastern und dem Slave:
„MySQL
SLAVE-STATUS ANZEIGEN\G;
„
Der Replikationsstatus sollte zeigen, dass der Slave verbunden ist und von den Mastern repliziert.