Dies ist der Befehl pt-table-checksump, der beim kostenlosen Hosting-Anbieter OnWorks mit einer unserer zahlreichen kostenlosen Online-Workstations wie Ubuntu Online, Fedora Online, dem Windows-Online-Emulator oder dem MAC OS-Online-Emulator ausgeführt werden kann
PROGRAMM:
NAME/FUNKTION
pt-table-checksum – Überprüfen Sie die Integrität der MySQL-Replikation.
ZUSAMMENFASSUNG
Verwendung: pt-table-checksum [OPTIONS] [DSN]
pt-table-checksum führt eine Online-Replikationskonsistenzprüfung durch, indem es die Prüfsumme ausführt
Abfragen auf dem Master, was zu unterschiedlichen Ergebnissen bei inkonsistenten Replikaten führt
mit dem Meister. Der optionale DSN gibt den Master-Host an. Der „EXIT STATUS“ des Tools lautet
Ungleich Null, wenn Unterschiede gefunden werden oder wenn Warnungen oder Fehler auftreten.
Der folgende Befehl stellt eine Verbindung zum Replikationsmaster auf localhost her und prüft alle
Tabelle und melden Sie die Ergebnisse für jedes erkannte Replikat:
pt-Tabellen-Prüfsumme
Dieses Tool konzentriert sich auf die effiziente Suche nach Datenunterschieden. Sollten Daten abweichen,
Sie können das Problem mit pt-table-sync lösen.
RISIKEN
Percona Toolkit ist ausgereift, in der Praxis bewährt und gut getestet, aber alle Datenbank
Tools können eine Gefahr für das System und den Datenbankserver darstellen. Bevor Sie dieses Werkzeug verwenden,
Bitte:
· Lesen Sie die Dokumentation des Tools
· Überprüfen Sie die bekannten "BUGS" des Tools
· Testen Sie das Tool auf einem Nicht-Produktionsserver
· Sichern Sie Ihren Produktionsserver und überprüfen Sie die Backups
Siehe auch „EINSCHRÄNKUNGEN“.
BESCHREIBUNG
pt-table-checksum ist so konzipiert, dass es in fast allen Fällen standardmäßig das Richtige tut. Wann
Verwenden Sie im Zweifelsfall „--explain“, um zu sehen, wie das Tool eine Tabelle prüft. Das Folgende ist ein
Allgemeiner Überblick über die Funktionsweise des Tools.
Im Gegensatz zu älteren Versionen von pt-table-checksum konzentriert sich dieses Tool auf eine einzelne
Zweck und ist nicht sehr komplex und unterstützt nicht viele verschiedene Prüfsummen
Techniken. Es führt Prüfsummenabfragen nur auf einem Server aus und diese fließen durch
Replikation zur erneuten Ausführung auf Replikaten. Wenn Sie das ältere Verhalten benötigen, können Sie es verwenden
Percona Toolkit Version 1.0.
pt-table-checksum stellt eine Verbindung zu dem von Ihnen angegebenen Server her und findet Datenbanken und Tabellen
den von Ihnen angegebenen Filtern entsprechen (falls vorhanden). Es funktioniert tabellenweise, also nicht
Sammeln Sie große Speichermengen oder erledigen Sie viel Arbeit, bevor Sie mit der Prüfsummenbildung beginnen. Das
macht es auf sehr großen Servern einsetzbar. Wir haben es auf Servern mit Hunderten von Servern verwendet
Tausende von Datenbanken und Tabellen und Billionen von Zeilen. Egal wie groß der Server ist
Das heißt, pt-table-checksum funktioniert genauso gut.
Ein Grund dafür, dass es bei sehr großen Tabellen funktionieren kann, besteht darin, dass jede Tabelle in Abschnitte unterteilt wird
Zeilen und prüft jeden Block mit einer einzigen REPLACE..SELECT-Abfrage. Es variiert den Chunk
Größe, damit die Prüfsummenabfragen in der gewünschten Zeit ausgeführt werden. Das Ziel des Chunkings
Dies soll sichergestellt werden, anstatt jede Tabelle mit einer einzigen großen Abfrage zu bearbeiten
Prüfsummen sind unaufdringlich und verursachen keine zu große Replikationsverzögerung oder Belastung des Servers.
Aus diesem Grund beträgt die Zielzeit für jeden Chunk standardmäßig 0.5 Sekunden.
Das Tool verfolgt, wie schnell der Server die Abfragen ausführen kann, und passt sich an
die Blöcke, während es mehr über die Leistung des Servers erfährt. Es verwendet eine exponentielle Funktion
Abklingender gewichteter Durchschnitt, um die Blockgröße stabil zu halten und dennoch reaktionsfähig zu bleiben, wenn die
Die Leistung des Servers ändert sich während der Prüfsummenbildung aus irgendeinem Grund. Das bedeutet, dass das Tool
drosselt sich schnell selbst, wenn Ihr Server während einer Verkehrsspitze stark ausgelastet ist
oder zum Beispiel eine Hintergrundaufgabe.
Das Chunking wird durch eine Technik erreicht, die wir in anderen Werkzeugen früher als „Nibbeln“ bezeichneten
Percona-Toolkit. Es ist die gleiche Technik, die beispielsweise für pt-archiver verwendet wird. Das Vermächtnis
Chunking-Algorithmen, die in älteren Versionen von pt-table-checksum verwendet wurden, wurden entfernt, weil sie
führte nicht zu Blöcken vorhersehbarer Größe und funktionierte auf vielen Tabellen nicht gut. Das alles
erforderlich ist, um eine Tabelle in Blöcke zu unterteilen, ist eine Art Index (vorzugsweise ein Primärindex).
Schlüssel oder eindeutiger Index). Wenn kein Index vorhanden ist und die Tabelle einen entsprechend kleinen Index enthält
Anzahl der Zeilen berechnet das Tool die Prüfsumme der Tabelle in einem einzigen Block.
pt-table-checksum verfügt über viele weitere Sicherheitsvorkehrungen, um sicherzustellen, dass es keine Störungen verursacht
Serverbetrieb, einschließlich Replikate. Um dies zu erreichen, erkennt pt-table-checksum
Replikate und stellt automatisch eine Verbindung zu ihnen her. (Wenn dies fehlschlägt, können Sie mit einen Hinweis geben
die Option „--recursion-method“.)
Das Tool überwacht Replikate kontinuierlich. Wenn eine Replik zu weit zurückfällt
Bei der Replikation hält pt-table-checksum an, damit es aufholen kann. Wenn eine Replik eine hat
Fehler oder Replikation stoppt, pt-table-checksum pausiert und wartet. Darüber hinaus ist pt-table-
checksum sucht nach häufigen Ursachen für Probleme, wie z. B. Replikationsfilter, und weigert sich, dies zu tun
bedienen, es sei denn, Sie zwingen es dazu. Replikationsfilter sind gefährlich, weil die Abfragen
dass pt-table-checksum ausgeführt wird, könnte möglicherweise mit ihnen in Konflikt geraten und eine Replikation verursachen
Versagen.
pt-table-checksum überprüft, ob die Blöcke nicht zu groß sind, um eine sichere Prüfsumme zu erstellen. Es leistet
eine EXPLAIN-Abfrage für jeden Block und überspringt Blöcke, die möglicherweise größer als gewünscht sind
Anzahl der Reihen. Sie können die Empfindlichkeit dieser Schutzmaßnahme mit konfigurieren
Option „--chunk-size-limit“. Wenn für eine Tabelle eine Prüfsumme in einem einzelnen Block erstellt wird, weil dies der Fall ist
Hat eine kleine Anzahl von Zeilen, dann überprüft pt-table-checksum zusätzlich, ob die Tabelle
ist bei Replikaten nicht überdimensioniert. Dadurch wird das folgende Szenario vermieden: Eine Tabelle ist leer
Der Master ist jedoch auf einem Replikat sehr groß und wird in einer einzigen großen Abfrage überprüft
verursacht eine sehr lange Verzögerung bei der Replikation.
Es gibt mehrere andere Schutzmaßnahmen. Beispielsweise legt pt-table-checksum die Sitzungsebene fest
innodb_lock_wait_timeout auf 1 Sekunde, sodass bei einer Sperrwartezeit dies der Fall ist
Opfer, anstatt bei anderen Abfragen eine Zeitüberschreitung zu verursachen. Eine weitere Sicherung kontrolliert die Belastung
den Datenbankserver und pausiert, wenn die Last zu hoch ist. Es gibt keine einzige richtige Antwort
Hier erfahren Sie, wie das geht, aber standardmäßig pausiert pt-table-checksum, wenn mehr als 25 vorhanden sind
gleichzeitige Ausführung von Abfragen. Sie sollten wahrscheinlich einen vernünftigen Wert für Ihren Server festlegen
die Option „--max-load“.
Die Prüfsummenbildung ist normalerweise eine Aufgabe mit niedriger Priorität, die anderen Arbeiten auf dem Server überlassen werden sollte.
Allerdings ist ein Tool, das ständig neu gestartet werden muss, schwierig zu bedienen. Somit ist pt-table-
Prüfsumme ist sehr fehleranfällig. Zum Beispiel, wenn der Datenbankadministrator dies benötigt
Beenden Sie die Abfragen von pt-table-checksum aus irgendeinem Grund. Dies ist kein schwerwiegender Fehler. Benutzer oft
Führen Sie pt-kill aus, um alle lang laufenden Prüfsummenabfragen abzubrechen. Das Tool wird eine abgebrochene Abfrage wiederholen
einmal, und wenn es erneut fehlschlägt, wird mit dem nächsten Teil dieser Tabelle fortgefahren. Das gleiche
Das Verhalten gilt, wenn eine Zeitüberschreitung beim Warten auf die Sperre vorliegt. Das Tool gibt in diesem Fall eine Warnung aus
Ein Fehler tritt auf, jedoch nur einmal pro Tabelle. Wenn die Verbindung zu einem Server fehlschlägt, wird pt-
table-checksum wird versuchen, die Verbindung wiederherzustellen und weiterzuarbeiten.
Wenn pt-table-checksum auf eine Bedingung stößt, die dazu führt, dass es vollständig stoppt, ist das einfach
um es mit der Option „--resume“ fortzusetzen. Es beginnt mit dem letzten Teil des letzten Teils
Tabelle, die es verarbeitet hat. Sie können das Tool auch sicher mit STRG-C stoppen. Es wird zu Ende sein
den Block, den es gerade verarbeitet, und beenden Sie es dann. Sie können es wie gewohnt fortsetzen
danach.
Nachdem pt-table-checksum die Prüfsumme aller Blöcke in einer Tabelle abgeschlossen hat, pausiert es und
wartet darauf, dass alle erkannten Replikate die Ausführung der Prüfsummenabfragen abgeschlossen haben. Sobald das so ist
Wenn Sie fertig sind, werden alle Replikate daraufhin überprüft, ob sie dieselben Daten wie der Master haben.
und gibt dann eine Ausgabezeile mit den Ergebnissen aus. Sie können ein Beispiel seiner Ausgabe sehen
später in dieser Dokumentation.
Bei zeitaufwändigen Vorgängen druckt das Tool Fortschrittsanzeigen aus. Es druckt a
Fortschrittsanzeige, da für jede Tabelle eine Prüfsumme erstellt wird. Der Fortschritt wird durch berechnet
geschätzte Anzahl der Zeilen in der Tabelle. Außerdem wird beim Anhalten ein Fortschrittsbericht gedruckt
um darauf zu warten, dass die Replikation aufholt, und wenn es darauf wartet, nach Replikaten zu suchen
Unterschiede zum Meister. Mit „--quiet“ können Sie die Ausgabe weniger ausführlich gestalten.
.
Wenn Sie möchten, können Sie die Prüfsummentabellen manuell abfragen, um einen Bericht darüber zu erhalten, welche Tabellen
und Chunks weisen Unterschiede zum Master auf. Die folgende Abfrage meldet alle
Datenbank und Tabelle mit Unterschieden, zusammen mit einer Zusammenfassung der Anzahl der Blöcke und Zeilen
möglicherweise betroffen:
SELECT db, tbl, SUM(this_cnt) AS total_rows, COUNT(*) AS chunks
VON percona.checksums
WO (
master_cnt <> this_cnt
ODER master_crc <> this_crc
OR IST NULL(master_crc) <> ISNULL(this_crc))
GROUP BY db, tbl;
Die in dieser Abfrage referenzierte Tabelle ist die Prüfsummentabelle, in der die Prüfsummen gespeichert werden.
Jede Zeile in der Tabelle enthält die Prüfsumme eines Datenblocks aus einer Tabelle in der
Server.
Version 2.0 von pt-table-checksum ist nicht abwärtskompatibel mit der pt-table-sync-Version
1.0. In einigen Fällen ist dies kein ernstes Problem. Hinzufügen einer Spalte „Grenzen“ zur
Tabelle und das anschließende Aktualisieren mit einer manuell generierten WHERE-Klausel kann ausreichen, damit pt-
table-sync Version 1.0 arbeitet mit pt-table-checksum Version 2.0 zusammen. Vorausgesetzt, ein
Ganzzahliger Primärschlüssel mit dem Namen „id“. Sie können Folgendes versuchen:
ALTER TABLE Prüfsummen ADD Grenzen VARCHAR(500);
Prüfsummen aktualisieren
SET limits = COALESCE(CONCAT('id BETWEEN ', untere_Grenze,
' AND ', obere_Grenze), '1=1');
EINSCHRÄNKUNGEN
Replikate mit zeilenbasierter Replikation
pt-table-checksum erfordert eine anweisungsbasierte Replikation und wird festgelegt
„binlog_format=STATEMENT“ auf dem Master, aufgrund einer MySQL-Einschränkung jedoch nicht bei Replikaten
ehren Sie diese Änderung. Daher werden Prüfsummen nicht über Replikate hinaus repliziert, die verwendet werden
zeilenbasierte Replikation, die Master für weitere Replikate sind.
Das Tool überprüft automatisch das „binlog_format“ auf allen Servern. Sehen
„--[no]check-binlog-format“ .
(Fehler 899415 )
Schema- und Tabellenunterschiede
Das Tool geht davon aus, dass Schemata und Tabellen auf dem Master und allen identisch sind
Repliken. Die Replikation wird unterbrochen, wenn ein Replikat beispielsweise kein Schema hat
das auf dem Master vorhanden ist (und dieses Schema eine Prüfsumme aufweist), oder wenn die Struktur von a
Die Tabelle auf einem Replikat unterscheidet sich von der auf dem Master.
Percona XtraDB Cluster
pt-table-checksum funktioniert mit Percona XtraDB Cluster (PXC) 5.5.28-23.7 und neuer. Der
Die Anzahl der möglichen Percona XtraDB-Cluster-Setups ist groß, da es damit verwendet werden kann
auch regelmäßige Replikation. Daher werden nur die unten aufgeführten Setups unterstützt
bekanntermaßen funktioniert. Andere Setups wie Cluster-zu-Cluster werden nicht unterstützt und werden dies wahrscheinlich auch nicht tun
Arbeit.
Sofern nicht anders angegeben, erfordern alle der folgenden unterstützten Setups die Verwendung des „dsn“
Methode für „--recursion-method“, um Clusterknoten anzugeben. Auch der Lag-Check (siehe
„REPLICA CHECKS“) wird für Clusterknoten nicht durchgeführt.
Einzelner Cluster
Das einfachste PXC-Setup ist ein einzelner Cluster: Alle Server sind Cluster-Knoten, und zwar dort
sind keine regulären Nachbildungen. Wenn alle Knoten in der DSN-Tabelle angegeben sind (siehe
„--recursion-method“), dann können Sie das Tool auf jedem Knoten und alle Diffs auf jedem ausführen
Andere Knoten werden erkannt.
Alle Knoten müssen sich im selben Cluster befinden (den gleichen „wsrep_cluster_name“-Wert haben), andernfalls
Das Tool wird mit einem Fehler beendet. Obwohl es möglich ist, unterschiedliche Cluster zu haben
denselben Namen verwenden, sollte dies nicht erfolgen und wird nicht unterstützt. Das gilt für alle
Unterstützte Setups.
Einzelner Cluster mit Replikaten
Clusterknoten können auch reguläre Master sein und auf reguläre Replikate replizieren. Jedoch,
Das Tool kann Unterschiede auf einem Replikat nur erkennen, wenn es auf dem „Masterknoten“ des Replikats ausgeführt wird.
Wenn das Cluster-Setup beispielsweise wie folgt lautet:
Knoten1 <-> Knoten2 <-> Knoten3
| |
| +-> Replikat3
+-> Replikat2
Sie können Diffs auf Replikat3 erkennen, indem Sie das Tool auf Knoten3 ausführen, aber um Diffs auf zu erkennen
Replikat2 müssen Sie das Tool erneut auf Knoten2 ausführen. Wenn Sie das Tool auf Knoten1 ausführen, wird dies der Fall sein
Auf beiden Replikaten werden keine Unterschiede erkannt.
Derzeit erkennt das Tool dieses Setup nicht und warnt nicht vor Replikaten, die nicht möglich sind
aktiviert (z. B. Replikat2 bei Ausführung auf Knoten3).
Replikate in diesem Setup unterliegen weiterhin „--[no]check-binlog-format“.
Master zu Einzelcluster
Es ist möglich, dass ein regulärer Master auf einem Cluster repliziert, als ob der Cluster es wäre
ein logischer Sklave, wie:
Master -> Knoten1 <-> Knoten2 <-> Knoten3
Das Tool unterstützt dieses Setup, jedoch nur, wenn es auf dem Master ausgeführt wird und alle Knoten im
Cluster stimmen mit dem „direkten Replikat“ (in diesem Beispiel Knoten1) des überein
Meister. Wenn beispielsweise alle Knoten den Wert „foo“ für Zeile 1 haben, der Master jedoch den Wert hat
Wenn Sie für dieselbe Zeile einen „Balken“ eingeben, wird dieser Unterschied erkannt. Oder wenn nur Knoten1 diesen Unterschied hat,
es wird auch erkannt. Wenn jedoch nur Knoten2 oder Knoten3 diesen Unterschied haben, ist dies nicht der Fall
erkannt. Daher wird dieses Setup verwendet, um zu überprüfen, ob der Master und der Cluster als a
Das Ganze ist konsistent.
In diesem Setup kann das Tool beim Ausführen automatisch das „direkte Replikat“ (Knoten1) erkennen
auf dem Master, sodass Sie nicht die Methode „dsn“ für „--recursion-method“ verwenden müssen
weil Knoten1 den gesamten Cluster darstellt, weshalb alle anderen Knoten dies sein müssen
im Einklang damit.
Das Tool gibt eine Warnung aus, wenn es dieses Setup erkennt, um Sie daran zu erinnern, dass es nur funktioniert, wenn es verwendet wird
wie oben beschrieben. Diese Warnungen haben keinen Einfluss auf den Exit-Status des Tools. Sie sind
nur Erinnerungen, um falsch-positive Ergebnisse zu vermeiden.
AUSGABE
Das Tool druckt tabellarische Ergebnisse, eine Zeile pro Tabelle:
TS-FEHLER DIFFS ROWS CHUNKS SKIPPED TIME TABLE
10-20T08:36:50 0 0 200 1 0 0.005 db1.tbl1
10-20T08:36:50 0 0 603 7 0 0.035 db1.tbl2
10-20T08:36:50 0 0 16 1 0 0.003 db2.tbl3
10-20T08:36:50 0 0 600 6 0 0.024 db2.tbl4
Fehler, Warnungen und Fortschrittsberichte werden im Standardfehlerformat gedruckt. Siehe auch „--quiet“.
Die Ergebnisse jeder Tabelle werden gedruckt, wenn das Tool die Prüfsummenbildung der Tabelle abgeschlossen hat. Der
Die Spalten lauten wie folgt:
TS Der Zeitstempel (ohne Jahr), als das Tool die Prüfsummenbildung der Tabelle abgeschlossen hat.
FEHLER
Die Anzahl der Fehler und Warnungen, die bei der Prüfsummenbildung der Tabelle aufgetreten sind. Fehler
und Warnungen werden im Standardfehler ausgegeben, während die Tabelle bearbeitet wird.
DIFF
Die Anzahl der Blöcke, die auf einem oder mehreren Replikaten vom Master abweichen. Wenn
Wenn „--no-replicate-check“ angegeben ist, enthält diese Spalte immer Nullen. Wenn
Wird „--replicate-check-only“ angegeben, werden nur Tabellen mit Unterschieden gedruckt.
REIHEN
Die Anzahl der aus der Tabelle ausgewählten und überprüften Zeilen. Es könnte anders sein
aus der Anzahl der Zeilen in der Tabelle, wenn Sie die Option --where verwenden.
CHUNKS
Die Anzahl der Blöcke, in die die Tabelle unterteilt wurde.
SKIPPED
Die Anzahl der Blöcke, die aufgrund eines oder mehrerer dieser Probleme übersprungen wurden:
* MySQL verwendet den --chunk-index nicht
* MySQL verwendet nicht den vollständigen Chunk-Index (--[no]check-plan)
* Chunk-Größe ist größer als --chunk-size * --chunk-size-limit
* Wartezeit für Sperre überschritten (--retries)
* Prüfsummenabfrage abgebrochen (--retries)
Ab pt-table-checksum 2.2.5 verursachen übersprungene Chunks einen „EXIT STATUS“ ungleich Null.
ZEIT-
Die während der Prüfsummenbildung der Tabelle verstrichene Zeit.
TABELLE
Die Datenbank und Tabelle, für die eine Prüfsumme erstellt wurde.
Wenn „--replicate-check-only“ angegeben ist, werden nur Prüfsummenunterschiede bei erkannten Replikaten angezeigt
werden gedruckt. Die Ausgabe ist unterschiedlich: ein Absatz pro Replikat, ein Prüfsummenunterschied
pro Zeile und die Werte werden durch Leerzeichen getrennt:
Unterschiede bei h=127.0.0.1,P=12346
TABLE CHUNK CNT_DIFF CRC_DIFF CHUNK_INDEX LOWER_BOUNDARY UPPER_BOUNDARY
db1.tbl1 1 0 1 PRIMÄR 1 100
db1.tbl1 6 0 1 PRIMÄR 501 600
Unterschiede bei h=127.0.0.1,P=12347
TABLE CHUNK CNT_DIFF CRC_DIFF CHUNK_INDEX LOWER_BOUNDARY UPPER_BOUNDARY
db1.tbl1 1 0 1 PRIMÄR 1 100
db2.tbl2 9 5 0 PRIMÄR 101 200
Die erste Zeile eines Absatzes gibt die Replik mit Unterschieden an. In diesem Beispiel
Es gibt zwei: h=127.0.0.1,P=12346 und h=127.0.0.1,P=12347. Die Spalten lauten wie folgt:
TABELLE
Die Datenbank und Tabelle, die sich vom Master unterscheiden.
Stück
Die Chunk-Nummer der Tabelle, die sich vom Master unterscheidet.
CNT_DIFF
Die Anzahl der Blockzeilen auf dem Replikat minus der Anzahl der Blockzeilen auf dem Master.
CRC_DIFF
1, wenn der CRC des Blocks auf dem Replikat vom CRC des Blocks auf dem Replikat abweicht
Master, sonst 0.
CHUNK_INDEX
Der Index, der zum Aufteilen der Tabelle verwendet wird.
LOWER_BOUNDARY
Die Indexwerte, die die untere Grenze des Blocks definieren.
OBERE GRENZE
Die Indexwerte, die die obere Grenze des Blocks definieren.
EXIT STATUS
pt-table-checksum hat drei mögliche Exit-Status: Null, 255 und jeder andere Wert ist ein
Bitmaske mit Flags für verschiedene Probleme.
Ein Exit-Status von Null bedeutet, dass keine Fehler, Warnungen oder Prüfsummenunterschiede vorliegen oder übersprungen wurden
Chunks oder Tabellen.
Der Exit-Status 255 weist auf einen schwerwiegenden Fehler hin. Mit anderen Worten: Das Tool ist gestorben oder abgestürzt. Der
Der Fehler wird als „STDERR“ ausgegeben.
Wenn der Exit-Status nicht Null oder 255 ist, fungiert sein Wert als Bitmaske mit diesen
Flaggen:
BEDEUTUNG DES FLAGGENBITWERTS
================ ========= ======================== =================
FEHLER 1 Es ist ein nicht schwerwiegender Fehler aufgetreten
ALREADY_RUNNING 2 --pid-Datei existiert und die PID wird ausgeführt
CAUGHT_SIGNAL 4 SIGHUP, SIGINT, SIGPIPE oder SIGTERM abgefangen
NO_SLAVES_FOUND 8 Es wurden keine Replikate oder Clusterknoten gefunden
TABLE_DIFF 16 Mindestens ein Diff wurde gefunden
SKIP_CHUNK 32 Mindestens ein Block wurde übersprungen
SKIP_TABLE 64 Mindestens eine Tabelle wurde übersprungen
Wenn ein Flag gesetzt ist, ist der Exit-Status ungleich Null. Verwenden Sie dazu die bitweise „AND“-Operation
Suchen Sie nach einer bestimmten Flagge. Wenn beispielsweise „$exit_status & 16“ wahr ist, dann zumindest
Es wurde ein Unterschied gefunden.
Ab pt-table-checksum 2.2.5 führen übersprungene Chunks zu einem Exit-Status ungleich Null. Ein Ausstieg
Der Status Null oder 32 entspricht einem Exit-Status Null mit übersprungenen Blöcken im vorherigen
Versionen des Tools.
OPTIONAL
Dieses Tool akzeptiert zusätzliche Befehlszeilenargumente. Siehe "SYNOPSIS" und Verwendung
Informationen für Details.
--ask-pass
Gruppe: Verbindung
Beim Herstellen einer Verbindung mit MySQL zur Eingabe eines Kennworts auffordern.
--[no]check-binlog-format
Standard: ja
Überprüfen Sie, ob das „binlog_format“ auf allen Servern gleich ist.
Siehe „Replikate mit zeilenbasierter Replikation“ unter „EINSCHRÄNKUNGEN“.
--binary-index
Diese Option ändert das Verhalten von „--create-replicate-table“, sodass die
Die oberen und unteren Grenzspalten der Replikattabelle werden mit den BLOB-Daten erstellt
Typ. Dies ist in Fällen nützlich, in denen Sie Probleme beim Berechnen von Prüfsummentabellen mit Schlüsseln haben
die einen binären Datentyp enthalten oder nicht standardmäßige Zeichensätze haben. Sehen
„--replicate“.
--Check-Intervall
Typ: Zeit; Standard: 1; Gruppe: Gas
Ruhezeit zwischen Prüfungen für „--max-lag“.
--[no]check-plan
Standard: ja
Überprüfen Sie die Abfrageausführungspläne auf Sicherheit. Standardmäßig bewirkt diese Option, dass pt-table-
Prüfsumme, um EXPLAIN auszuführen, bevor Abfragen ausgeführt werden, die auf eine kleine Menge zugreifen sollen
von Daten, die jedoch auf viele Zeilen zugreifen könnten, wenn MySQL einen schlechten Ausführungsplan wählt. Diese
Dazu gehören die Abfragen zur Bestimmung der Chunk-Grenzen und die Chunk-Abfragen selbst. Wenn
Es scheint, dass MySQL einen fehlerhaften Abfrageausführungsplan verwendet. Das Tool überspringt diesen
Teil des Tisches.
Das Tool verwendet mehrere Heuristiken, um festzustellen, ob ein Ausführungsplan fehlerhaft ist. Der
Erstens geht es darum, ob EXPLAIN meldet, dass MySQL beabsichtigt, den gewünschten Index für den Zugriff zu verwenden
die Reihen. Wenn MySQL einen anderen Index wählt, betrachtet das Tool die Abfrage als unsicher.
Das Tool prüft auch, wie viel von dem Index MySQL meldet, den es für die verwendet
Abfrage. Die EXPLAIN-Ausgabe zeigt dies in der Spalte key_len. Das Tool merkt sich die
größte gesehene key_len und überspringt Abschnitte, bei denen MySQL meldet, dass eine kleinere verwendet wird
Präfix des Index. Diese Heuristik kann als Überspringen von Chunks verstanden werden, die ein haben
schlechterer Ausführungsplan als andere Chunks.
Das Tool gibt eine Warnung aus, wenn ein Block zum ersten Mal aufgrund einer fehlerhaften Ausführung übersprungen wird
Planen Sie in jeder Tabelle. Nachfolgende Blöcke werden stillschweigend übersprungen, obwohl Sie das sehen können
Anzahl der übersprungenen Blöcke in der Spalte SKIPPED in der Ausgabe des Tools.
Diese Option fügt jeder Tabelle und jedem Block einige Einrichtungsarbeiten hinzu. Obwohl die Arbeit nicht ist
Dies ist für MySQL aufdringlich und führt zu mehr Roundtrips zum Server, der viel verbraucht
Zeit. Zu kleine Blöcke führen dazu, dass der Overhead relativ größer wird. Es
Es wird daher empfohlen, die Brocken nicht zu klein zu machen, da das Werkzeug andernfalls dauern kann
Wenn Sie dies tun, kann die Fertigstellung sehr lange dauern.
--[no]check-replication-filters
Standard: ja; Gruppe: Sicherheit
Führen Sie keine Prüfsumme durch, wenn Replikationsfilter für Replikate festgelegt sind. Das Werkzeug sieht aus
für Serveroptionen, die die Replikation filtern, wie z. B. binlog_ignore_db und
replicate_do_db. Wenn solche Filter gefunden werden, wird der Vorgang mit einem Fehler abgebrochen.
Wenn die Replikate mit Filteroptionen konfiguriert sind, sollten Sie darauf achten, dies nicht zu tun
um alle Datenbanken oder Tabellen zu prüfen, die auf dem Master und nicht auf den Replikaten vorhanden sind.
Änderungen an solchen Tabellen werden aus diesem Grund normalerweise auf den Replikaten übersprungen
Filteroptionen, aber die Prüfsummenabfragen ändern den Inhalt der Tabelle
speichert die Prüfsummen, nicht die Tabellen, deren Daten Sie prüfen. Daher,
Diese Abfragen werden auf dem Replikat ausgeführt, und zwar auf der Tabelle oder Datenbank, die Sie verwenden
Wenn keine Prüfsumme vorhanden ist, führen die Abfragen dazu, dass die Replikation fehlschlägt. Für mehr
Informationen zu Replikationsregeln finden Sie unter
<http://dev.mysql.com/doc/en/replication-rules.html>.
Durch die Replikationsfilterung kann nicht sichergestellt werden, dass die Prüfsummenabfragen dies nicht tun
Unterbrechen Sie die Replikation (oder scheitern Sie einfach an der Replikation). Wenn Sie sicher sind, dass die Ausführung in Ordnung ist
Bei den Prüfsummenabfragen können Sie diese Option negieren, um die Prüfungen zu deaktivieren. Siehe auch
„--replicate-database“.
Siehe auch „REPLICA CHECKS“.
--check-slave-lag
Typ: Zeichenfolge; Gruppe: Gas
Unterbrechen Sie die Prüfsummenbildung, bis die Verzögerung dieses Replikats kleiner als „--max-lag“ ist. Der Wert ist a
DSN, der Eigenschaften vom Master-Host und die Verbindungsoptionen erbt
(„--port“, „--user“ usw.). Standardmäßig überwacht pt-table-checksum die Verzögerung bei allen
verbundene Replikate, aber diese Option beschränkt die Verzögerungsüberwachung auf das angegebene Replikat.
Dies ist nützlich, wenn bestimmte Replikate absichtlich verzögert werden (mit pt-slave-delay für).
In diesem Fall können Sie ein normales Replikat zur Überwachung angeben.
Siehe auch „REPLICA CHECKS“.
--[no]check-slave-tables
Standard: ja; Gruppe: Sicherheit
Überprüft, ob Tabellen auf Slaves vorhanden sind und alle Prüfsummen „--columns“ haben. Tische
Das Fehlen der Prüfsumme „--columns“ auf Slaves oder das Fehlen aller Prüfsummen „--columns“ kann dazu führen, dass das Tool dies tut
Unterbricht die Replikation, wenn versucht wird, nach Unterschieden zu suchen. Deaktivieren Sie diese Prüfung nur, wenn
Sie sind sich der Risiken bewusst und sicher, dass alle Tabellen auf allen Slaves vorhanden sind und sind
identisch mit dem Master.
--chunk-index
Typ: Zeichenfolge
Bevorzugen Sie diesen Index für Chunking-Tabellen. Standardmäßig wählt pt-table-checksum die meisten aus
geeigneter Index für Chunking. Mit dieser Option können Sie den Index angeben, den Sie verwenden möchten
bevorzugen. Wenn der Index nicht vorhanden ist, greift pt-table-checksum auf seinen Index zurück
Standardverhalten bei der Auswahl eines Index. pt-table-checksum fügt den Index zum hinzu
Prüfsummen-SQL-Anweisungen in einer „FORCE INDEX“-Klausel. Seien Sie vorsichtig, wenn Sie diese Option verwenden.
Eine schlechte Auswahl des Index könnte zu einer schlechten Leistung führen. Dies ist wahrscheinlich am besten zu verwenden, wenn
Sie erstellen nur eine Prüfsumme für eine einzelne Tabelle, nicht für einen gesamten Server.
--chunk-index-columns
Typ: int
Verwenden Sie nur so viele Spalten ganz links eines „--chunk-index“. Dies funktioniert nur für
zusammengesetzte Indizes und ist nützlich in Fällen, in denen ein Fehler im MySQL-Abfrageoptimierer vorliegt
(Planner) bewirkt, dass ein großer Zeilenbereich gescannt wird, anstatt den Index zum Suchen zu verwenden
Start- und Endpunkt genau angeben. Dieses Problem tritt manchmal bei Indizes mit auf
viele Spalten, z. B. 4 oder mehr. In diesem Fall gibt das Tool möglicherweise eine Warnung aus
im Zusammenhang mit der Option „--[no]check-plan“. Weisen Sie das Tool an, nur das erste zu verwenden
N Spalten des Index sind in manchen Fällen eine Problemumgehung für den Fehler.
--chunk-size
Typ: Größe; Standard: 1000
Anzahl der Zeilen, die für jede Prüfsummenabfrage ausgewählt werden sollen. Zulässige Suffixe sind k, M, G.
In den meisten Fällen sollten Sie diese Option nicht verwenden. bevorzugen Sie stattdessen „--chunk-time“.
Diese Option kann das Standardverhalten außer Kraft setzen, bei dem die Blockgröße angepasst wird
dynamisch, um zu versuchen, dass Chunks in genau „--chunk-time“ Sekunden ausgeführt werden. Wenn das
Wenn die Option nicht explizit festgelegt wird, wird ihr Standardwert als Ausgangspunkt verwendet, aber danach
Das Tool ignoriert den Wert dieser Option. Wenn Sie diese Option explizit festlegen,
Allerdings wird dann das dynamische Anpassungsverhalten deaktiviert und versucht, alle Chunks zu erstellen
genau die angegebene Anzahl Zeilen.
Es gibt eine Feinheit: Wenn der Chunk-Index nicht eindeutig ist, ist es möglich, dass Chunks vorhanden sind
wird größer sein als gewünscht. Wenn beispielsweise eine Tabelle durch einen Index aufgeteilt wird, der
10,000 eines bestimmten Werts enthält, gibt es keine Möglichkeit, eine passende WHERE-Klausel zu schreiben
nur 1,000 der Werte, und dieser Block wird mindestens 10,000 Zeilen groß sein. So ein
Chunk wird wahrscheinlich wegen „--chunk-size-limit“ übersprungen.
Die Auswahl einer kleinen Blockgröße führt dazu, dass das Werkzeug teilweise viel langsamer wird
aufgrund der für „--[no]check-plan“ erforderlichen Einrichtungsarbeiten.
--chunk-size-limit
Typ: Schwimmer; Standard: 2.0; Gruppe: Sicherheit
Machen Sie keine Prüfsumme für Blöcke, die viel größer sind als die gewünschte Blockgröße.
Wenn eine Tabelle keine eindeutigen Indizes hat, können die Blockgrößen ungenau sein. Diese Option
Gibt eine maximal tolerierbare Grenze für die Ungenauigkeit an. Das Tool verwendet Zu
Schätzen Sie, wie viele Zeilen der Block enthält. Wenn diese Schätzung den gewünschten Teil übersteigt
multipliziert mit dem Grenzwert (standardmäßig doppelt so groß), dann überspringt das Tool den Block.
Der Mindestwert für diese Option ist 1, was bedeutet, dass kein Block größer sein darf als
„--chunk-size“. Sie möchten wahrscheinlich nicht 1 angeben, da die Zeilen von gemeldet werden
Bei EXPLAIN handelt es sich um Schätzungen, die von der tatsächlichen Anzahl der Zeilen in der Datei abweichen können
Brocken. Wenn das Tool zu viele Blöcke überspringt, weil diese zu groß sind, möchten Sie vielleicht
um einen Wert anzugeben, der größer als der Standardwert 2 ist.
Sie können die Überprüfung übergroßer Blöcke deaktivieren, indem Sie den Wert 0 angeben.
--chunk-time
Typ: Schwimmer; Standard: 0.5
Passen Sie die Blockgröße dynamisch an, sodass die Ausführung jeder Prüfsummenabfrage so lange dauert.
Das Tool verfolgt die Prüfsummenrate (Zeilen pro Sekunde) für alle Tabellen und jede Tabelle
individuell. Diese Raten werden verwendet, um die Blockgröße nach jeder Prüfsummenabfrage anzupassen.
sodass die nächste Prüfsummenabfrage diese Zeit (in Sekunden) zur Ausführung benötigt.
Der Algorithmus lautet wie folgt: Am Anfang jeder Tabelle steht die Blockgröße
initialisiert aus den durchschnittlichen Gesamtzeilen pro Sekunde seit Arbeitsbeginn des Tools, oder
der Wert von „--chunk-size“, wenn das Tool noch nicht mit der Arbeit begonnen hat. Für jede
Beim nächsten Block einer Tabelle passt das Tool die Blockgröße an, um zu versuchen, Abfragen durchzuführen
in der gewünschten Zeit laufen lassen. Es behält einen exponentiell abfallenden gleitenden Durchschnitt bei
von Abfragen pro Sekunde, sodass sich die Leistung des Servers aufgrund von Änderungen ändert
Je nach Serverauslastung passt sich das Tool schnell an. Dadurch kann das Tool vorhersehbare Ergebnisse erzielen
zeitgesteuerte Abfragen für jede Tabelle und für den Server insgesamt.
Wenn diese Option auf Null gesetzt ist, wird die Blockgröße nicht automatisch angepasst, also fragen Sie die Prüfsumme ab
Die Zeiten variieren, die Größe der Abfrageprüfsummen jedoch nicht. Eine andere Möglichkeit, dasselbe zu tun
besteht darin, einen Wert für „--chunk-size“ explizit anzugeben, anstatt ihn beim zu belassen
default.
--Säulen
Kurzform: -c; Typ: Array; Gruppe: Filter
Prüfsumme nur dieser durch Kommas getrennten Spaltenliste. Wenn ein Tisch keines davon hat
Die angegebenen Spalten werden übersprungen.
Diese Option gilt für alle Tabellen und ist daher nur sinnvoll, wenn eine Prüfsumme erstellt wird
Tabelle, es sei denn, die Tabellen haben einen gemeinsamen Satz von Spalten.
--config
Typ: Array; Gruppe: Konfig
Lesen Sie diese durch Kommas getrennte Liste von Konfigurationsdateien; falls angegeben, muss dies der erste sein
Option in der Befehlszeile.
Eine Liste der Standardkonfigurationsdateien finden Sie in der Ausgabe „--help“.
--[no]create-replicate-table
Standard: ja
Erstellen Sie die Datenbank und Tabelle „--replicate“, falls diese nicht vorhanden sind. Die Struktur von
Die Replikattabelle ist dieselbe wie die in „--replicate“ erwähnte vorgeschlagene Tabelle.
--Datenbanken
Kurzform: -d; Typ: Hash; Gruppe: Filter
Prüfsumme nur für diese durch Kommas getrennte Liste von Datenbanken.
--databases-regex
Typ: Zeichenfolge; Gruppe: Filter
Nur Prüfsummendatenbanken, deren Namen mit diesem Perl-Regex übereinstimmen.
--defaults-Datei
Kurzform: -F; Typ: Zeichenfolge; Gruppe: Verbindung
Lesen Sie nur MySQL-Optionen aus der angegebenen Datei. Sie müssen einen absoluten Pfadnamen angeben.
--[no]empty-replicate-table
Standard: ja
Löschen Sie vorherige Prüfsummen für jede Tabelle, bevor Sie die Tabelle prüfen. Diese Option
schneidet nicht die gesamte Tabelle ab, sondern löscht nur Zeilen (Prüfsummen) für jede Tabelle
kurz bevor die Tabelle überprüft wird. Wenn die Prüfsummenbildung daher vorzeitig stoppt und
Wenn bereits Daten vorhanden waren, werden weiterhin Zeilen für Tabellen vorhanden sein, in denen dies nicht der Fall war
Prüfsumme erstellt, bevor das Werkzeug gestoppt wurde.
Wenn Sie von einem früheren Prüfsummenlauf fortfahren, werden die Prüfsummendatensätze für den
Die Tabelle, von der aus das Tool fortfährt, wird nicht geleert.
Um die gesamte Replikattabelle zu leeren, müssen Sie zuvor manuell „TRUNCATE TABLE“ ausführen
Ausführen des Tools.
--Motoren
Kurzform: -e; Typ: Hash; Gruppe: Filter
Nur Prüfsummentabellen, die diese Speicher-Engines verwenden.
--erklären
kumulativ: ja; Standard: 0; Gruppe: Ausgabe
Prüfsummenabfragen anzeigen, aber nicht ausführen (deaktiviert „--[no]empty-replicate-table“).
Bei zweimaliger Angabe durchläuft das Tool tatsächlich den Chunking-Algorithmus.
Drucken der oberen und unteren Grenzwerte für jeden Block, aber nicht Ausführen
Prüfsummenabfragen.
--float-precision
Typ: int
Präzision für die Konvertierung von FLOAT- und DOUBLE-Zahlen in Zeichenfolgen. Verursacht FLOAT und DOUBLE
Werte, die auf die angegebene Anzahl von Nachkommastellen gerundet werden sollen, mit
RUNDEN() Funktion in MySQL. Dies kann dazu beitragen, Prüfsummenkonflikte aufgrund von zu vermeiden
verschiedene Gleitkommadarstellungen derselben Werte auf unterschiedlichem MySQL
Versionen und Hardware. Standardmäßig wird nicht gerundet; die Werte werden umgerechnet
Saiten durch die CONCAT() Funktion, und MySQL wählt die String-Darstellung. Wenn du
Geben Sie beispielsweise den Wert 2 an, dann werden die Werte 1.008 und 1.009 gerundet
1.01 und wird als Prüfsumme gleich sein.
--Funktion
Typ: Zeichenfolge
Hash-Funktion für Prüfsummen (FNV1A_64, MURMUR_HASH, SHA1, MD5, CRC32 usw.).
Die Standardeinstellung ist „use“. CRC32(), Aber MD5() und SHA1() funktionieren auch, und Sie können Ihre verwenden
Wenn Sie möchten, können Sie auch eine eigene Funktion verwenden, z. B. eine kompilierte UDF. Die von Ihnen angegebene Funktion wird ausgeführt
SQL, nicht in Perl, daher muss es für MySQL verfügbar sein.
MySQL verfügt nicht über gute integrierte Hash-Funktionen, die schnell sind. CRC32() ist zu anfällig
um Kollisionen zu hashen, und MD5() und SHA1() sind sehr CPU-intensiv. Der FNV1A_64() UDF
das mit Percona Server verteilt wird, ist eine schnellere Alternative. Es ist ganz einfach
kompilieren und installieren; Schauen Sie sich die Kopfzeile im Quellcode an, um Anweisungen zu erhalten. Wenn ja
installiert ist, wird es bevorzugt MD5(). Sie können auch die MURMUR_HASH() Funktion wenn
Sie kompilieren und installieren das als UDF; Die Quelle wird auch mit Percona vertrieben
Server, und es könnte besser sein als FNV1A_64().
--help
Gruppe: Hilfe
Hilfe anzeigen und beenden.
--Gastgeber
Kurzform: -h; Typ: Zeichenfolge; Standard: localhost; Gruppe: Verbindung
Host, zu dem eine Verbindung hergestellt werden soll.
--ignore-columns
Typ: Hash; Gruppe: Filter
Ignorieren Sie diese durch Kommas getrennte Spaltenliste bei der Berechnung der Prüfsumme. Wenn ein Tisch
Wenn alle Spalten durch --ignore-columns gefiltert sind, wird es übersprungen.
--ignore-databases
Typ: Hash; Gruppe: Filter
Ignorieren Sie diese durch Kommas getrennte Liste von Datenbanken.
--ignore-databases-regex
Typ: Zeichenfolge; Gruppe: Filter
Ignorieren Sie Datenbanken, deren Namen mit dieser Perl-Regex übereinstimmen.
--ignore-engines
Typ: Hash; Standard: FEDERATED,MRG_MyISAM; Gruppe: Filter
Ignorieren Sie diese durch Kommas getrennte Liste der Speicher-Engines.
--ignore-tables
Typ: Hash; Gruppe: Filter
Ignorieren Sie diese durch Kommas getrennte Tabellenliste. Tabellennamen können mit qualifiziert werden
Name der Datenbank. Die Tabelle „--replicate“ wird immer automatisch ignoriert.
--ignore-tables-regex
Typ: Zeichenfolge; Gruppe: Filter
Ignorieren Sie Tabellen, deren Namen mit der Perl-Regex übereinstimmen.
--max-lag
Typ: Zeit; Standard: 1s; Gruppe: Gas
Unterbrechen Sie die Prüfsummenbildung, bis die Verzögerung aller Replikate unter diesem Wert liegt. Nach jedem
Prüfsummenabfrage (jeder Block), pt-table-checksum untersucht die Replikationsverzögerung aller
Replikate, mit denen eine Verbindung hergestellt wird, mithilfe von Seconds_Behind_Master. Wenn ein Replikat verzögert ist
mehr als den Wert dieser Option, dann schläft pt-table-checksum
„--check-interval“ Sekunden, dann überprüfen Sie alle Replikate erneut. Wenn Sie angeben
„--check-slave-lag“, dann untersucht das Tool nur diesen Server auf Verzögerungen, nicht alle Server.
Das Tool wartet ewig darauf, dass die Replikate nicht mehr verzögert werden. Wenn eine Replik gestoppt wird, wird die
Das Tool wartet ewig, bis das Replikat gestartet wird. Die Prüfsummenbildung wird noch einmal fortgesetzt
Replikate laufen und sind nicht allzu sehr zurückgeblieben.
Während des Wartens druckt das Tool Fortschrittsberichte. Wenn eine Replik gestoppt wird, wird eine gedruckt
Fortschrittsbericht sofort und dann erneut in jedem Fortschrittsberichtsintervall.
Siehe auch „REPLICA CHECKS“.
--Tragfähigkeit
Typ: Array; Standard: Threads_running=25; Gruppe: Gas
Untersuchen Sie SHOW GLOBAL STATUS nach jedem Block und halten Sie an, wenn Statusvariablen vorhanden sind
höher als der Schwellenwert. Die Option akzeptiert eine durch Kommas getrennte Liste des MySQL-Status
Variablen, um auf einen Schwellenwert zu prüfen. Ein optionaler „=MAX_VALUE“ (oder „:MAX_VALUE“) kann
Folgen Sie jeder Variablen. Wenn kein Wert angegeben ist, ermittelt das Tool einen Schwellenwert, indem es den Wert prüft
aktuellen Wert und erhöht ihn um 20 %.
Wenn Sie beispielsweise möchten, dass das Tool anhält, wenn Threads_connected zu hoch wird, können Sie Folgendes tun:
Sie können „Threads_connected“ angeben, und das Tool überprüft dann den aktuellen Wert
beginnt zu arbeiten und addiert 20 % zu diesem Wert. Wenn der aktuelle Wert 100 ist, dann ist das Tool
pausiert, wenn Threads_connected 120 überschreitet, und setzt die Arbeit fort, wenn es unter 120 liegt
wieder. Wenn Sie einen expliziten Schwellenwert angeben möchten, z. B. 110, können Sie beides verwenden
„Threads_connected:110“ oder „Threads_connected=110“.
Der Zweck dieser Option besteht darin, zu verhindern, dass das Werkzeug dem Gerät zu viel Last hinzufügt
Server. Wenn die Prüfsummenabfragen aufdringlich sind oder Sperrwartezeiten verursachen, dann andere
Anfragen auf dem Server werden tendenziell blockiert und in die Warteschlange gestellt. Dies wird normalerweise dazu führen
Threads_running zu erhöhen, und das Tool kann dies erkennen, indem es SHOW GLOBAL ausführt
STATUS unmittelbar nach Abschluss jeder Prüfsummenabfrage. Wenn Sie einen Schwellenwert angeben für
Wenn Sie diese Variable verwenden, können Sie das Tool anweisen, zu warten, bis Abfragen ausgeführt werden
wieder normal. Dadurch wird die Warteschlange jedoch nicht verhindert; es wird nur der Server geben
eine Chance, sich von der Warteschlange zu erholen. Wenn Sie eine Warteschlange bemerken, verringern Sie am besten die Zahl
die Chunk-Zeit.
--Passwort
Kurzform: -p; Typ: Zeichenfolge; Gruppe: Verbindung
Passwort für die Verbindung. Wenn das Passwort Kommas enthält, müssen diese maskiert werden
mit Backslash: "exam\,ple"
--pid
Typ: Zeichenfolge
Erstellen Sie die angegebene PID-Datei. Das Tool startet nicht, wenn die PID-Datei bereits vorhanden ist und
die darin enthaltene PID unterscheidet sich von der aktuellen PID. Wenn jedoch die PID-Datei
existiert und die darin enthaltene PID nicht mehr ausgeführt wird, überschreibt das Tool die PID
Datei mit der aktuellen PID. Die PID-Datei wird beim Beenden des Tools automatisch entfernt.
- Plug-in
Typ: Zeichenfolge
Perl-Moduldatei, die eine „pt_table_checksum_plugin“-Klasse definiert. Ein Plugin ermöglicht es Ihnen
um ein Perl-Modul zu schreiben, das sich in viele Teile von pt-table-checksum einbinden lässt. Das
erfordert gute Kenntnisse der Konventionen von Perl und Percona Toolkit, die darüber hinausgehen
Umfang dieser Dokumentation. Bitte kontaktieren Sie Percona, wenn Sie Fragen haben oder
brauche Hilfe.
Weitere Informationen finden Sie unter „PLUGIN“.
--Hafen
Kurzform: -P; Typ: int; Gruppe: Verbindung
Portnummer, die für die Verbindung verwendet werden soll.
--Fortschritt
Typ: Array; Standard: Zeit, 30
Drucken Sie Fortschrittsberichte an STDERR.
Der Wert ist eine durch Kommas getrennte Liste mit zwei Teilen. Der erste Teil kann ein Prozentsatz sein,
Zeit oder Iterationen; der zweite Teil gibt an, wie oft ein Update gedruckt werden soll,
in Prozent, Sekunden oder Anzahl der Iterationen. Das Tool druckt Fortschrittsberichte für
eine Vielzahl zeitaufwändiger Vorgänge, einschließlich des Wartens darauf, dass Replikate aufholen, wenn
sie werden verzögert.
--ruhig
Kurzform: -q; kumulativ: ja; Standard: 0
Nur die wichtigsten Informationen drucken (deaktiviert „--progress“). Dies angeben
Wenn die Option einmal aktiviert ist, druckt das Tool nur Fehler, Warnungen und Tabellen aus, bei denen dies der Fall ist
Prüfsummenunterschiede.
Wenn Sie diese Option zweimal angeben, druckt das Tool nur Fehler aus. In diesem Fall Sie
Mithilfe des Exit-Status des Tools können Sie feststellen, ob Warnungen oder Prüfsummen vorliegen
Unterschiede.
--rekursion
Typ: int
Anzahl der Ebenen, die bei der Erkennung von Replikaten in der Hierarchie rekursiv ausgeführt werden sollen. Standard ist
unendlich. Siehe auch „--recursion-method“ und „REPLICA CHECKS“.
--recursion-method
Typ: Array; Standard: Prozessliste, Hosts
Bevorzugte Rekursionsmethode zum Erkennen von Replikaten. pt-table-checksum wird ausgeführt
mehrere „REPLICA CHECKS“ vor und während des Betriebs.
Obwohl für die Ausführung von pt-table-checksum keine Replikate erforderlich sind, kann das Tool sie nicht erkennen
Diffs auf Slaves, die es nicht entdecken kann. Daher wird eine Warnung gedruckt und die
„EXIT STATUS“ ist ungleich Null, wenn keine Replikate gefunden werden und die Methode nicht „none“ ist. Wenn
Wenn dies geschieht, versuchen Sie es mit einer anderen Rekursionsmethode oder verwenden Sie die Methode „dsn“, um das anzugeben
Replikate zur Überprüfung.
Mögliche Methoden sind:
VERWENDUNG DER METHODE
=========== ===================================== ======
Prozessliste PROZESSLISTE ANZEIGEN
hosts SLAVE-HOSTS ANZEIGEN
Cluster SHOW STATUS LIKE 'wsrep\_incoming\_addresses'
dsn=DSN DSNs aus einer Tabelle
keine Finde keine Sklaven
Die Methode „processlist“ ist die Standardeinstellung, da „SHOW SLAVE HOSTS“ nicht zuverlässig ist.
Wenn der Server jedoch einen nicht standardmäßigen Port (nicht 3306) verwendet, dann die Methode „hosts“.
wird zur Standardeinstellung, da es in diesem Fall besser funktioniert.
Für die Methode „hosts“ müssen Replikate mit „report_host“ konfiguriert werden.
„report_port“ usw.
Die „Cluster“-Methode erfordert einen Cluster basierend auf Galera 23.7.3 oder neuer, wie z.B
Percona XtraDB Cluster-Versionen 5.5.29 und höher. Dadurch werden Knoten in a automatisch erkannt
Cluster mit „SHOW STATUS LIKE 'wsrep\_incoming\_addresses'“. Sie können kombinieren
„cluster“ mit „processlist“ und „hosts“ zur automatischen Erkennung von Clusterknoten und Replikaten,
aber diese Funktionalität ist experimentell.
Die „dsn“-Methode ist etwas Besonderes: Anstatt automatisch Replikate zu erkennen, ist dies eine Besonderheit
Die Methode gibt eine Tabelle mit Replikat-DSNs an. Das Tool stellt nur eine Verbindung zu diesen her
Repliken. Diese Methode funktioniert am besten, wenn Replikate nicht denselben MySQL-Benutzernamen verwenden oder
Passwort als Master eingeben oder wenn Sie verhindern möchten, dass das Tool eine Verbindung zu herstellt
bestimmte Nachbildungen. Die „dsn“-Methode wird wie folgt angegeben: „--recursion-method
dsn=h=host,D=percona,t=dsns". Der angegebene DSN muss D- und t-Teile oder nur einen haben
Datenbankqualifizierter T-Teil, der die DSN-Tabelle angibt. Die DSN-Tabelle muss Folgendes enthalten:
folgender Aufbau:
TABELLE „dsns“ ERSTELLEN (
`Id` int(11) NICHT NULL AUTO_INCREMENT,
`parent_id` int(11) STANDARD NULL,
„dsn“. varchar(255) NICHT NULL,
Primärschlüssel (`id`)
);
DSNs werden nach „id“ sortiert, ansonsten werden „id“ und „parent_id“ ignoriert. Der „dsn“
Die Spalte enthält einen Replikat-DSN, wie er in der Befehlszeile angegeben würde, zum Beispiel:
„h=replica_host,u=repl_user,p=repl_pass“.
Die Methode „none“ bewirkt, dass das Tool alle Slaves und Cluster-Knoten ignoriert. Diese Methode ist
nicht empfohlen, da dadurch die „REPLICA CHECKS“ effektiv deaktiviert werden und nein
Unterschiede zu finden sind. Es ist jedoch nützlich, wenn Sie nur Prüfsummen schreiben müssen
auf dem Master oder einem einzelnen Clusterknoten. Die sicherere Alternative ist
„--no-replicate-check“: Das Tool findet Replikate und Clusterknoten und führt dies aus
„REPLICA CHECKS“, prüft jedoch nicht auf Unterschiede. Siehe „--[no]replicate-check“.
--replizieren
Typ: Zeichenfolge; Standard: percona.checksums
Schreiben Sie Prüfsummenergebnisse in diese Tabelle. Die Replikattabelle muss diese Struktur haben
(MAGIC_create_replicate):
TABLE-Prüfsummen ERSTELLEN (
db VERKOHLEN(64) NICHT NULL,
tbl VERKOHLEN(64) NICHT NULL,
chunk INT NOT NULL,
chunk_time FLOAT NULL,
chunk_index VARCHAR(200) NULL,
untere_Grenze TEXT NULL,
obere_Grenze TEXT NULL,
this_crc VERKOHLEN(40) NICHT NULL,
this_cnt INT NOT NULL,
master_crc VERKOHLEN(40) NULL,
master_cnt INT NULL,
ts TIMESTAMP NICHT NULL STANDARD CURRENT_TIMESTAMP BEI UPDATE CURRENT_TIMESTAMP,
PRIMÄRSCHLÜSSEL (db, tbl, chunk),
INDEX ts_db_tbl (ts, db, tbl)
) ENGINE=InnoDB;
Hinweis: Die Datentypen „lower_boundary“ und „upper_boundary“ können BLOB sein. Siehe „--binary-index“.
Standardmäßig ist „--[no]create-replicate-table“ wahr, also die Datenbank und die Tabelle
Die durch diese Option angegebenen Dateien werden automatisch erstellt, wenn sie nicht vorhanden sind.
Stellen Sie sicher, dass Sie eine geeignete Speicher-Engine für die Replikattabelle auswählen. Wenn du bist
Wenn Sie InnoDB-Tabellen mit einer Prüfsumme versehen und MyISAM für diese Tabelle verwenden, wird ein Deadlock aufgehoben
Replikation, da die Mischung aus transaktionalen und nicht-transaktionalen Tabellen in der
Prüfsummenanweisungen führen dazu, dass es in das Binlog geschrieben wird, obwohl es eine hatte
Fehler. Anschließend erfolgt die Wiedergabe ohne einen Deadlock für die Replikate und die Replikation wird unterbrochen
mit „Unterschiedlicher Fehler bei Master und Slave.“ Mit pt-table ist das kein Problem.
Prüfsumme; Es handelt sich um ein Problem mit der MySQL-Replikation, und Sie können mehr darüber im lesen
MySQL-Handbuch.
Für die Replikattabelle wird niemals eine Prüfsumme erstellt (das Tool fügt diese Tabelle automatisch hinzu).
„--ignore-tables“).
--[keine] Replikatprüfung
Standard: ja
Überprüfen Sie die Replikate nach Abschluss jeder Tabelle auf Datenunterschiede. Das Tool findet
Unterschiede durch Ausführen einer einfachen SELECT-Anweisung für alle erkannten Replikate. Der
Die Abfrage vergleicht die Prüfsummenergebnisse des Replikats mit den Prüfsummenergebnissen des Masters. Es
meldet Unterschiede in der DIFFS-Spalte der Ausgabe.
--replicate-check-only
Überprüfen Sie Replikate auf Konsistenz, ohne Prüfsummenabfragen auszuführen. Diese Option ist
Wird nur mit „--[no]replicate-check“ verwendet. Wenn angegeben, ist dies bei pt-table-checksum nicht der Fall
Prüfsumme aller Tabellen. Es überprüft Replikate auf Unterschiede, die von vorherigen gefunden wurden
Prüfsumme und wird dann beendet. Es könnte nützlich sein, wenn Sie pt-table-checksum leise ausführen
beispielsweise in einem Cron-Job arbeiten und später einen Bericht über die Ergebnisse des Cron-Jobs wünschen,
vielleicht um einen Nagios-Check durchzuführen.
--replicate-check-retries
Typ: int; Standard: 1
Wiederholen Sie den Prüfsummenvergleich so oft, wenn ein Unterschied festgestellt wird. Nur wenn
Nach dieser Anzahl von Prüfungen bleibt ein Unterschied bestehen, wenn er als gültig angesehen wird. Benutze dies
Eine Option mit einem Wert von 2 oder mehr mildert falsche Unterschiede, die bei der Verwendung auftreten
die Option --resume.
--replicate-database
Typ: Zeichenfolge
VERWENDEN Sie nur diese Datenbank. Standardmäßig führt pt-table-checksum USE aus, um das auszuwählen
Datenbank, die die Tabelle enthält, an der gerade gearbeitet wird. Dies ist die beste Anstrengung
um Probleme mit Replikationsfiltern wie binlog_ignore_db und zu vermeiden
Replicate_ignore_db. Replikationsfilter können jedoch zu einer Situation führen, in der dies der Fall ist
Es gibt einfach nicht den einen richtigen Weg, Dinge zu tun. Einige Aussagen werden möglicherweise nicht repliziert und
Andere können dazu führen, dass die Replikation fehlschlägt. In solchen Fällen können Sie diese Option nutzen
Geben Sie eine Standarddatenbank an, die pt-table-checksum mit USE auswählt und nie ändert.
Siehe auch „--[no]check-replication-filters“.
--Lebenslauf
Prüfsummenbildung ab dem letzten abgeschlossenen Block fortsetzen (deaktiviert).
„--[no]empty-replicate-table“). Wenn das Tool stoppt, bevor es alle Tabellen überprüft,
Mit dieser Option wird die Prüfsummenbildung ab dem letzten Teil der letzten Tabelle fortgesetzt
fertig.
--Wiederholungen
Typ: int; Standard: 2
Wiederholen Sie einen Block so oft, wenn ein nicht schwerwiegender Fehler auftritt. Nicht schwerwiegende Fehler sind
Probleme wie eine Sperrwartezeitüberschreitung oder das Abbrechen der Abfrage.
--Laufzeit
Typ: Zeit
Wie lange laufen? Standardmäßig wird ausgeführt, bis für alle Tabellen eine Prüfsumme erstellt wurde. Diese
Zeitwertsuffixe sind zulässig: s (Sekunden), m (Minuten), h (Stunden) und d (Tage).
Kombinieren Sie diese Option mit „--resume“, um die Prüfsumme für möglichst viele Tabellen innerhalb einer zugewiesenen Tabelle zu erstellen
Beim nächsten Ausführen wird das Tool dort fortgesetzt, wo es aufgehört hat.
--Separator
Typ: Zeichenfolge; Standard: #
Das Trennzeichen, das für verwendet wird CONCAT_WS(). Dieses Zeichen wird verwendet, um dem beizutreten
Werte der Spalten bei der Prüfsummenbildung.
--set-vars
Typ: Array; Gruppe: Verbindung
Legen Sie die MySQL-Variablen in dieser durch Kommas getrennten Liste von "variable=value"-Paaren fest.
Standardmäßig sind die Werkzeugsätze:
wait_timeout=10000
innodb_lock_wait_timeout=1
In der Befehlszeile angegebene Variablen überschreiben diese Standardwerte. Zum Beispiel,
Die Angabe von "--set-vars wait_timeout=500" überschreibt den Standardwert von 10000.
Das Tool druckt eine Warnung und fährt fort, wenn eine Variable nicht gesetzt werden kann.
--Steckdose
kurz Formen; Typ: Zeichenfolge; Gruppe: Verbindung
Socket-Datei, die für die Verbindung verwendet werden soll.
--Tabellen
Kurzform: -t; Typ: Hash; Gruppe: Filter
Prüfsumme nur dieser durch Kommas getrennten Tabellenliste. Tabellennamen können mit qualifiziert werden
der Datenbankname.
--tables-regex
Typ: Zeichenfolge; Gruppe: Filter
Prüfsumme nur für Tabellen, deren Namen mit dieser Perl-Regex übereinstimmen.
--trimmen
Speichern TRIMMEN() in VARCHAR-Spalten (hilft beim Vergleich von 4.1 mit >= 5.0). Das ist nützlich
wenn Sie sich nicht um die Unterschiede in den nachgestellten Leerzeichen zwischen den MySQL-Versionen kümmern
unterscheiden sich im Umgang mit nachgestellten Leerzeichen. MySQL 5.0 und höher behalten alle das Trailing bei
Leerzeichen in VARCHAR, während frühere Versionen sie entfernen würden. Diese Unterschiede werden
kann zu falschen Prüfsummenunterschieden führen.
--Benutzer
Kurzform: -u; Typ: Zeichenfolge; Gruppe: Verbindung
Benutzer für die Anmeldung, wenn nicht aktueller Benutzer.
--Version
Gruppe: Hilfe
Version anzeigen und beenden.
--[no]Versionsprüfung
Standard: ja
Suchen Sie nach der neuesten Version von Percona Toolkit, MySQL und anderen Programmen.
Dies ist eine Standardfunktion "Automatisch nach Updates suchen" mit zwei zusätzlichen
Merkmale. Zuerst prüft das Tool die Version anderer Programme auf dem lokalen System in
zusätzlich zu einer eigenen Version. Zum Beispiel überprüft es die Version jedes MySQL-Servers
es verbindet sich mit Perl und dem Perl-Modul DBD::mysql. Zweitens prüft es und warnt
über Versionen mit bekannten Problemen. MySQL 5.5.25 hatte beispielsweise einen kritischen Fehler und
wurde als 5.5.25a wiederveröffentlicht.
Alle Aktualisierungen oder bekannten Probleme werden vor der normalen Ausgabe des Tools an STDOUT ausgegeben.
Diese Funktion sollte niemals den normalen Betrieb des Werkzeugs beeinträchtigen.
Für weitere Informationen besuchen Sie .
--wo
Typ: Zeichenfolge
Führen Sie nur Zeilen aus, die dieser WHERE-Klausel entsprechen. Mit dieser Option können Sie die einschränken
Prüfsumme nur für einen Teil der Tabelle. Dies ist besonders nützlich, wenn Sie Anhang-
nur Tabellen und möchten nicht ständig alle Zeilen erneut überprüfen; Sie könnten einen täglichen Job ausführen
um zum Beispiel einfach die Zeilen von gestern zu überprüfen.
Diese Option ähnelt stark der Option -w für mysqldump. Geben Sie nicht das WO an
Stichwort. Möglicherweise müssen Sie den Wert angeben. Hier ist ein Beispiel:
pt-table-checksum --where „ts > CURRENT_DATE – INTERVAL 1 DAY“
REPLIK KONTROLLEN
Standardmäßig versucht pt-table-checksum, alle verbundenen Replikate zu finden und eine Verbindung zu ihnen herzustellen
der Master-Host. Dieser automatisierte Prozess wird „Slave-Rekursion“ genannt und wird von gesteuert
die Optionen „--recursion-method“ und „--recurse“. Das Tool führt diese Prüfungen bei allen durch
Repliken:
1. „--[no]check-replication-filters“
pt-table-checksum prüft alle Replikate auf Replikationsfilter, da dies möglich ist
den Prüfsummenprozess erschweren oder unterbrechen. Standardmäßig wird das Tool ggf. beendet
Es werden Replikationsfilter gefunden, diese Prüfung kann jedoch durch Angabe deaktiviert werden
„--no-check-replication-filters“.
2. „--replicate“-Tabelle
pt-table-checksum prüft, ob die Tabelle „--replicate“ auf allen Replikaten vorhanden ist, andernfalls
Die Prüfsummenbildung kann die Replikation unterbrechen, wenn die Tabelle auf dem Masterreplikat aktualisiert wird
zu einem Replikat, das die Tabelle nicht hat. Diese Prüfung kann nicht deaktiviert werden, und das Tool
wartet ewig, bis die Tabelle auf allen Replikaten vorhanden ist, und gibt „--progress“-Meldungen aus
während es wartet.
3. Einzelstückgröße
Wenn eine Tabelle in einem einzigen Block auf dem Master überprüft werden kann, ist dies mit pt-table-checksum möglich
Überprüfen Sie, ob die Tabellengröße auf allen Replikaten kleiner als „--chunk-size“ * ist.
„--chunk-size-limit“. Dies verhindert ein seltenes Problem, bei dem sich die Tabelle auf dem Master befindet
leer oder klein, aber auf einer Replik ist es viel größer. In diesem Fall der einzelne Chunk
Eine Prüfsumme auf dem Master würde das Replikat überlasten.
Ein weiteres seltenes Problem tritt auf, wenn die Tabellengröße auf einem Replikat nahe bei liegt
„--chunk-size“ * „--chunk-size-limit“. In solchen Fällen ist die Tabelle wahrscheinlicher
übersprungen, obwohl es sicher ist, die Prüfsumme in einem einzelnen Block zusammenzustellen. Dies geschieht, weil
Bei den Tabellengrößen handelt es sich um Schätzungen. Wenn diese Schätzungen und „--chunk-size“ *
„--chunk-size-limit“ nahezu gleich sind, reagiert diese Prüfung empfindlicher
Es handelt sich eher um die Fehlerspanne der Schätzungen als um tatsächliche signifikante Unterschiede in den Tabellengrößen.
Die Angabe eines größeren Werts für „--chunk-size-limit“ hilft, dieses Problem zu vermeiden.
Diese Prüfung kann nicht deaktiviert werden.
4. Verzögerung
Nach jedem Block prüft pt-table-checksum die Verzögerung auf allen Replikaten oder nur auf den
Replikat, angegeben durch „--check-slave-lag“. Dies trägt dazu bei, dass das Werkzeug nicht überlastet wird
Replikate mit Prüfsummendaten. Es gibt keine Möglichkeit, diese Prüfung zu deaktivieren, aber Sie können
Geben Sie ein einzelnes Replikat an, das mit „--check-slave-lag“ überprüft werden soll, und ob dieses Replikat das ist
Dadurch wird verhindert, dass das Tool zu lange darauf wartet, dass die Replikationsverzögerung nachlässt.
5. Prüfsummenblöcke
Wenn pt-table-checksum mit der Prüfsummenbildung einer Tabelle fertig ist, wartet es auf die letzte Prüfsumme
Chunk, um auf alle Replikate zu replizieren, damit er den „--[no]replicate-check“ durchführen kann.
Das Deaktivieren dieser Option durch Angabe von --no-replicate-check deaktiviert diese Prüfung, aber sie
deaktiviert außerdem die sofortige Meldung von Prüfsummenunterschieden und erfordert daher eine zweite Meldung
Führen Sie das Tool mit „--replicate-check-only“ aus, um Prüfsummenunterschiede zu finden und auszudrucken.
PLUGIN
Die durch „--plugin“ angegebene Datei muss eine aufgerufene Klasse (dh ein Paket) definieren
„pt_table_checksum_plugin“ mit einer „new()“-Subroutine. Das Tool erstellt eine Instanz von
Rufen Sie diese Klasse auf und rufen Sie alle von ihr definierten Hooks auf. Es sind keine Hooks erforderlich, ein Plugin jedoch nicht
ohne sie sehr nützlich.
Diese Hooks werden in dieser Reihenfolge aufgerufen, sofern sie definiert sind:
init
before_replicate_check
after_replicate_check
get_slave_lag
before_checksum_table
after_checksum_table
Jedem Hook werden unterschiedliche Argumente übergeben. Um zu sehen, welche Argumente an einen Hook übergeben werden,
Suchen Sie im Quellcode des Tools nach dem Namen des Hooks, etwa:
# --plugin-Hook
if ( $plugin && $plugin->can('init') ) {
$plugin->init(
Sklaven => $Sklaven,
Slave_lag_cxns => $slave_lag_cxns,
repl_table => $repl_table,
);
}
Der Kommentar „# --plugin Hook“ geht jedem Hook-Aufruf voraus.
Bitte wenden Sie sich an Percona, wenn Sie Fragen haben oder Hilfe benötigen.
dsn OPTIONAL
Diese DSN-Optionen werden verwendet, um einen DSN zu erstellen. Jede Option wird wie "option=value" angegeben.
Bei den Optionen muss die Groß-/Kleinschreibung beachtet werden, sodass P und p nicht dieselbe Option sind. Es kann nicht sein
Leerzeichen vor oder nach dem "=" und wenn der Wert Leerzeichen enthält, muss er in Anführungszeichen gesetzt werden.
DSN-Optionen sind durch Kommas getrennt. Ausführliche Informationen finden Sie auf der percona-toolkit-Manpage.
· EIN
dsn: Zeichensatz; kopieren: ja
Standardzeichensatz.
· D
Kopie: nein
DSN-Tabellendatenbank.
· F.
dsn: mysql_read_default_file; kopieren: ja
Standarddatei für Verbindungswerte.
· H
dsn: host; kopieren: ja
Mit Host verbinden.
· P
dsn: Passwort; kopieren: ja
Passwort für die Verbindung. Wenn das Passwort Kommas enthält, müssen diese maskiert werden
mit Backslash: "exam\,ple"
· P.
dsn: port; kopieren: ja
Portnummer, die für die Verbindung verwendet werden soll.
· S
dsn: mysql_socket; Kopie: nein
Socket-Datei, die für die Verbindung verwendet werden soll.
· T
Kopie: nein
DSN-Tabellentabelle.
· du
dsn: Benutzer; kopieren: ja
Benutzer für die Anmeldung, wenn nicht aktueller Benutzer.
Die Umgebungsvariable "PTDEBUG" ermöglicht die ausführliche Debugging-Ausgabe an STDERR. Ermöglichen
Debuggen und die gesamte Ausgabe in eine Datei erfassen, führen Sie das Tool wie folgt aus:
PTDEBUG=1 pt-Tabellen-Prüfsumme ... > DATEI 2>&1
Seien Sie vorsichtig: Die Debug-Ausgabe ist umfangreich und kann mehrere Megabyte an Ausgabe erzeugen.
SYSTEM VORAUSSETZUNGEN
Sie benötigen Perl, DBI, DBD::mysql und einige Kernpakete, die in jedem installiert werden sollten
relativ neue Version von Perl.
Verwenden Sie pt-table-checksump online über die Dienste von onworks.net