So richten Sie die Replikation von Mariadb (Master-Slave) in CentOS/RHEL 7 und Debian 8/9 ein

So richten Sie die Replikation von Mariadb (Master-Slave) in CentOS/RHEL 7 und Debian 8/9 ein

Auch wenn einige es die Leute den Satz hören “Datenbankreplikation„Sie verbinden es häufig mit der Notwendigkeit, mehrere Kopien der gleichen Informationen zu haben, um den Datenverlust im Falle eines Hardwarefehlers oder der Datenbeschädigung zu vermeiden. Während dies in gewissem Maße zutrifft, hat die Datenbankreplikation viel mehr als das gemeinsame Konzept, eine Datenbank- und Datenverfügbarkeit zu sichern.

Mariadb Master-Slave-Replikation in CentOS/Rhel 7 und Debian 8/9

Unter anderem können wir unter anderem in einem Master-Slave-Setup erwähnen:

  1. Backups können auf dem Slave -Server durchgeführt werden, ohne die Schreibvorgänge im Master zu beeinflussen (und von ihnen betroffen zu werden).
  2. Ressourcenintensive Operationen (z. B. Datenanalyse) können am Slave durchgeführt werden, ohne die Leistung des Meisters zu beeinflussen.

In diesem Artikel werden wir erklären, wie Sie die Master-Slave-Replikation in einrichten Mariadb 10.1. Im Gegensatz zur klassischen Replikation stellte Mariadb das Konzept von vor Globale Transaktions -IDs (GTIDs) In v10.0, Dies ermöglicht es, einen Sklaven leicht zu verbinden und sich von einem anderen Master zu replizieren. Darüber hinaus wird der Status des Sklaven auf Crash-Safe-Weise aufgezeichnet (Aktualisierungen des Status werden in derselben Transaktion wie die Aktualisierungen der Daten durchgeführt).

Wenn Sie suchen Mysql Replikation unter CentOS/Rhel 6, Folgen Sie dieser Leitfaden-Setup MySQL (Master-Slave) Replikation auf CentOS/RHEL 6

Installation von Mariadb 10.1 in Centos/Rhel 7 und Debian 8/9

Unsere Testumgebung besteht aus den folgenden Maschinen (beide sind Centos 7):

Meister: 192.168.0.18 Sklave: 192.168.0.19 

Um die neueste Version von MariadB zu installieren, müssen wir unsere Server ihre Repositorys hinzufügen. Wenn Sie eine ältere Version von Mariadb verwenden, sagen Sie 5.5, erwägen Sie ein Upgrade auf die neuesten 10.1 Version mit dem folgenden Artikel.

  1. Upgrde mariadb 5.5 bis mariadb 10.1

In Centos/Rhel

Erstellen Sie eine Datei mit dem Namen Mariadb.Repo innen /etc/yum.Repos.D mit den folgenden Inhalten auf beiden Meister Und Sklave Systeme:

# Mariadb 10.1 CentOS Repository-Liste-Erstellt 2016-01-23 14:16 UTC # http: // mariadb.org/mariadb/repositories/[mariadb] name = mariadb baseUrl = http: // yum.Mariadb.org/10.1/Centos7-AMD64 gpgkey = https: // yum.Mariadb.org/rpm-gpg-key-mariadb gpgcheck = 1 

Speichern Sie die Datei und installieren Sie MariADB mit YUM auf beiden Servern:

# yum update && yum install mariadb-server mariadb-client 

In Debian/Ubuntu

Fügen Sie den Schlüssel zum Authentifizieren von Paketen und das MariADB -Repository hinzu:

# APT-Get Installieren Sie Software-Properties-Common # Apt-Key Adv--Recv-Keys-KeyServer Keyserver.Ubuntu.com 0xcbcb082a1bb943db # add-apt-Repository 'Deb [Arch = AMD64, I386] http: // Mirror.Edatel.Netz.co/mariadb/repo/10.1/Debian Jessie hauptsächlich' 

Notiz: Verteilung ersetzen Name Und Code Name In der obigen hervorgehobenen Linie.

Installieren Sie mit apt-get Befehl:

# APT-Get Update # APT-GET-Installieren Sie Mariadb-Server 
Überprüfen Sie die Mariadb-Version auf dem Master-Slave-Server

Sobald Sie Mariadb installiert haben, führen Sie die aus mysql_secure_installation Vorgehensweise auf Master und Slave, lassen Sie uns eine Beispiel -Testdatenbank in der Master -Maschine einrichten.

Einrichten einer Beispiel -MySQL -Datenbank auf Master

Wir werden nun auf dem Master -Server die einrichten Mitarbeiter Datenbank von https: // github.com/datacharmer/test_db (der einen Datensatz von liefert 4 Millionen Rekorde verbreiten sich über sechs Tische) in zwei einfachen Schritten:

Klonen Sie das Repository und importieren Sie die Beispieldatenbank in Ihre MariADB -Installation:

# Git Clone https: // github.com/datacharmer/test_db # cd test_db # mysql < employees.sql 

Konfigurieren des MySQL -Servers auf dem Master

Befolgen Sie die folgenden Schritte, um den Master zu konfigurieren:

SCHRITT 1: Bearbeiten die /etc/mein.CNF Datei. Unter dem [Mysqld] Abschnitt fügen Sie die folgenden vier Zeilen hinzu:

log-bin-bin server_id = 1 replicate-do-db = Mitarbeiter Bind-Address = 192.168.0.18 

und starten Sie Mariadb neu:

# Systemctl neu starten Sie Mariadb neu 

SCHRITT 2: Melden Sie sich beim MariADB -Server als Root an, erstellen Sie den Benutzer -Sklaven und weisen Sie die erforderlichen Zuschüsse zu:

Mariadb [(keine)]> Erstellen Sie den Benutzer "Slave"@'localhost', der von 'SlavePassword' identifiziert wurde; Mariadb [(keine)]> Replikationssklave auf * gewähren.* Mit 'SlavePassword' mit der Zuschussoption identifiziert; Mariadb [(keine)]> Spülung Privilegien; Mariadb [(keine)]> Spülentische mit Leseschloss; Mariadb [(keine)]> Master -Status anzeigen; 

Der zuletzt Befehl (Master Status anzeigen) Gibt die aktuelle Position im Binärprotokoll zurück (die genauen Koordinaten, die genau angeben, an welchem ​​Punkt der Slave wieder nachbilden sollte:

Konfigurieren Sie MySQL Master für die Replikation

SCHRITT 3: Verlassen Sie die Mariadb -Eingabeaufforderung (mit Ausfahrt;) und verwenden Sie den folgenden Befehl, um eine Momentaufnahme der Mitarbeiterdatenbank aufzunehmen. Wenn Sie schlagen Eingeben, Sie werden aufgefordert, das Passwort für Root, das Sie früher eingerichtet haben mysql_secure_installation:

# Mysqldump -U Root -P -Mitarbeiter> Mitarbeiter -Dump.sql 

Nachdem der Dump abgeschlossen ist, stellen Sie eine Verbindung zum Datenbankserver erneut her, um die Tabellen zu entsperren und dann beenden:

Mariadb [(keine)]> Tische entsperren; Mariadb [(keine)]> Ausfahrt; 

SCHRITT 4: Kopieren Sie den Dump in den Sklaven:

# SCP-Mitarbeiter-Dump.SQL [E -Mail geschützt]:/root/ 

Schritt 5: Leiten Sie die mysql_upgrade Vorgehensweise zum Upgrade der Systemtabellen (Sie werden aufgefordert, das Mariadb -Root -Passwort einzugeben):

# mysql_upgrade -u root -p 

Schritt 6: Erlauben Sie den Datenbankdienst über die Firewall:

# Firewall-cmd --add-service = mysql # Firewall-cmd --add-service = mysql --permanent # Firewall-cmd-Reload 

Konfigurieren wir nun den Sklaven.

Konfigurieren von MySQL -Server auf Slave

Um den Sklaven zu konfigurieren, befolgen Sie die folgenden Schritte:

SCHRITT 1: Erstellen Sie das Konto, um die Replikationsaufgaben auszuführen. Stellen Sie eine Verbindung zum lokalen Mariadb -Server mit:

# Mysql -u root -p 

und geben Sie das zuvor eingerichtete Passwort ein.

SCHRITT 2: Erstellen Sie den Benutzer und eine leere Datenbank, sobald sie mit dem Datenbankserver verbunden sind, und ergeben Sie Berechtigungen:

Mariadb [(keine)]> Datenbankmitarbeiter erstellen; Mariadb [(keine)]> Gewähren Sie alle Privilegien für Mitarbeiter.* Zu 'slave'@'localhost' mit der Zuschussoption; Mariadb [(keine)]> Spülung Privilegien; 

SCHRITT 3: Beenden Sie die Mariadb -Eingabeaufforderung und laden Sie den auf dem Master -Server erstellten Müllhalter:

# MySQL -U Root -P -Mitarbeiter < employees-dump.sql 

SCHRITT 4: Bearbeiten die /etc/mein.CNF Datei, um einen Server zuzuweisen AUSWEIS zum Sklaven unter dem [Mysqld] Abschnitt. Beachten Sie, dass es eine andere Ganzzahl sein muss als 1, wie wir benutzten 1 im Meister:

server_id = 2 replicate-do-db = Mitarbeiter 

Starten Sie den Datenbankserver neu:

# Systemctl neu starten Sie Mariadb neu 

Schritt 5: Leiten Sie die mysql_upgrade Vorgehensweise zum Upgrade der Systemtabellen (Sie werden aufgefordert, das Mariadb -Root -Passwort einzugeben):

# mysql_upgrade -u root -p 

Schritt 6: Sobald die Müllkippe in den Sklaven importiert wurde, sind wir nur wenige Schritte, um wieder zu replizieren. Melden Sie sich in der Datenbank an und führen Sie die folgenden Befehle in der Mariadb -Eingabeaufforderung aus. Besondere Aufmerksamkeit auf die Master_log_file Und Master_log_pos Variablen, die mit den von den zurückgegebenen Werten übereinstimmen sollten Master Status anzeigen In Schritt 2 von "den Master" oben konfigurieren.

Mariadb [(keine)]> Ändern Sie den Master in master_host = "192.168.0.18 ", master_user =" slave ", master_password =" slavepassword ", master_port = 3306, master_log_file =" Master-Bin.000001 ", master_log_pos = 314, master_connect_retry = 10, master_use_gtid = current_pos; 

Schritt 7: Starten Sie den Sklaven und überprüfen Sie seinen Status, ohne die Mariadb -Eingabeaufforderung zu verlassen:

Mariadb [(keine)]> Sklave starten; Mariadb [(keine)]> Slave Status \ g; 

Nicht, dass Sie das jetzt brauchen, aber beachten Sie, dass Sie den Sklaven mit:

Mariadb [(keine)]> Sklave aufhalten; 

Wenn der Slave Status \ g; Der Befehl gibt alle Fehler zurück. Verwenden Sie diese Fehler, um Fehler zu beheben und dann auszuführen Sklave starten; wieder testen.

Testen Sie die MySQL/Mariadb -Datenbankreplikation

Fügen wir dem einen Rekord hinzu Mitarbeiter Tabelle im Master -Server:

Mariadb [(keine)]> Einfügen in Mitarbeiter (EMP_NO, Birth_date, First_Name, Last_name, Geschlecht, Hire_Date) Werte (500000, '1983-07-12', 'Dave', 'Null', 'M', '2014-12-12'); 

Stellen Sie dann sicher, dass diese Änderung im Sklaven repliziert wurde:

Mariadb [(keine)]> Mitarbeiter verwenden; Mariadb [(keine)]> Wählen Sie * von Mitarbeitern aus, wobei emp_no = 500000; 
Überprüfen Sie die Replikation von Mariadb Mysql Datenbank

Wie Sie sehen können, funktioniert die Replikation korrekt vom Meister zu Sklave.

Zusammenfassung

In diesem Artikel haben wir erklärt, wie Sie die neueste Version von Mariadb in installieren können CentOS/Rhel 7 und Debian 8/9 und diskutierten, wie man Master-Slave-Replikation mit GTIDs eingerichtet hat. Für weitere Informationen möchten Sie sich möglicherweise auf das MariADB -Replikationshandbuch beziehen. Zögern Sie nicht, uns mit dem folgenden Formular zu kontaktieren, wenn Sie Fragen oder Kommentare haben.