GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Master-Slave-Replikation mit MariaDB

So habe ich die Master-Slave-Replikation mit MariaDB konfiguriert. Da MariaDB ein Fork von MySQL ist, sollten Sie denselben Schritten folgen.

Mein Setup

Ich gehe davon aus, dass Sie bereits zwei Maria/MySQL-Server laufen haben. Das sind die Features von mir:

  • OS:Debian testet „Bookworm“
  • MariaDB-Version:10.5.12

Ich arbeite mit zwei virtuellen Maschinen, um die Slave-VM zu erstellen, habe ich die Master-VM dupliziert.

  • Master:192.168.122.13
  • Slave:192.168.122.223

Wenn Sie keine Maria- oder MySQL-Datenbank haben, haben wir hier auf unixcop ein paar Tutorials, auch hier, hier oder hier.

Meister

Wie ich bereits sagte, gehe ich davon aus, dass Sie bereits Maria oder MySQL am Laufen haben. Wir müssen einige Konfigurationen auf dem Master und dann auf dem Slave-Host vornehmen.

Bearbeiten Sie /etc/mysql/mariadb.conf.d/50-server.cnf (oder die entsprechende Datei in Ihrem Setup) und ändern Sie die folgenden Zeilen:

bind-address = <your.master.host.ip>
server-id=1

Starten Sie MariaDB neu und erstellen Sie einen Benutzer mit Replikationsberechtigungen:

MariaDB [(none)]> CREATE USER 'esclavo'@'192.168.122.223' IDENTIFIED BY 'SlavePass' ;
MariaDB [(none)]> GRANT REPLICATION SLAVE ON *.* TO 'esclavo'@'192.168.122.223';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> FLUSH TABLES WITH READ LOCK;

Wählen Sie einen beliebigen Benutzernamen und ein beliebiges Passwort, esclavo bedeutet Sklave auf spanisch. Stellen Sie die IP-Adresse Ihres Slaves MariaDB ein. Als nächstes können Sie den Status mit SHOW MASTER STATUS sehen.

Der (fast, wir kommen später darauf zurück) letzte Schritt auf dem Master besteht darin, alle Daten im Master-Server auf den Slave zu kopieren. Erstellen wir einen Dump mit:

root@my1:~# mysqldump -u root --all-databases -p  --master-data > data.sql

Sklave

Ändern Sie auf dem Slave-Server zuerst die Konfigurationsdatei /etc/mysql/mariadb.conf.d/50-server.cnf in den gleichen Zeilen wie der Master:

bind-address = <your.slave.host.ip> 
server-id=1

Starten Sie MariaDB neu und laden Sie den Dump vom Master mit:

root@my2:/home/gonz# mysql -uroot < data.sql

Stoppen Sie dann den Slave, setzen Sie den Master-Host und starten Sie den Slave mit den folgenden Befehlen:

root@my2:/home/gonz# mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 41
Server version: 10.5.12-MariaDB-1-log Debian 11

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> stop slave;
MariaDB [(none)]> CHANGE MASTER TO MASTER_HOST='192.168.122.13', MASTER_USER='esclavo',MASTER_PASSWORD='SlavePass';
MariaDB [(none)]> START SLAVE;

Vergessen Sie nicht, Host-IP, Benutzer und Passwort auf Ihre Werte zu ändern, wenn Sie diese Befehle einfach kopieren und einfügen;).

Testen und Korrigieren

Das sollte es tun. Wenn alles wie erwartet funktioniert, sollten Sie eine Master-Slave-Replikation mit MariaDB haben.

Sie können jetzt eine Datenbank auf dem Master erstellen und diese Datenbank sollte automatisch im Slave erscheinen. Aber hat bei mir nicht funktioniert. Ich habe eine Datenbank auf dem Master erstellt mit:

MariaDB [(none)]> CREATE DATABASE somedatabase;

Und es wurde auf dem Sklaven nicht repliziert. Um zu sehen, warum, habe ich den Slave-Server ausgeführt:

MariaDB [(none)]> show slave status\G ;

Als ich diesen Fehler gegoogelt habe, wurde vorgeschlagen, den Benutzer esclavo zu löschen und Flush-Privilegien. Beenden Sie auf dem Slave-Server auch den Slave, bevor Sie den Benutzer löschen, und starten Sie den Slave, nachdem Sie die Berechtigungen geleert haben:

MariaDB [(none)]> stop slave;
MariaDB [(none)]> drop user 'esclavo'@'192.168.122.223';
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> start slave;

Und das ist für mich behoben, wie Sie im Screenshot sehen können, gibt es jetzt eine Datenbankdatenbank auf dem Slave-Server. Und es ist leer. Ich ging dann zurück zum Master, um eine Tabelle zu erstellen und mit Daten zu füllen:

Der letzte Schritt besteht darin, auf dem Slave zu überprüfen, ob die Tabelle erstellt wurde und Daten darin enthalten sind:

Nur um sicherzugehen, können Sie den Slave-Status noch einmal überprüfen (oder zu einem anderen Zeitpunkt in der Zukunft, wenn etwas nicht zu stimmen scheint).

Und schließlich habe ich die Master-Slave-Replikation mit MariaDB eingerichtet.


Linux
  1. So richten Sie die MySQL-Master-Slave-Replikation ein

  2. So konfigurieren Sie die MySQL-Master-Slave-Replikation unter Ubuntu 18.04

  3. Einrichten der Master-Master-Replikation mit MySQL unter Debian 8 (Jessie)

  4. So ersetzen Sie MySQL durch MariaDB unter CentOS 6

  5. So richten Sie die MariaDB-Master-Slave-Replikation unter Ubuntu 18.04 ein

Master-Master-Replikation mit MariaDB

So richten Sie die MariaDB-Master-Slave-Replikation unter CentOS 7 ein

So installieren Sie den OpenLiteSpeed-Webserver mit MariaDB und PHP

Wie richte ich die MySQL-Master-Slave-Replikation auf RHEL 7 ein?

So verwalten Sie Postfächer mit RoundCube unter CentOS 7

8 Schritte zur Installation von MirthConnect mit MySQL / MariaDB unter Linux