Website-Suche

So richten Sie die MySQL-Master-Slave-Replikation unter Ubuntu 18.04 ein


Bei der MySQL-Master-Slave-Replikation handelt es sich um ein Verfahren, mit dem Datenbankdateien über einen oder mehrere Knoten in einem Netzwerk repliziert oder kopiert werden können. Dieses Setup bietet Redundanz und Fehlertoleranz, sodass im Falle eines Ausfalls im Master-Knoten die Datenbanken weiterhin im Slave-Knoten wiederhergestellt werden können. Dies gibt Benutzern die Gewissheit, dass in keinem Fall alles verloren geht, da eine Replik der Datenbanken immer noch von einem anderen Server abgerufen werden kann.

In dieser Anleitung erfahren Sie, wie Sie eine MySQL-Datenbank-Master-Slave-Replikation auf einem Ubuntu 18.04-System durchführen.

Voraussetzungen

Im Setup werden wir zwei Server haben, auf denen Ubuntu 18.04 mit den folgenden IP-Adressen läuft.

Master server: 10.128.0.28
Slave server: 10.128.0.29

Lassen Sie uns nun eintauchen und sehen, wie wir das Master-Slave-Replikationssetup auf Ubuntu konfigurieren können.

Schritt 1: Installieren Sie MySQL auf Master- und Slave-Knoten

Ubuntu-Repositorys enthalten Version 5.7 von MySQL. Um alle neuen Funktionen nutzen zu können und potenzielle Probleme zu vermeiden, sollten Sie die neueste MySQL-Version installieren. Aber zuerst aktualisieren wir die beiden Knoten mit dem folgenden apt-Befehl.

sudo apt update

Um MySQL auf beiden Knoten zu installieren, führen Sie den Befehl aus.

sudo apt install mysql-server mysql-client

Öffnen Sie als Nächstes die MySQL-Konfigurationsdatei.

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

Scrollen Sie auf dem Master-Knoten und suchen Sie das Attribut bind-address, wie unten gezeigt.

bind-address 	 =127.0.0.1

Ändern Sie die Loopback-Adresse so, dass sie mit der IP-Adresse des Master-Knotens übereinstimmt.

bind-address  	=10.128.0.28

Geben Sie als Nächstes einen Wert für das Attribut server-id im Abschnitt [mysqld] an. Die von Ihnen gewählte Nummer sollte mit keiner anderen Server-ID-Nummer übereinstimmen. Weisen wir den Wert 1 zu.

server-id	 =1

Kopieren Sie ganz am Ende der Konfigurationsdatei die folgenden Zeilen und fügen Sie sie ein.

log_bin = /var/log/mysql/mysql-bin.log
log_bin_index =/var/log/mysql/mysql-bin.log.index
relay_log = /var/log/mysql/mysql-relay-bin
relay_log_index = /var/log/mysql/mysql-relay-bin.index

Beenden Sie die Konfigurationsdatei und starten Sie den MySQL-Dienst neu, damit die Änderungen auf dem Master-Knoten wirksam werden.

sudo systemctl restart mysql

Geben Sie den Befehl aus, um zu überprüfen, ob der MySQL-Server wie erwartet läuft.

sudo systemctl status mysql

Perfekt! Der MySQL-Server läuft wie erwartet!

Schritt 2: Erstellen Sie einen neuen Benutzer für die Replikation auf dem Masterknoten

In diesem Abschnitt erstellen wir einen Replikationsbenutzer im Masterknoten. Um dies zu erreichen, melden Sie sich wie gezeigt beim MySQL-Server an.

sudo mysql -u root -p

Fahren Sie als Nächstes fort und führen Sie die folgenden Abfragen aus, um einen Replikatbenutzer zu erstellen und Zugriff auf den Replikationsslave zu gewähren. Denken Sie daran, Ihre IP-Adresse zu verwenden.

mysql> CREATE USER 'replication_user'@'10.128.0.29' IDENTIFIED BY 'replica_password';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'replication_user '@'10.128.0.29';

Führen Sie als Nächstes den folgenden Befehl aus.

mysql> SHOW MASTER STATUS\G

Die Ausgabe sollte der unten gezeigten ähneln.

Seien Sie aufmerksam und notieren Sie den Wert mysql-bin.000002 und die Positions-ID 1643. Diese Werte sind entscheidend für die Einrichtung des Slave-Servers.

Schritt 3: Konfigurieren Sie den MySQL-Slave-Server

Gehen Sie zum Slave-Server und öffnen Sie wie beim Master-Server die MySQL-Konfigurationsdatei.

sudo vim  /etc/mysql/mysql.conf.d/mysqld.cnf

Fahren Sie wie beim Master-Server mit der Bearbeitung der folgenden Zeilen fort.

bind-address           = 10.128.0.29

Geben Sie wie zuvor einen Wert für das Attribut server-id im Abschnitt [mysqld] an. Wählen Sie dieses Mal einen anderen Wert. Lass uns mit 2 fortfahren.

server-id		=2 

Fügen Sie die folgenden Zeilen erneut ganz am Ende der Konfigurationsdatei ein.

log_bin = /var/log/mysql/mysql-bin.log
log_bin_index =/var/log/mysql/mysql-bin.log.index
relay_log = /var/log/mysql/mysql-relay-bin
relay_log_index = /var/log/mysql/mysql-relay-bin.index

Als nächstes starten Sie den MySQL-Server auf dem Slave-Knoten neu.

sudo systemctl restart mysql

Wenn Sie fertig sind, speichern Sie den Texteditor und beenden Sie ihn

Melden Sie sich als Nächstes wie gezeigt bei der MySQL-Shell an.

sudo mysql -u root -p

In diesem Schritt müssen Sie einige Konfigurationen vornehmen, die es dem Slave-Server ermöglichen, eine Verbindung zum Master-Server herzustellen. Stoppen Sie jedoch zunächst die Slave-Threads wie gezeigt.

mysql> STOP SLAVE; 

Führen Sie den Befehl aus, damit der Slave-Server den Master-Server replizieren kann.

mysql> CHANGE MASTER TO MASTER_HOST ='10.128.0.28', MASTER_USER ='replication_user', MASTER_PASSWORD ='Saturn@1234', MASTER_LOG_FILE = 'mysql-bin.000002', MASTER_LOG_POS = 1643;

Wenn Sie neugierig genug sind, werden Sie feststellen, dass wir den Wert mysql-bin.00002 und die Positions-ID 1643 verwendet haben, die zuvor nach dem Erstellen des Slave-Replikationsbenutzers angezeigt wurden.

Darüber hinaus wurden die IP-Adresse, der Replikationsbenutzer und das Passwort des Master-Servers verwendet.

Starten Sie später den Thread, den Sie zuvor gestoppt haben.

mysql> START SLAVE;

Schritt 4: Überprüfen Sie die MySQL-Master-Slave-Replikation

Um zu überprüfen, ob das Setup tatsächlich wie erwartet funktioniert, erstellen wir eine neue Datenbank auf dem Master und prüfen, ob sie auf dem MySQL-Slave-Server repliziert wurde.

Melden Sie sich beim Master-Server bei MySQL an.

sudo mysql -u root -p

Lassen Sie uns eine Testdatenbank erstellen. In diesem Fall erstellen wir eine Datenbank namens replication_db.

mysql> CREATE DATABASE replication_db;

Melden Sie sich nun bei Ihrer MySQL-Instanz im Slave-Server an.

sudo mysql -u root -p

Listen Sie nun die Datenbanken auf, die die Abfrage verwenden.

mysql> SHOW DATABASES;

Sie werden feststellen, dass die Datenbank, die Sie auf dem Master erstellt haben, auf dem Slave repliziert wurde. Eindrucksvoll ! Ihre MySQL-Master-Slave-Replikation funktioniert wie erwartet! Sie können nun sicher sein, dass im Falle eines Fehlers Kopien der Datenbankdateien auf den Slave-Server repliziert werden.

Abschluss

In dieser Anleitung haben Sie erfahren, wie Sie ein MySQL Master-Slave-Replikationssetup unter Ubuntu 18.04 einrichten.