Detaillierte Erläuterung der MySQL Master-Slave-Replikation und der Lese-/Schreibtrennung

Detaillierte Erläuterung der MySQL Master-Slave-Replikation und der Lese-/Schreibtrennung

Artikel-Mindmap

Bildbeschreibung hier einfügen

Warum Master-Slave-Replikation und Lese-/Schreibtrennung verwenden?

Master-Slave-Replikation und Lese-/Schreibtrennung werden im Allgemeinen zusammen verwendet. Der Zweck ist einfach: Er besteht darin, die gleichzeitige Leistung der Datenbank zu verbessern.
Sie können sich vorstellen, dass die Leistung definitiv nicht hoch sein wird, wenn es sich um eine einzelne Maschine handelt und sowohl das Lesen als auch das Schreiben auf einem MySQL erfolgt.
Wenn es drei MySQL-Server gibt, von denen ein Master nur für Schreibvorgänge und zwei Slaves nur für Lesevorgänge zuständig sind, würde sich die Leistung dann nicht erheblich verbessern?
Daher sind Master-Slave-Replikation und Lese-/Schreibtrennung darauf ausgelegt, der Datenbank eine höhere Parallelität zu ermöglichen.
Wenn MySQL mit zunehmendem Geschäftsvolumen auf einer einzelnen Maschine bereitgestellt wird, ist die E/A-Frequenz zu hoch.
Der Einsatz von Master-Slave-Replikation und Lese-/Schreibtrennung kann die Verfügbarkeit der Datenbank verbessern.

Das Prinzip der Master-Slave-Replikation

①Wenn der Masterknoten Einfüge-, Aktualisierungs- oder Löschvorgänge ausführt, werden diese der Reihe nach in das Binärprotokoll geschrieben.
②Die Salve-Slave-Datenbank stellt eine Verbindung zur Master-Hauptdatenbank her, und die Anzahl der vom Master erstellten Binlog-Dump-Threads entspricht der Anzahl der Slaves.
③Wenn sich das Binlog des Masterknotens ändert, benachrichtigt der Binlog-Dump-Thread alle Salve-Knoten.
Und pushen Sie den entsprechenden Binlog-Inhalt zum Slave-Knoten.
④Nach dem Empfang des Binlog-Inhalts schreibt der E/A-Thread den Inhalt in das lokale Relay-Protokoll.
⑤Der SQL-Thread liest das vom E/A-Thread geschriebene Relay-Protokoll und führt basierend auf dem Inhalt des Relay-Protokolls entsprechende Vorgänge an der Slave-Datenbank aus.

Bildbeschreibung hier einfügen

So implementieren Sie die Master-Slave-Replikation

** Umgebungsanzeige, ich verwende zur Demonstration zwei virtuelle Maschinen, IP ist Master (135) und 136 (Slave)

Zur besseren Übersicht zeigt die folgende Abbildung die Auswirkungen der drei Maschinen (Datenänderungen: z. B. Einfügen, Aktualisieren, Löschen …).

Master-Konfiguration

**Verwenden Sie die Befehlszeile, um MySQL einzugeben:

> mysql -uroot -p //Passwort eingeben> //192.168.190.136 ist die IP-Adresse des Slave-Rechners
> GRANT REPLICATION SLAVE ON *.* an „root“@„192.168.190.136“, identifiziert durch „rootroot“; 
//Aktualisieren Sie die Systemberechtigungstabelle. Wenn nicht, starten Sie das System neu, damit die Berechtigung wirksam wird. 
> Berechtigungen leeren;

Der oben konfigurierte Benutzer wird bei der Konfiguration der Slave-Maschine benötigt.

Als nächstes fügen Sie die Konfiguration zur MySQL-Konfigurationsdatei /etc/my.cnf hinzu:

vim /etc/my.cnf //Fügen Sie unter [mysqld] die #Datenbank-ID-Nummer hinzu. Wenn sie 1 ist, bedeutet dies Master. Die Master-ID von Master und Slave können nicht konsistent sein.
Server-ID = 1
# Binlog aktivieren
log-bin=mysql-bin
#Die Datenbank, die synchronisiert werden muss. Wenn nicht konfiguriert, werden alle Datenbanken synchronisiert binlog-do-db=test
#Die Anzahl der Tage, die Binlog-Protokolle aufbewahrt werden. Protokolle, die älter als 10 Tage sind, werden gelöscht.
#Um zu verhindern, dass zu viele Dateien zu groß sind und dadurch nicht genügend Speicherplatz zur Verfügung steht.
Ablauf der Protokolle in Tagen = 10

Nachdem die Konfiguration abgeschlossen ist, starten Sie MySQL neu

systemctl Neustart MariaDB

Geben Sie dann MySQL ein, überprüfen Sie die aktuellen Binlog-Protokollinformationen und zeichnen Sie sie auf.

mysql -uroot -p

show master status\G //Hier muss kein Semikolon geschrieben werden, da \G funktional einem Semikolon ";" entspricht.

Bildbeschreibung hier einfügen
**

Slave-Konfiguration

Die Slave-Konfiguration ist einfacher. Die Slave-Maschine kann eine Server-ID in /etc/my.cnf hinzufügen.

# Nicht mit anderen MySQL-Dienst-IDs wiederholen server-id=111

Melden Sie sich dann bei der MySQL-Befehlszeile an. Geben Sie das folgende SQL ein

ÄNDERN SIE MASTER IN 
MASTER_HOST='192.168.190.135', //Host-IP
MASTER_USER='root', // zuvor erstelltes Benutzerkonto MASTER_PASSWORD='rootroot', // zuvor erstelltes Benutzerkennwort MASTER_LOG_FILE='mysql-bin.000002', // Binlog-Protokollname des Masterhosts MASTER_LOG_POS=245, // Binlog-Protokolloffset Position
master_port=3306;//Port

Nach erfolgreichem Vorgang starten Sie den Slave-Dienst

Slave starten;

Überprüfen Sie anschließend, ob der Start erfolgreich war.

Slave-Status anzeigen\G

Sie können die folgenden Informationen sehen: (Die Ausgabe ist lang, nur ein Teil davon wird abgefangen)

Bildbeschreibung hier einfügen

Als nächstes können wir die Master-Slave-Replikation testen

Führen Sie SQL auf dem Master-Host aus:

CREATE TABLE `Warenmarke` (
	`id` BIGINT (20) UNSIGNED NOT NULL auto_increment,
	`brand_name` VARCHAR (50) NOT NULL COMMENT 'Markenname',
	`gmt_create` ZEITSTEMPEL NICHT NULL STANDARD CURRENT_TIMESTAMP BEI UPDATE CURRENT_TIMESTAMP,
	`gmt_update` ZEITSTEMPEL NICHT NULL STANDARD '0000-00-00 00:00:00',
	PRIMÄRSCHLÜSSEL (`id`)
) ENGINE = INNODB DEFAULT CHARSET = utf8 COMMENT = 'Markentabelle';

Nachdem die Ausführung abgeschlossen ist, aktualisieren wir die Bibliothekstabelle und sehen

Bildbeschreibung hier einfügen

Sie können sehen, dass ich die Ausführung auf der Master-Maschine durchführe und der Slave direkt mit dieser synchronisiert wird. Zu diesem Zeitpunkt ist die Master-Slave-Synchronisierung von MySQL abgeschlossen.

Bezüglich der Lese-/Schreibtrennung werden im nächsten Kapitel verfügbare Lösungen und Überwachungen beschrieben und der Link ergänzt.

**Hinweis: Ein Teil des Inhalts dieses Kapitels stammt von @Alibaba Cloud Developer**

Zusammenfassen

Dies ist das Ende dieses Artikels über MySQL-Master-Slave-Replikation und Lese-/Schreibtrennung mit Bildern und Text. Weitere relevante Inhalte zu MySQL-Master-Slave-Replikation und Lese-/Schreibtrennung finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Detaillierte Erläuterung der MySQL Master-Slave-Replikation, Lese-/Schreibtrennung, Sicherung und Wiederherstellung
  • Detaillierte Erläuterung der Konfigurationsmethode der Lese-/Schreibtrennung bei der MySQL-Master-Slave-Replikation
  • MySQL5.6 Replikations-Master-Slave-Replikation (Lese-/Schreibtrennung) Konfiguration vollständige Version
  • Detaillierte Erläuterung der Konstruktion der Lese-/Schreibtrennung bei der MySQL-Master-Slave-Replikation
  • So erstellen Sie eine MySQL-Master-Slave-Replikation und Lese-/Schreibtrennung auf der CentOS-Serverplattform
  • Detaillierte Erläuterung der Prinzipien und der Verwendung der MySQL-Master-Slave-Replikation und der Lese-/Schreibtrennung
  • Detaillierte Erläuterung der MySQL Master-Slave-Replikation und der Lese-/Schreibtrennung
  • Ein Artikel zum Verständnis der MySQL Master-Slave-Replikation und der Lese-/Schreibtrennung

<<:  So implementieren Sie die King of Glory-Personal-Ladeseite mit CSS3

>>:  Ungewöhnliche, aber nützliche Tags in Xhtml

Artikel empfehlen

XHTML-Tutorial für die ersten Schritte: XHTML-Webseiten-Bildanwendung

<br />Das sinnvolle Hinzufügen von Bildern k...

XHTML-Tutorial für den Einstieg: Formular-Tags

<br />Formulare sind für Benutzer ein wichti...

Warum funktioniert Ihre Größe: 100 % nicht?

Warum funktioniert Ihre Größe: 100 % nicht? Diese...

Detailliertes Tutorial zum Kompilieren und Installieren von Python3.6 unter Linux

1. Gehen Sie zunächst auf die offizielle Website ...

XHTML: Rahmenstruktur-Tag

Rahmenstruktur-Tag <frameset></frameset&...

So fügen Sie Batchdaten unter Node.js in eine MySQL-Datenbank ein

Im Projekt (nodejs) müssen mehrere Daten gleichze...

Native JS-Kapselung, nahtlose Karussellfunktion

Natives js-gekapseltes nahtloses Karussell-Plug-I...

Tutorial-Diagramm zur VMware-Installation des Ubuntu 20.04-Betriebssystems

Memo: Einfach erleben. Eintrag: Nr. 209 Diese Bei...

Teilen Sie 13 hervorragende Web-Wireframe-Design- und Produktionstools

Wenn Sie mit der Arbeit an einem Projekt beginnen...

Lösung für das Root-Passwort-Anmeldeproblem in MySQL 5.7

Nachdem ich herausgefunden hatte, dass der vorher...

Tiefgreifendes Verständnis der Datenreaktionsfähigkeit von Vue

Inhaltsverzeichnis 1. ES-Syntax-Getter und -Sette...

3D-Tunneleffekt implementiert durch CSS3

Der erzielte EffektImplementierungscode html <...