Einführung in die Verwendung des MySQL pt-slave-restart-Tools

Einführung in die Verwendung des MySQL pt-slave-restart-Tools

Beim Einrichten einer MySQL-Master-Slave-Replikationsumgebung stoßen Sie häufig auf ein Szenario, in dem sowohl die Master- als auch die Slave-Datenbanken das Kontokennwort des Benutzers initialisieren müssen. Unter normalen Umständen müssen Sie das Binärprotokoll auf Sitzungsebene sowohl in der Master- als auch in der Slave-Datenbank deaktivieren, bevor Sie Benutzerinformationen importieren.

Manchmal wird jedoch die Voraktion zum Schließen des Binärprotokolls auf Sitzungsebene ignoriert. Beispielsweise importieren die Master- und Slave-Bibliotheken im GTID-basierten Replikationsmodus die Konto- und Kennwortinformationen des Benutzers direkt. Die Master- und Slave-Bibliotheken zeichnen die Konto- und Kennworttransaktionen in ihren eigenen GTIDs auf. Wenn wir zu diesem Zeitpunkt die GTID-Methode zum Erstellen der Replikation verwenden, tritt ein Fehler auf. Da die Slave-Bibliothek bereits über ein Konto verfügt, weisen die von der Master-Bibliothek mit der Slave-Bibliothek synchronisierten Benutzerinformationen einen Fehler auf, der darauf hinweist, dass der Benutzer bereits vorhanden ist. In diesem Fall müssen wir die SQL-Anweisung zum Erstellen des von der Master-Bibliothek in die Slave-Bibliothek kopierten Benutzers überspringen.

Im GTID-Modus können Sie eine Transaktion überspringen, indem Sie:

Sklave stoppen;
setze gtid_next=xxxxx;
beginnen;
begehen;
setze gtid_next=automatisch;
Slave starten;

Wenn jedoch viele Transaktionen vorhanden sind, können wir sie nicht einzeln überspringen. Wir müssen denselben Fehler stapelweise überspringen. Hier sind mehrere Möglichkeiten, damit umzugehen:

Einführung in drei Parameter des MySQL-Replikationsproblems

Passen Sie den Parameter slave_skip_errors bzw. den Parameter slave_exec_mode an.

Heute werden wir uns eine andere Methode ansehen, nämlich das Tool pt-slave-restart zum Überspringen von Transaktionen zu verwenden. Der Befehl lautet wie folgt:

./pt-slave-restart -uroot -proot123 --error-numbers=1062

Der Befehl ist leicht zu verstehen. Schreiben Sie einfach den Fehlercode deutlich und überspringen Sie ihn. Es werden viele Informationen ausgedruckt. Standardmäßig besteht der ausgedruckte Inhalt aus: Zeitstempel, Verbindungsinformationen, Relay-Protokolldatei, Relay-Protokollposition und der letzten Fehlernummer. Zum Beispiel:

2020-09-22T00:59:09 P=3306,h=192.168.7.194,p=...,u=root-relay-bin.000005 369 1032
2020-09-22T00:59:09 P=3306,h=192.168.7.194,p=...,u=root-relay-bin.000005 726 1032
2020-09-22T00:59:09 P=3306,h=192.168.7.194,p=...,u=root-relay-bin.000005 1085 1032
2020-09-22T00:59:09 P=3306,h=192.168.7.194,p=...,u=root-relay-bin.000005 1444 1032
2020-09-22T00:59:09 P=3306,h=192.168.7.194,p=...,u=root-relay-bin.000005 1800 1032

Sie können mit der Option –verbose weitere Informationen hinzufügen oder mit der Option –quiet die gesamte Ausgabe unterdrücken.

Notiz:

Bei Verwendung einer Multithread-Replikation (slave_parallel_workers > 0) kann pt-slave-restart keine Transaktionen überspringen. pt-slave-restart kann nicht bestimmen, welcher spezifische Slave-Thread die fehlgeschlagene Transaktion für das GTID-Ereignis ausgeführt hat.

Wenn Sie es verwenden müssen, schalten Sie bitte vorübergehend die Worker der Multithread-Replikation aus

Weitere Parameter von pt-slave-restart können Sie mit dem Befehl pt-slave-restart --help anzeigen oder in der folgenden Liste allgemeiner Parameter nachsehen:

--always: Stoppen Sie den Slave-Thread niemals, auch nicht, wenn Sie ihn manuell stoppen. --ask-pass: Ersetzen Sie den Befehl -p, um zu verhindern, dass die Kennworteingabe vom Entwickler hinter Ihnen ausspioniert wird. --error-numbers: Geben Sie an, welche Fehler übersprungen werden sollen. Diese können durch , getrennt werden. --error-text: Auf der Fehlermeldung basierend abgleichen und überspringen. --log: Ausgabe in eine Datei. --recurse: Auf der Masterseite ausführen und die Slaveseite überwachen. --runtime: Wie lange das Tool läuft, bevor es beendet wird: Standardmäßig in Sekunden, m = Minute, h = Stunden, d = Tage.

--slave-user --slave-password: Das Konto und das Passwort der Slave-Datenbank, die beim Ausführen vom Master-Ende verwendet werden --skip-count: Die Anzahl der Fehler, die gleichzeitig übersprungen werden sollen. Wenn Sie mutig sind, können Sie eine größere Zahl festlegen. Wenn nicht angegeben, ist der Standardwert 1 --master-uuid: Geben Sie bei kaskadierender Replikation an, dass Fehler der übergeordneten oder übergeordneten Transaktion übersprungen werden sollen --until-master: Stoppen Sie nach Erreichen der angegebenen master_log_pos, Dateiposition, Format: „file:pos“

--until-relay: Wie oben, stoppt aber basierend auf der Position von relay_log

Das Obige ist der detaillierte Inhalt der Einführung in die Verwendung des MySQL pt-slave-restart-Tools. Weitere Informationen zur Verwendung des MySQL pt-slave-restart-Tools finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • Der MySQL-Server läuft mit der Option --read-only und kann diese Anweisung daher nicht ausführen.
  • mysql-Datenbankmysql: [FEHLER] unbekannte Option ''--skip-grant-tables''
  • Detaillierte Erklärung zur Sicherstellung der Konsistenz von MySQL-Ansichten (mit Prüfoption)
  • Lösung für die Fehlermeldung "java.sql.SQLException: Incorrect string value:'\xF0\x9F\x92\xA9\x0D\x0A...'" beim Speichern von Emoticons in MySQL
  • NULL und leere Zeichenfolge in MySQL
  • Ein Beispiel für die Verbindung von MySQL mit PHP über ODBC zu einer beliebigen Datenbank
  • Detaillierte Erklärung zur Installation und vollständigen Deinstallation von MySQL mit apt-get unter Ubuntu
  • Beispiele für die korrekte Verwendung von AES_ENCRYPT() und AES_DECRYPT() zum Verschlüsseln und Entschlüsseln von MySQL
  • Der MySQL-Server wird mit der Option --skip-grant-tables ausgeführt.
  • Detaillierte Erklärung zur Verwendung von pt-heartbeat zur Überwachung der MySQL-Replikationsverzögerung

<<:  Flex-Grow-, Flex-Shrink-, Flex-Basis- und Neun-Raster-Layout verstehen

>>:  Detaillierte Erläuterung der Verwendung der Cloud-native-Technologie Kubernetes Scheduling Unit Pod

Artikel empfehlen

So verfolgen Sie Benutzer mit JS

Inhaltsverzeichnis 1. Synchrones AJAX 2. Asynchro...

Detaillierte Erklärung der grep- und egrep-Befehle in Linux

Vertreter / egrep Syntax: grep [-cinvABC] 'wo...

Detaillierte Erläuterung der drei Möglichkeiten zum Importieren von CSS-Dateien

Es gibt drei Möglichkeiten, CSS einzuführen: Inli...

Vue erzielt einen nahtlosen Karusselleffekt

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

W3C Tutorial (4): W3C XHTML Aktivitäten

HTML ist eine Hybridsprache, die zum Veröffentlic...

CentOS 8 offiziell veröffentlicht, basierend auf Red Hat Enterprise Linux 8

Das CentOS-Projekt, ein 100 % kompatibler Neuaufb...

Zusammenfassung der MySQL-Nutzungsspezifikationen

1. Es muss die InnoDB-Speicher-Engine verwendet w...

Allgemeine grundlegende Linux-Befehle und -Verwendung

Dieser Artikel veranschaulicht anhand von Beispie...

Eine Zusammenfassung der Gründe, warum MySQL keinen Datumsfeldindex verwendet

Inhaltsverzeichnis Hintergrund erkunden Zusammenf...

Webprojektentwicklung VUE-Mischungs- und Vererbungsprinzip

Inhaltsverzeichnis Mischen Mixin-Hinweis (doppelt...

Vollständiger Code zur Implementierung der Vue-Backtop-Komponente

Wirkung: Code: <Vorlage> <div Klasse=&qu...

Eine Analyse von Div+Float, einem sehr wichtigen Konzept im Website-Design

Beim Erstellen einer Website treten immer wieder P...