Zwei Möglichkeiten zur Lösung des Problems, dass die MySQL-Master-Slave-Datenbank nicht synchronisiert wird

Zwei Möglichkeiten zur Lösung des Problems, dass die MySQL-Master-Slave-Datenbank nicht synchronisiert wird

Zwei Möglichkeiten zur Lösung des Problems, dass die MySQL-Master-Slave-Datenbank nicht synchronisiert wird

Während des Arbeitsprozesses wurde festgestellt, dass die Master- und Slave-Datenbanken von MySQL nicht synchronisiert waren

1. Asynchrone Situation

Master-Bibliothek:

mysql>Prozessliste anzeigen;

Überprüfen Sie, ob der Prozess zu viel schläft. Fand es normal.

Masterstatus anzeigen;

Das ist normal.

mysql> Masterstatus anzeigen;
+-------------------+----------+--------------+-------------------------------------------+
| Datei | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-------------------+----------+--------------+-------------------------------------------+
| mysqld-bin.000001 | 3260 | | mysql,test,informationsschema |
+-------------------+----------+--------------+-------------------------------------------+
1 Zeile im Satz (0,00 Sek.)

Dann überprüfen Sie Slave

mysql> Slave-Status anzeigen\G                                                
 
Slave_IO_Running: Ja
Slave_SQL_Running: Nein

Man sieht, dass der Slave nicht synchron ist

2. Lösung

Hier sind zwei Lösungen

Methode 1: Ignorieren Sie den Fehler und fahren Sie mit der Synchronisierung fort

Diese Methode eignet sich für Situationen, in denen sich die Daten der Master- und Slave-Datenbanken nicht sehr unterscheiden oder die Daten nicht vollständig vereinheitlicht werden können und die Datenanforderungen nicht streng sind.

lösen:

Sklave stoppen;
 
#Zeigt einen Fehler beim Überspringen eines Schritts an, die Zahl dahinter ist eine global festgelegte Variable: sql_slave_skip_counter = 1;
Slave starten;

Verwenden Sie dann mysql> show slave status\G zum Anzeigen

mysql> Slave-Status anzeigen\G
Slave_IO_Running: Ja
Slave_SQL_Running: Ja

OK, jetzt ist der Master-Slave-Synchronisierungsstatus normal. . .

Methode 2: Master-Slave erneut ausführen und vollständig synchronisieren

Diese Methode eignet sich für Situationen, in denen sich die Daten der Master- und Slave-Datenbanken stark unterscheiden oder wenn die Daten vollständig vereinheitlicht werden müssen.

Die Lösungsschritte sind wie folgt:

1. Rufen Sie zuerst die Hauptdatenbank auf und sperren Sie die Tabelle, um das Schreiben von Daten zu verhindern

Verwenden Sie den Befehl:

mysql> Tabellen mit Lesesperre leeren;

Hinweis: Dies ist als schreibgeschützt gesperrt, die Anweisung unterscheidet nicht zwischen Groß- und Kleinschreibung.

2. Datensicherung durchführen

#Sichern Sie die Daten in der Datei mysql.bak.sql

mysqldump -uroot -p -hlocalhost > mysql.bak.sql


Eines ist hier zu beachten: Datenbanksicherungen müssen regelmäßig durchgeführt werden. Sie können Shell-Skripte oder Python-Skripte verwenden, die bequemer sind und die Sicherheit der Daten gewährleisten.

3. Überprüfen Sie den Masterstatus

mysql> Masterstatus anzeigen;
+-------------------+----------+--------------+-------------------------------------------+
| Datei | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-------------------+----------+--------------+-------------------------------------------+
| mysqld-bin.000001 | 3260 | | mysql,test,informationsschema |
+-------------------+----------+--------------+-------------------------------------------+
1 Zeile im Satz (0,00 Sek.)

4. Übertragen Sie die MySQL-Sicherungsdatei zur Datenwiederherstellung auf den Slave-Computer

scp mysql.bak.sql [email protected]:/tmp/

5. Beenden Sie den Slave-Status

mysql> Slave stoppen;

6. Führen Sie dann den MySQL-Befehl aus der Datenbank aus, um die Datensicherung zu importieren

mysql> Quelle /tmp/mysql.bak.sql

7. Slave-Synchronisation einrichten

Achten Sie beim Einrichten der Slave-Synchronisierung auf den Synchronisierungspunkt. Dabei handelt es sich um das Element | Datei | Position in der Anzeige der Master-Statusinformationen der Master-Datenbank.

Ändern Sie Master in Master_Host = „192.168.128.100“, Master_User = „rsync“, Master_Port = 3306, Master_Password = „“, Master_Log_File = „mysqld-bin.000001“, Master_Log_Pos = 3260;

8. Starten Sie die Slave-Synchronisation neu

mysql> Slave starten;

9. Überprüfen Sie den Synchronisierungsstatus

mysql> Slave-Status anzeigen\G  

Slave_IO_Running: Ja
Slave_SQL_Running: Ja

10. Kehren Sie zur Hauptdatenbank zurück und führen Sie den folgenden Befehl aus, um die Tabelle zu entsperren.

TABELLEN ENTSPERREN;

Oben sind die Details von zwei Methoden zur Lösung des Problems der Master-Slave-Synchronisierung der MySQL-Datenbank aufgeführt. Weitere Informationen zur Lösung des Problems der Master-Slave-Datenbanksynchronisierung von MySQL finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • Master-Slave-Synchronisationskonfiguration der Mysql-Datenbank
  • Dieser Artikel zeigt Ihnen das Prinzip der MySQL Master-Slave-Synchronisation
  • So führen Sie MySQL in einer Docker-Umgebung aus und aktivieren Binlog, um die Master-Slave-Synchronisierung zu konfigurieren
  • MySQL Master-Slave-Synchronisation, Implementierungsprinzip des Transaktions-Rollbacks
  • Detaillierte Erläuterung des tatsächlichen Prozesses der Master-Slave-Synchronisierung der MySQL-Datenbank
  • Detaillierte Erklärung des Server-ID-Beispiels bei der MySQL-Master-Slave-Synchronisierung
  • Master-Slave-Synchronisationskonfiguration und Lese-/Schreibtrennung der MySQL-Datenbank
  • Prinzip und Anwendung der MySQL-Master-Slave-Synchronisation

<<:  Grundlegende Anwendungsmethoden für eingebettete und externe JavaScript-Links

>>:  Womit kann ich dich, meinen Tisch, retten (Haiyu-Blog)

Artikel empfehlen

Lösung für das MySQL-Fehlerproblem 1045 (28000)

Ich bin auf den MySQL-FEHLER 1045 gestoßen und ha...

Tiefgreifendes Verständnis des Linux-Lastausgleichs LVS

Inhaltsverzeichnis 1. LVS-Lastausgleich 2. Grundl...

Docker stellt nginx bereit und mountet Ordner und Dateioperationen

Während dieser Zeit habe ich Docker studiert und ...

37 Tipps für ein gutes User Interface Design (mit Bildern)

1. Versuchen Sie, ein einspaltiges statt eines meh...

CSS zum Implementieren von QQ-Browserfunktionen

Code Wissenspunkte 1. Kombinieren Sie fullpage.js...

Verwenden von Vue zum Implementieren einer Timerfunktion

In diesem Artikelbeispiel wird der spezifische Co...

Lösung für Indexfehler in MySQL aufgrund unterschiedlicher Feldzeichensätze

Was ist ein Index? Warum einen Index erstellen? I...