Analysieren Sie die Prinzipien und Methoden der MySQL-Replikation und -Optimierung

Analysieren Sie die Prinzipien und Methoden der MySQL-Replikation und -Optimierung

Der Standardwert von MySQL ist „full“, am besten ändern Sie ihn auf „minimal“.

binlog_row_image=minimal

4. Verzögerung der Master-Slave-Replikation

Da sich die Master- und Slave-Datenbanken nicht auf demselben Host befinden, kommt es zwangsläufig zu einer Verzögerung bei der Datensynchronisierung. Die Lösung besteht darin, einen Cache hinzuzufügen und zu warten, bis die Geschäftsebene springt. Wenn Sie das Verzögerungsproblem auf Datenbankebene reduzieren müssen, können Sie mit den drei Hauptschritten der Replikation beginnen (die Master-Datenbank generiert Protokolle, Master-Slave-Übertragungsprotokolle und die Slave-Datenbank stellt den Protokollinhalt wieder her):

1. Die Geschwindigkeit, mit der die Masterdatenbank in das Protokoll schreibt

Kontrollieren Sie die Transaktionsgröße der Hauptdatenbank und teilen Sie große Transaktionen in mehrere kleine Transaktionen auf.

Wenn Sie beispielsweise 200.000 Datenzeilen einfügen möchten, können Sie jeweils 5.000 Zeilen einfügen (Sie können die Idee der Paginierung verwenden).

2. Übertragungszeit des Binärprotokolls zwischen Master und Slave

Der Master- und der Slave-Server sollten sich möglichst im selben Computerraum oder Bereich befinden.

Das Protokollformat wird in MIXED geändert und das Protokollformat der Einstellungszeile ist nicht minimal. Einzelheiten zum Prinzip finden Sie oben in der Einführung zum Protokollformat.

3. Reduzieren Sie die Zeit zum Wiederherstellen von Protokollen aus der Bibliothek

In MySQL Version 5.7 und höher können Sie die Methode der logischen Uhr verwenden, um SQL-Multithreads zuzuordnen.

Stellen Sie die logische Uhr ein: slave_parallel_type = 'logical_clock';

Legen Sie die Anzahl der Replikationsthreads fest: slave_parallel_workers=4;

5. Zu beachtende Punkte

Beim Neustart von MySQL wechseln Sie am besten zum MySQL-Benutzer und führen dann die Operation aus, da es sonst nach dem Starten der Datei zu Berechtigungsproblemen kommt. Nachdem Sie die MySQL-Umgebung eingerichtet haben, legen Sie in der Konfiguration die Option „log-bin“ fest. Auf diese Weise ist es nicht erforderlich, die Datenbank neu zu starten und den Geschäftsbetrieb zu unterbrechen, wenn die Datenbank in Zukunft kopiert werden muss. Sie müssen den entsprechenden MySQL-Port der Firewall der Hauptdatenbank öffnen. Da die Slave-Datenbank mit der Master-Datenbank synchronisiert wird, indem sie die von der Master-Datenbank gesendeten Informationen abhört, anstatt sie abzurufen, wird die Slave-Datenbank bei einem Kommunikationsfehler die Daten nicht synchronisieren, wenn die Master-Datenbank nach der erneuten Verbindung keine Datenänderungen vornimmt. Daher können die Daten durch Einfügen einer leeren Transaktion synchronisiert werden.

Das Obige ist der gesamte Inhalt, den der Herausgeber dieses Mal zusammengestellt hat. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM.

Das könnte Sie auch interessieren:
  • Master-Slave-Konfiguration für die synchrone Replikation einer MySQL-Datenbank unter Linux
  • Detaillierte Erläuterung der Docker-Methode zur Implementierung der MySql-Master-Slave-Replikation (praktischer Teil)
  • Detaillierte Analyse der Replikation in MySQL
  • MySQL-Hochverfügbarkeitslösung MMM (MySQL Multi-Master-Replikationsmanager)
  • MySQL 5.7.18 Master-Slave-Replikations-Setup (ein Master und ein Slave) Tutorial mit ausführlicher Erklärung
  • Detaillierte grafische Erläuterung der Mysql5.7.18-Installation und Master-Slave-Replikation
  • Detaillierte Erläuterung des MySQL Master-Slave-Replikationsprozesses
  • Detaillierte Erklärung zur Verwendung von pt-heartbeat zur Überwachung der MySQL-Replikationsverzögerung
  • Detaillierte Erläuterung der Konstruktion der Lese-/Schreibtrennung bei der MySQL-Master-Slave-Replikation
  • Detaillierte Erläuterung zur Verwendung von Docker zum schnellen Erstellen einer MySQL-Master-Slave-Replikationsumgebung
  • Ein kurzer Vortrag über die halbsynchrone MySQL-Replikation
  • Vorteile und Prinzipien der MySQL-Replikation im Detail erklärt

1. Einleitung

MySQL verfügt über eine Replikationslösung, die folgende Vorteile bietet:

Datensicherung.

Lastenausgleich.

Verteilte Daten.

Konzepteinführung:

Master: Die Datenbank, die repliziert wird.

Slave: Eine Datenbank, die die Daten des Masters repliziert.

Schritte zum Reproduzieren:
(1) Der Master protokolliert die Details der Änderungen und speichert sie im Binärlog.
(2). Der Master sendet eine Synchronisationsnachricht an den Slave.
(3) Nach Erhalt der Nachricht kopiert der Slave das Binärprotokoll des Masters in das lokale Relay-Protokoll.
(4). Der Slave reproduziert die Nachrichten im Relay-Log und verändert dadurch die Datenbankdaten.

Hier ist ein klassisches Bild, um diesen Vorgang zu veranschaulichen:

2. Implementierung der Replikation

Zur Durchführung der Replikation sind folgende Schritte notwendig:

1. Einrichten des Binärlogs und der Server-ID der MySQL-Masterbibliothek

MySQL-Konfigurationsdateien werden normalerweise in /etc/my.cnf gespeichert

# Konfigurationsoptionen [mysqld] unter [mysqld] hinzufügen
Server-ID = 1
log-bin=mysql-bin.log

Die Server-ID ist die eindeutige Kennung der Datenbank im gesamten Datenbankcluster und muss eindeutig bleiben.
Starten Sie MySQL neu.

Hinweis: Wenn diese Datei bereits in der MySQL-Konfigurationsdatei konfiguriert wurde, können Sie diesen Schritt überspringen.

2. Neues Kopierkonto erstellen

Erstellen Sie in der Masterdatenbank ein neues Konto, um Masterdatenbankdaten aus der Datenbank zu kopieren, und erteilen Sie Kopierberechtigungen.

mysql> GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO Benutzername@'Host' IDENTIFIED BY 'Passwort';

3. Legen Sie die Server-ID der MySQL-Masterdatenbank fest

Wie schon bei der Konfiguration im zweiten Schritt sind zwei Punkte zu beachten:

Wenn die Slave-Bibliothek nicht als Master-Bibliothek für andere Slave-Bibliotheken dienen soll, müssen Sie die binäre Protokollierung nicht konfigurieren. Häufig ist für die Replikation keine Replikation aller Datenbanken in der Masterdatenbank erforderlich (insbesondere nicht der MySQL-Informationskonfigurationsdatenbank). Daher können Sie replicate_do_db konfigurieren, um die replizierte Datenbank anzugeben. 4. Initialisieren Sie die Daten der Masterdatenbank aus der Datenbank

Wenn die Datenmenge nicht groß ist, können Sie das Tool mysqldump verwenden, um die Daten der Masterdatenbank zu exportieren und dann in die Slavedatenbank zu importieren.

mysqldump --single-transaction --triggers --master-data Datenbankname > data.sql

Bei großen Datenmengen sollten Sie zum Exportieren der Datenbank Xtrabackup verwenden, das hier nicht vorgestellt wird.
Einige Studenten fragen sich vielleicht, warum sie nicht direkt Binärprotokolle zur Initialisierung verwenden?

Wenn unsere Master-Datenbank schon lange läuft, ist es nicht geeignet, die Slave-Datenbank zum Kopieren von Daten gemäß dem Binärprotokoll zu verwenden. Es wäre zeitaufwändig und leistungsintensiv, das Binärprotokoll direkt zum Initialisieren der Slave-Datenbank zu verwenden. In den meisten Fällen ist das Konfigurationselement für das Binärprotokoll der Masterdatenbank nicht aktiviert, sodass kein Binärprotokoll vorheriger Vorgänge vorhanden ist. 5. Aktivieren Sie die Replikation

Führen Sie den folgenden Befehl aus der Bibliothek aus

mysql> ÄNDERN SIE MASTER ZU MASTER_HOST='host',
-> MASTER_USER='Benutzer',
-> MASTER_PASSWORD='Passwort',
-> MASTER_LOG_FILE='mysql-bin.000001',
-> MASTER_LOG_POS=0;

Beachten Sie die letzten beiden Befehle: MASTER_LOG_FILE und MASTER_LOG_POS, die angeben, welche Binärdatei aus der Bibliothek gelesen werden soll und wo der Offset beginnt. Diese beiden Parameter finden Sie in dem von uns importierten SQL.

Aktivieren der Replikation

Slave starten;

An diesem Punkt ist die Replikation abgeschlossen. Wenn Daten in der Master-Datenbank aktualisiert oder neue Daten hinzugefügt werden, können die Ergebnisse in der Slave-Datenbank abgefragt werden.


Der Status des Replikationsthreads kann auch auf der Masterdatenbank abgefragt werden.

3. Replikationsprotokollformat

Es gibt drei Protokollformate für die MySQL-Replikation, abhängig davon, wie die Masterdatenbank Daten speichert:

Kopiermethode Merkmale Vorteil Mangel
Reihe Notieren Sie basierend auf der Zeilenformatkopie die Dateninformationen jeder Zeile, die geändert werden muss. Wenn eine SQL-Anweisung 2w Datenzeilen ändert, wird das Protokollformat von 2w Zeilen aufgezeichnet. Die starke Konsistenz der Daten ist gewährleistet und da die Ergebnisse nach der Ausführung aufgezeichnet werden, erfolgt die Wiederherstellung in der Slave-Datenbank schneller. Die Anzahl der Protokolldatensätze ist groß und die Übertragung zwischen Master und Slave dauert länger.
Stellungnahme Segmentbasierte Replikation des Protokollformats, d. h. Aufzeichnen der geänderten SQL-Datensätze anstelle der geänderten Zeilendatensätze. Die Protokollierung ist minimal. Bei manchen Funktionen mit unsicheren Ausgabeergebnissen können Probleme auftreten, wenn sie auf der Slave-Datenbank ausgeführt werden. Wenn die Slave-Datenbank beispielsweise die Daten der Master-Datenbank anhand des Protokolls wiederherstellt, muss sie SQL erneut ausführen, was relativ lange dauert.
gemischt Mischen Sie die beiden oben genannten Protokollformate, um Protokolle aufzuzeichnen. MySQL bestimmt selbst, wann welches Protokollformat verwendet wird. Die Vor- und Nachteile der beiden oben genannten Protokollformate können ausgeglichen werden.

Vor MySQL 5.7 wurde standardmäßig das Anweisungsformat verwendet.

Die Einstellungsmethode kann in der Konfigurationsdatei festgelegt werden (bevorzugt):

binlog_format=ZEILE

Oder legen Sie temporär globale Variablen fest (aktuelle MySQL-Verbindung ist gültig):

Zeigen Sie das Protokollformat MySQL an > zeigen Sie Variablen wie „binlog_format“ an.
Legen Sie das Protokollformat mysql> set binlog_format='row'; fest.

Da sich die beiden Master- und Slave-Server normalerweise im selben Computerraum befinden, ist die Synchronisierungsgeschwindigkeit zwischen beiden schneller. Um eine starke Konsistenz sicherzustellen, sollte das Zeilenprotokollformat (row) bevorzugt werden. Um die Übertragungsgeschwindigkeit sicherzustellen, kann der gemischte Modus (mixed) ausgewählt werden.
Das Protokollformat der Zeile verfügt über die folgenden drei Aufzeichnungsmodi:

Aufnahmemethode Merkmale
minimal Nur die Daten der geänderten Spalten aufzeichnen
voll Notieren Sie die Daten aller Spalten der geänderten Zeile
noob Die Funktionen sind dieselben wie oben, außer dass die Daten dieser Spalten (d. h. große Datenspalten) nicht aufgezeichnet werden, wenn die Spalten der Blob- und Texttypen nicht geändert werden.

<<:  JS Canvas-Oberfläche und Animationseffekte

>>:  So ziehen Sie das Docker-Image herunter, um die Version anzuzeigen

Artikel empfehlen

jQuery implementiert gleitende Registerkarte

In diesem Artikelbeispiel wird der spezifische Co...

Die große Rolle von HTML-Meta

Es gibt zwei Metaattribute: Name und http-equiv. D...

Designtheorie: Menschenorientiertes Green Design

Überlegungen zu den beiden Sichtweisen „menscheno...

Grafisches Tutorial zur Installation von MySQL 8.0.12

MySQL8.0.12-Installationstutorial, mit allen teil...

Beitrag zur Übermittlung von HTML-Daten_PowerNode Java Academy

Zu den vom HTTP/1.1-Protokoll angegebenen HTTP-An...

Zusammenfassung der Methoden zum Einbinden von Dateiinhalten in HTML-Dateien

Im Forum fragen Internetnutzer oft: „Kann ich den...

Sammlung von MySQL-Fuzzy-Abfrageanweisungen

SQL-Fuzzy-Abfrageanweisung Die allgemeine Fuzzy-A...

9 Tipps für das Webseiten-Layout

<br />Verwandte Artikel: 9 praktische Vorsch...

JavaScript BOM erklärt

Inhaltsverzeichnis 1. BOM-Einführung 1. JavaScrip...

Schritte zum Erstellen eines WEBSERVERS mit NODE.JS

Inhaltsverzeichnis Was ist nodejs Installieren Si...

So öffnen Sie das MySQL-Binlog-Protokoll

Binlog ist eine binäre Protokolldatei, die alle M...

Erstellen Sie ein Docker-Image mit Dockerfile

Inhaltsverzeichnis Erstellen Sie ein Docker-Image...