Umfassende Interpretation der MySQL Master-Slave-Replikation, vom Prinzip bis zur Installation und Konfiguration

Umfassende Interpretation der MySQL Master-Slave-Replikation, vom Prinzip bis zur Installation und Konfiguration

Warum brauchen wir Master-Slave-Replikation?

1. In einem komplexen Geschäftssystem gibt es ein Szenario, in dem eine SQL-Anweisung die Tabelle sperren muss, was dazu führt, dass der Lesedienst vorübergehend nicht verwendet werden kann, was den laufenden Geschäftsbetrieb erheblich beeinträchtigt. Verwenden Sie die Master-Slave-Replikation, damit die Master-Datenbank für das Schreiben und die Slave-Datenbank für das Lesen verantwortlich ist. Auf diese Weise kann der normale Geschäftsbetrieb durch Lesen aus der Slave-Datenbank gewährleistet werden, selbst wenn die Master-Datenbank die Tabelle sperrt.

2. Führen Sie ein Hot-Backup der Daten durch

3. Erweiterung der Architektur. Mit zunehmendem Geschäftsvolumen ist die E/A-Zugriffsfrequenz zu hoch und kann von einer einzelnen Maschine nicht mehr bewältigt werden. In diesem Fall werden mehrere Datenbanken zum Speichern von Daten verwendet, wodurch die Häufigkeit des Festplatten-E/A-Zugriffs verringert und die E/A-Leistung einer einzelnen Maschine verbessert wird.

Was ist MySQL-Master-Slave-Replikation?

MySQL Master-Slave-Replikation bedeutet, dass Daten von einem Masterknoten eines MySQL-Datenbankservers auf einen oder mehrere Slaveknoten kopiert werden können. MySQL verwendet standardmäßig asynchrone Replikation, sodass Slave-Knoten nicht ständig auf den Master-Server zugreifen müssen, um ihre eigenen Daten zu aktualisieren. Datenaktualisierungen können über Remoteverbindungen durchgeführt werden. Slave-Knoten können alle Datenbanken oder bestimmte Datenbanken oder bestimmte Tabellen in der Master-Datenbank kopieren.

MySQL-Replikationsprinzip

Prinzip:

(1) Der Master-Server protokolliert Datenänderungen in einem Binärlog. Wenn sich Daten auf dem Master ändern, werden die Änderungen in das Binärlog geschrieben.

(2) Der Slave-Server erkennt in einem bestimmten Zeitintervall, ob sich das Master-Binärprotokoll geändert hat. Wenn dies der Fall ist, startet er einen I/OThread, um das Master-Binärereignis anzufordern.

(3) Gleichzeitig startet der Masterknoten einen Dump-Thread für jeden I/O-Thread, um ihm binäre Ereignisse zu senden und sie im lokalen Relay-Protokoll des Slave-Knotens zu speichern. Der Slave-Knoten startet den SQL-Thread, um das binäre Protokoll aus dem Relay-Protokoll zu lesen und es lokal wiederzugeben, damit seine Daten mit denen des Masterknotens übereinstimmen. Schließlich wechseln der I/OThread und der SQLThread in einen Ruhezustand und warten darauf, beim nächsten Mal geweckt zu werden.

Das heißt:

  • Die Slave-Bibliothek generiert zwei Threads, einen I/O-Thread und einen SQL-Thread.
  • Der E/A-Thread fordert das Binärprotokoll der Masterdatenbank an und schreibt das erhaltene Binärprotokoll in die lokale Relay-Protokolldatei.
  • Die Master-Bibliothek generiert einen Log-Dump-Thread, um das Binärprotokoll an den E/A-Thread der Slave-Bibliothek zu übertragen.
  • Der SQL-Thread liest die Protokolle in der Relay-Protokolldatei, analysiert sie in SQL-Anweisungen und führt sie nacheinander aus.

Beachten:

1 – Der Master zeichnet die Operationsanweisung im Binlog-Protokoll auf und erteilt dem Slave dann die Berechtigung zur Remoteverbindung (der Master muss die Binärprotokollfunktion von Binlog aktivieren; normalerweise aktiviert der Slave aus Gründen der Datensicherheit auch die Binlog-Funktion).

2 – Slave startet zwei Threads: IO-Thread und SQL-Thread. Darunter: Der IO-Thread ist dafür verantwortlich, den Binlog-Inhalt des Masters in das Relay-Protokoll zu lesen; der SQL-Thread ist dafür verantwortlich, den Binlog-Inhalt aus dem Relay-Protokoll zu lesen und ihn in der Datenbank des Slaves zu aktualisieren, um sicherzustellen, dass die Slave-Daten mit den Master-Daten übereinstimmen.

3 - Für die MySQL-Replikation sind mindestens zwei MySQL-Dienste erforderlich. Natürlich können MySQL-Dienste auf verschiedene Server verteilt werden, oder es können mehrere Dienste auf einem Server gestartet werden.

4 - Die MySQL-Replikation stellt am besten sicher, dass die MySQL-Version auf dem Master- und dem Slave-Server identisch ist (wenn die Versionskonsistenz nicht erreicht werden kann, stellen Sie sicher, dass die Version des Masterknotens niedriger ist als die Version des Slave-Knotens).

5 - Die Zeit zwischen Master- und Slave-Knoten muss synchronisiert werden

Konkrete Schritte:

1. Die Slave-Datenbank stellt eine Verbindung zur Master-Datenbank her, indem sie die Anweisung „change master to“ manuell ausführt, alle Bedingungen für den verbundenen Benutzer angibt (Benutzer, Kennwort, Port, IP) und der Slave-Datenbank die Startposition des Binärprotokolls mitteilt (Dateiname, Positionsnummer). Starten Sie den Slave.

2. Stellen Sie eine Verbindung zwischen dem IO-Thread der Slave-Bibliothek und dem Dump-Thread der Master-Bibliothek her.

3. Der Slave-E/A-Thread initiiert eine Binärprotokollanforderung an den Master basierend auf dem Dateinamen und der Positionsnummer, die durch die Anweisung „Change Master to“ bereitgestellt werden.

4. Der Dump-Thread der Masterdatenbank sendet das lokale Binärprotokoll in Form von Ereignissen basierend auf der Anforderung der Slavedatenbank an den IO-Thread der Slavedatenbank.

5. Empfangen Sie Binlog-Ereignisse vom IO-Thread der Bibliothek und speichern Sie sie im lokalen Relay-Log. Die übertragenen Informationen werden in master.info aufgezeichnet.

6. Wenden Sie das Relay-Log vom SQL-Thread der Datenbank aus an und speichern Sie die angewendeten Datensätze in relay-log.info. Standardmäßig werden die angewendeten Relays automatisch gelöscht.

Installation und Konfiguration der MySQL Master-Slave-Replikation

1. Grundlegende Einrichtungsvorbereitung

Betriebssystem:

centos6.5

MySQL-Version:

5.7

Zwei virtuelle Maschinen:

Knoten1:192.168.85.11 (primär)

Knoten2:192.168.85.12 (Sklave)

2. MySQL-Datenbank installieren

Detaillierte Installations- und Deinstallationsschritte finden Sie in den entsprechenden Dokumenten

3. Erstellen Sie Datenbanken in zwei Datenbanken

--Beachten Sie, dass beide Maschinen ausführen müssen

Datenbank msb erstellen;

4. Konfigurieren Sie Folgendes auf dem primären Server (Knoten1):

Ändern Sie die Konfigurationsdatei und führen Sie den folgenden Befehl aus, um die MySQL-Konfigurationsdatei zu öffnen

vi /etc/meine.cnf

Fügen Sie dem mysqld-Modul die folgenden Konfigurationsinformationen hinzu

log-bin=master-bin #Binärdateiname

binlog-format=ROW #Binäres Protokollformat, es gibt drei Formate: Zeile, Anweisung und gemischt. Zeile bedeutet, den geänderten Inhalt zu kopieren, anstatt den Befehl auf dem Slave-Server auszuführen. Anweisung bedeutet, die auf dem Master-Server ausgeführte SQL-Anweisung auszuführen und dieselbe Anweisung auf dem Slave-Server auszuführen. MySQL verwendet standardmäßig die anweisungsbasierte Replikation, die effizienter ist. Gemischt bedeutet, dass standardmäßig die anweisungsbasierte Replikation verwendet wird. Sobald festgestellt wird, dass die anweisungsbasierte Replikation nicht genau repliziert werden kann, wird die zeilenbasierte Replikation verwendet.

server-id=1 #Erfordert, dass die ID jedes Servers unterschiedlich sein muss

binlog-do-db=msb #Name der synchronisierten Datenbank

5. Konfigurieren Sie die Kontoautorisierung für die Anmeldung vom Server beim Masterserver

--Autorisierungsvorgang

Setzen Sie die globale Validate_Password_Policy = 0.

Setzen Sie global validate_password_length=1;

Gewähren Sie 'root'@'%', gekennzeichnet durch '123456', Replikations-Slave auf *.*;

--Berechtigungen aktualisieren

Berechtigungen leeren;

6. Konfiguration des Slave-Servers

Ändern Sie die Konfigurationsdatei und führen Sie den folgenden Befehl aus, um die MySQL-Konfigurationsdatei zu öffnen

vi /etc/meine.cnf

Fügen Sie dem mysqld-Modul die folgenden Konfigurationsinformationen hinzu

log-bin=master-bin #Name der Binärdatei binlog-format=ROW #Format der Binärdatei server-id=2 #Server-ID

7. Starten Sie den mysqld-Dienst des primären Servers neu

Starten Sie den MySQL-Dienst neu

Dienst MySQL Neustart

Melden Sie sich bei der MySQL-Datenbank an

mysql -uroot -p

Überprüfen Sie den Status des Masters

Masterstatus anzeigen;

8. Starten Sie den Slave-Server neu und nehmen Sie die entsprechenden Konfigurationen vor

Starten Sie den MySQL-Dienst neu

Dienst MySQL Neustart

Melden Sie sich bei MySQL an

mysql -uroot -p

Mit dem Hauptserver verbinden

Ändern Sie den Master in master_host='192.168.150.11',master_user='root',master_password='123456',master_port=3306,master_log_file='master-bin.000001',master_log_pos=334;

Starten Sie den Slave

Slave starten

Überprüfen des Slave-Status

zeige Slave-Status\G (beachten Sie, dass kein Semikolon vorhanden ist)

9. Zu diesem Zeitpunkt können Sie zugehörige Daten auf dem Masterserver hinzufügen und löschen und den zugehörigen Status auf dem Slaveserver anzeigen.

Das Wissen über Datenbanken und andere Java-bezogene Kenntnisse wurde in meine Code-Cloud hochgeladen. Sie können es abrufen, wenn Sie es benötigen.

Persönliche Code-Cloud-Adresse

Das Obige ist eine umfassende Interpretation der MySQL-Master-Slave-Replikation, von den Prinzipien bis hin zu Installations- und Konfigurationsdetails. Weitere Informationen zur MySQL-Master-Slave-Replikation finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • So beheben Sie Probleme mit doppelten Schlüsseln bei der MySQL-Master-Slave-Replikation
  • Umfassende Analyse des MySql-Master-Slave-Replikationsmechanismus
  • Detaillierte Erläuterung der MySQL Master-Slave-Replikation und der Lese-/Schreibtrennung
  • MySQL-Datenbank GTID realisiert Master-Slave-Replikation (super praktisch)
  • Implementierungsprinzip und Konfiguration der MySql Master-Slave-Replikation
  • MySQL Master-Slave-Replikationsprinzip und zu beachtende Punkte
  • So überspringen Sie Fehler bei der MySQL-Master-Slave-Replikation
  • Konfigurationsprozess für die MySQL-Master-Slave-Replikation
  • Zusammenfassung verschiedener Replikationsmethoden für die MySQL Master-Slave-Replikation
  • Gängige Reparaturmethoden für die Trennung der MySQL Master-Slave-Replikation

<<:  Automatische Dateisynchronisierung zwischen zwei Linux-Servern

>>:  Zabbix implementiert die Überwachung mehrerer MySQL-Prozesse

Artikel empfehlen

jQuery realisiert dynamische Partikeleffekte

In diesem Artikel wird der spezifische Code von j...

Zusammenfassung einiger kleinerer Probleme mit der MySQL-Autoinkrement-ID

Die folgenden Fragen basieren alle auf der InnoDB...

Docker legt Port 2375 frei, was zu Serverangriffen und -lösungen führt

Ich glaube, dass Studenten, die etwas über die Do...

Mysql teilt Zeichenfolge durch gespeicherte Prozedur in Array auf

Um einen String in ein Array aufzuteilen, müssen ...

Freundliche Alternativen zum Find Tool in Linux

Mit dem Befehl „Find“ können Sie in einem angegeb...

Teilen Sie 20 JavaScript-Einzeilencodes

Inhaltsverzeichnis 1. Holen Sie sich den Wert des...

Lösung für die Ineffektivität der flexiblen Layoutbreite in CSS3

In Projekten wird häufig das zweispaltige Layout ...

Der Prozess der Installation von MySQL 8.0.26 auf CentOS7

1. Laden Sie zunächst die entsprechende Datenbank...

Lösen Sie das Problem der verstümmelten Zeichen im Tomcat10 Catalina-Protokoll

Laufumgebung, Idea2020-Version, Tomcat10, beim Au...