Zurück zum Blog

Einrichten der Replikation in MySQL unter Ubuntu

Einrichten der Replikation in MySQL unter Ubuntu

MySQL-Replikation ist eine interessante Funktion, mit der Benutzer mehrere Kopien einer oder mehrerer MySQL-Datenbanken verwalten können. Die Daten werden automatisch von Quell- auf Replika-datenbanken kopiert. Dies kann in zahlreichen Situationen nützlich sein, z. B. beim Arbeiten mit den Daten, ohne die Hauptdatenbank zu gefährden, bei der Datensicherung oder bei der Skalierung des Datenbankzugriffs usw.

In dieser Anleitung werden wir die Schritte zur Einrichtung einer MySQL-Instanz auf einem Server als Quelldatenbank durchgehen und anschließend eine MySQL-Instanz auf einem anderen Server so konfigurieren, dass sie als deren Replika fungiert.

Voraussetzungen

Diese Anleitung zeigt ein sehr einfaches Beispiel für eine MySQL-Replikation. Sie umfasst eine Quell- und eine Replika-datenbank. Die Quell-datenbank ist die primäre Kopie der Datenbank, während die Replika-datenbank die Replika der Quell-datenbank sein wird. Für unsere Demonstration sind zwei Server mit den folgenden IP-Adressen konfiguriert:

  • Quellserver: 31.171.240.179
  • Replika-Server: 31.171.250.139

Jeder Server ist mit der neuesten Ubuntu 20.04 Server-Konfiguration konfiguriert. Befolgen Sie zunächst die Schritte des Tutorials, die zeigen, wie Sie Ihren Ubuntu-Server einrichten. Beachten Sie, dass die Anzahl der Replika-Datenbanken auch größer sein kann. Diese Anleitung setzt voraus, dass Sie MySQL bereits installiert und konfiguriert haben. Benötigen Sie Hilfe bei der MySQL-Installation? Diese Anleitung zeigt ausführlich die Schritte zur MySQL-Installation und grundlegenden Verwendung.

Kurz gesagt, hier sind die Pakete, die Sie benötigen:

Die Firewalls auf beiden Systemen sollten so konfiguriert sein, dass sie Datenverkehr von beiden Systemen auf Port 3306 zulassen. Dies ist der Standardport für MySQL. Mehr über die UFW-Grundlagen mit einer Demonstration erfahren Sie in unserem Blogbeitrag.

Konfiguration der Quelldatenbank

  • Anpassen der MySQL-Konfiguration

MySQL verwendet my.cnf als primäre Konfigurationsdatei. Wir werden my.cnf aktualisieren, um den Server als Quelle zu bestimmen. Öffnen Sie zunächst die Konfigurationsdatei mit einem Texteditor:

Fügen Sie dann die folgenden Zeilen unter dem Abschnitt mysqld hinzu:

Replication in MySQL 4

Was bedeuten diese Zeilen?

  • bind-address: Dies ist der Eintrag, der die Zuordnung zwischen einem Dienst und einer IP-Adresse definiert. Standardmäßig kann der Wert 127.0.0.1 (localhost) sein. Der neue Wert ist die IP-Adresse des Servers.
  • server-id: Bei der MySQL-Replikation muss jeder Server eine eindeutige Server-ID haben. Dies kann eine beliebige Zahl sein. Der Einfachheit halber ist sie auf 1.
  • log_bin: Hier werden die tatsächlichen Details der Replikation gespeichert. Die Replika-Datenbank kopiert alles, was im Protokoll registriert ist.
  • binlog_do_db: Dieser Eintrag bestimmt die Datenbank, die auf dem Replika-Server repliziert werden soll. Es kann mehr als eine Datenbank geben. Hier ist die Beispieldatenbank newdatabase.

Speichern Sie nach den Änderungen die Konfigurationsdatei. MySQL muss neu gestartet werden, um die Änderungen an der my.cnf:

  • Berechtigungen für den Replika-Benutzer erteilen

Der nächste Schritt besteht darin, einen Replika-Benutzer zu erstellen und entsprechende Berechtigungen zu erteilen. Dies muss über die MySQL-Shell erfolgen. Starten Sie zunächst die MySQL-Shell:

Erstellen Sie als Nächstes einen dedizierten Benutzer für die Replika-Datenbank. Ändern Sie den Benutzernamen und das Passwort entsprechend:

Erteilen Sie dem Benutzer nun die entsprechenden Berechtigungen:

Mehr über MySQL-Benutzer und -Berechtigungen erfahren Sie in unserem Blogbeitrag. Laden Sie als Nächstes die Berechtigungstabelle neu, damit die Änderungen wirksam werden:

FLUSH PRIVILEGES

  • Anpassen der Datenbank

Wir benötigen eine Kopie der Quelldatenbank auf dem Replikat. Es ist möglich, die Struktur manuell aufzubauen. In den meisten Fällen ist das jedoch ziemlich unpraktisch. Daher ist der direkte Export der Datenbank die optimalste Lösung. In diesem Beispiel ist die Quelldatenbank newdatabase. Ändern Sie die aktuelle Datenbank:

Der folgende Befehl sperrt die Datenbank und verhindert neue Änderungen:

Überprüfen Sie anschließend den Datenbankstatus:

Replication in MySQL 3

Ab dieser Position beginnt die Replikatdatenbank mit der Replikation von der Quelle. Diese Zahlen werden später nützlich sein, bewahren Sie sie also auf. Wenn Änderungen im selben Fenster vorgenommen werden, entsperrt MySQL die Datenbank automatisch. Daher wird empfohlen, die folgenden Schritte in einem anderen Terminal-Tab oder -Fenster auszuführen. Die Datenbank ist immer noch gesperrt. Exportieren Sie sie in eine portable SQL-Datei:

Die Aufgabe ist nun erledigt. Entsperren Sie als Nächstes die Datenbank:

Beenden Sie schließlich die Shell:

Replikat-Konfiguration

Es ist nun an der Zeit, die Replikatdatenbank zu konfigurieren.

  • Importieren der Quelldatenbank

Wir benötigen eine Kopie der Quelldatenbank auf dem Replikatserver. Dazu verwenden wir die zuvor exportierte SQL-Datei. Starten Sie die MySQL-Shell:

Erstellen Sie danach eine leere Datenbank mit demselben Datenbanknamen:

Beenden Sie als Nächstes die Shell:

Importieren Sie nun die SQL-Datei in die Datenbank:

sudo mysql -u

  • Anpassen der MySQL-Konfiguration

In der MySQL-Konfigurationsdatei müssen einige Dinge deklariert werden. Öffnen Sie die Konfigurationsdatei in einem Texteditor:

Die folgenden Einträge gehören in den Bereich mysqld . Andernfalls funktioniert es nicht. Der erste ist die Server-ID. Wie bereits erwähnt, muss diese für alle Server in der Quelle-Replikat-Replikationskonfiguration eindeutig sein. Zur Demonstration ist sie auf 2:

Fügen Sie als Nächstes die folgenden Zeilen hinzu:

Replication in MySQL 2

Hier ist nur relay-log ein neuer Eintrag. Es ist das Protokoll, das der Replikatserver während der Replikation erstellt. Das Protokollformat ist dasselbe wie das des Binärprotokolls. Speichern Sie die Konfigurationsdatei und starten Sie MySQL neu:

  • Aktivieren der Replikation

Schließlich sind wir bereit, die Replikation aus MySQL heraus zu aktivieren. Starten Sie die MySQL-Shell:

Führen Sie den folgenden Befehl aus. Ändern Sie zuerst die IP-Adresse, den Benutzernamen und die Passwörter entsprechend:

CHANGE MASTER TO MASTER_HOST

Der Befehl bewirkt Folgendes:

  • Der aktuelle Server wird als Replikat des Quellservers markiert.
  • Der Replikatserver verfügt über die korrekten Anmeldedaten.
  • Der Replikatserver weiß, ab wo er mit der Replikation beginnen soll. Erinnern Sie sich an den Datenbankstatus, den wir auf dem Quellserver überprüft haben? Die Quelldatei und die Protokollposition stammen von dort.

Aktivieren Sie schließlich den Replikatserver:

START REPLICA

  • Verschiedenes

Müssen Sie die Details des aktuellen Status des Replikats überprüfen? Führen Sie den folgenden Befehl in der MySQL-Shell aus. Das \G am Ende dient dazu, die Texte neu anzuordnen, um sie lesbarer zu machen:

Replication in MySQL 1

Wenn ein Verbindungsproblem vorliegt, versuchen Sie, den Replikatserver zu starten, um dieses zu überspringen:

Fazit

Die MySQL-Replikation hat viele Auswirkungen. Dies ist nur eine kurze Demonstration ihrer Grundform. Sie lässt sich jedoch leicht auf Konfigurationen mit mehreren Source-Replica-Instanzen erweitern. Die gleichen Schritte gelten auch für alle komplexeren Konfigurationen auf höherer Ebene. Es ist immer eine gute Idee, jede Konfiguration im Anschluss zu testen. Versuchen Sie, einige insertdelete oder update Befehle auf der Quell-Datenbank auszuführen. Wenn die Einrichtung funktioniert, sollte die Replica-Datenbank alles ordnungsgemäß übernehmen.

Darüber hinaus können Sie einen Blick auf weitere Ressourcen in unserem Blog werfen, die sich damit befassen, was Sie mit MySQL tun können:

Viel Spaß beim Computing!

 

author

Hark Labs

Autor · CloudSigma

Preslav Dobrev ist ein kreativer Designer bei CloudSigma und konzentriert sich auf eine konsistente Unternehmensidentität durch traditionelle und innovative Marketingkanäle. Er versteht es meisterhaft, künstlerische Vision mit strategischem Marketing zu verbinden, um wirkungsvolle Markengeschichten zu schaffen.

Kommentare

Noch keine Kommentare. Schreiben Sie den ersten.