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

CocosCreator implementiert Skill-Kühleffekt

CocosCreator realisiert Skill-CD-Effekt In vielen...

Detaillierte Erläuterung der Verwendung von MySQL Explain (Analyseindex)

EXPLAIN zeigt, wie MySQL Indizes verwendet, um Au...

Alibaba Cloud Centos7.3-Installation, MySQL5.7.18 RPM-Installations-Tutorial

Deinstallieren Sie MariaDB CentOS7 installiert st...

Benutzerdefinierte Tabbar-Komponente für das WeChat-Applet

In diesem Artikel wird der spezifische Code der b...

Zusammenfassung des in JS implementierten Minesweeping-Projekts

Dieser Artikel enthält die Zusammenfassung des JS...

Praxis der Bereitstellung von in Python geschriebenen Webanwendungen mit Docker

Inhaltsverzeichnis 1. Docker installieren 2. Code...

Teilen des JS-nativen Quellcodes des Spiels 2048 (das Neueste im Internet)

Ich habe mich kürzlich mit Algorithmen beschäftig...