pt-online-schema-changep – Online in der Cloud

Dies ist der Befehl pt-online-schema-changep, 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-online-schema-change – Tabellen ALTER, ohne sie zu sperren.

ZUSAMMENFASSUNG


Verwendung: pt-online-schema-change [OPTIONEN] DSN

pt-online-schema-change ändert die Struktur einer Tabelle, ohne Lese- oder Schreibvorgänge zu blockieren.
Geben Sie die Datenbank und die Tabelle im DSN an. Benutzen Sie dieses Tool nicht, bevor Sie es gelesen haben
Dokumentation und prüfen Sie Ihre Backups sorgfältig.

Fügen Sie eine Spalte zu sakila.actor hinzu:

pt-online-schema-change --alter „ADD COLUMN c1 INT“ D=sakila,t=actor

Ändern Sie sakila.actor in InnoDB, um OPTIMIZE TABLE effektiv in einer nicht blockierenden Form auszuführen
Mode, weil es bereits eine InnoDB-Tabelle ist:

pt-online-schema-change --alter „ENGINE=InnoDB“ D=sakila,t=actor

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

BESCHREIBUNG


pt-online-schema-change emuliert die Art und Weise, wie MySQL Tabellen intern ändert, aber es funktioniert
auf einer Kopie der Tabelle, die Sie ändern möchten. Dies bedeutet, dass die Originaltabelle nicht vorhanden ist
gesperrt, und Clients können die darin enthaltenen Daten weiterhin lesen und ändern.

pt-online-schema-change erstellt eine leere Kopie der zu ändernden Tabelle
wie gewünscht, und kopieren Sie dann Zeilen aus der Originaltabelle in die neue Tabelle. Wenn das
Wenn der Kopiervorgang abgeschlossen ist, wird die ursprüngliche Tabelle entfernt und durch die neue ersetzt. Von
Standardmäßig wird auch die Originaltabelle gelöscht.

Der Datenkopiervorgang wird in kleinen Datenblöcken durchgeführt, die je nach Bedarf variiert werden
Lassen Sie sie in einer bestimmten Zeitspanne ausführen (siehe „--chunk-time“). Dieser Prozess ist sehr
Ähnlich wie andere Tools wie pt-table-checksum funktionieren. Alle Änderungen an Daten in
Die ursprünglichen Tabellen während des Kopiervorgangs werden aufgrund des Tools in der neuen Tabelle widergespiegelt
Erstellt Trigger für die ursprüngliche Tabelle, um die entsprechenden Zeilen in der neuen Tabelle zu aktualisieren.
Die Verwendung von Triggern bedeutet, dass das Tool nicht funktioniert, wenn bereits Trigger definiert sind
auf den Tisch.

Wenn das Tool mit dem Kopieren der Daten in die neue Tabelle fertig ist, verwendet es eine atomare „RENAME TABLE“-Anweisung.
Vorgang zum gleichzeitigen Umbenennen der ursprünglichen und neuen Tabellen. Nachdem dies abgeschlossen ist,
Das Tool löscht die Originaltabelle.

Fremdschlüssel erschweren die Bedienung des Tools und bringen zusätzliche Risiken mit sich. Die Technik
Die Möglichkeit, die ursprünglichen und neuen Tabellen atomar umzubenennen, funktioniert nicht, wenn Fremdschlüssel darauf verweisen
an den Tisch. Das Tool muss Fremdschlüssel aktualisieren, um auf die neue Tabelle nach dem Schema zu verweisen
Die Änderung ist abgeschlossen. Das Tool unterstützt zwei Methoden, um dies zu erreichen. Du kannst lesen
Mehr dazu in der Dokumentation zu „--alter-foreign-keys-method“.

Fremdschlüssel verursachen auch einige Nebenwirkungen. Die endgültige Tabelle wird dieselben Fremdschlüssel haben
und Indizes als Originaltabelle (es sei denn, Sie geben in Ihrem ALTER etwas anderes an
Anweisung), aber die Namen der Objekte können leicht geändert werden, um Objektnamen zu vermeiden
Kollisionen in MySQL und InnoDB.

Aus Sicherheitsgründen ändert das Tool die Tabelle nicht, es sei denn, Sie geben die Option „--execute“ an.
Dies ist standardmäßig nicht aktiviert. Das Tool unterstützt eine Vielzahl weiterer Maßnahmen zur Vorbeugung
unerwünschtes Laden oder andere Probleme, einschließlich der automatischen Erkennung von Replikaten und der Verbindung zu
sie und unter Verwendung der folgenden Sicherheitsüberprüfungen:

· In den meisten Fällen verweigert das Tool den Betrieb, es sei denn, es liegt ein PRIMÄRSCHLÜSSEL oder ein EINZIGARTIGER INDEX vor
in der Tabelle vorhanden. Weitere Informationen finden Sie unter „--alter“.

· Das Tool verweigert den Betrieb, wenn es Replikationsfilter erkennt. Sehen
„--[no]check-replication-filters“ für Details.

· Das Tool unterbricht den Datenkopiervorgang, wenn es verzögerte Replikate feststellt
in der Replikation. Weitere Informationen finden Sie unter „--max-lag“.

· Das Tool unterbricht oder bricht den Vorgang ab, wenn es eine zu hohe Auslastung des Servers feststellt. Sehen
„--max-load“ und „--critical-load“ für Details.

· Das Tool setzt „innodb_lock_wait_timeout=1“ und (für MySQL 5.5 und neuer)
„lock_wait_timeout=60“, sodass die Wahrscheinlichkeit größer ist, Opfer einer Sperre zu werden
Es ist weniger wahrscheinlich, dass andere Transaktionen gestört werden. Diese Werte können sein
durch Angabe von „--set-vars“ geändert werden.

· Das Tool weigert sich, die Tabelle zu ändern, wenn Fremdschlüsseleinschränkungen darauf verweisen, es sei denn
Sie geben „--alter-foreign-keys-method“ an.

· Das Tool kann MyISAM-Tabellen auf „Percona XtraDB Cluster“-Knoten nicht ändern.

Percona XtraDB Cluster


pt-online-schema-change funktioniert mit Percona XtraDB Cluster (PXC) 5.5.28-23.7 und neuer, aber
Es gibt zwei Einschränkungen: Nur InnoDB-Tabellen können geändert werden, und „wsrep_OSU_method“ muss geändert werden
auf „TOI“ (Total Order Isolation) eingestellt werden. Das Tool wird mit einem Fehler beendet, wenn der Host ein ist
Clusterknoten und die Tabelle ist MyISAM oder wird in MyISAM konvertiert ("ENGINE=MyISAM"), oder
wenn „wsrep_OSU_method“ nicht „TOI“ ist. Es gibt keine Möglichkeit, diese Prüfungen zu deaktivieren.

AUSGABE


Das Tool gibt Informationen über seine Aktivitäten auf STDOUT aus, damit Sie sehen können, um welche Art es sich handelt
tun. Während der Datenkopierphase werden „--progress“-Berichte an STDERR gedruckt. Du kannst bekommen
zusätzliche Informationen durch Angabe von „--print“.

Wenn „--statistics“ angegeben ist, wird ein Bericht über die Anzahl verschiedener interner Ereignisse gedruckt
das Ende, wie:

# Ereignisanzahl
# ====== =====
# EINFÜGEN 1

OPTIONAL


„--dry-run“ und „--execute“ schließen sich gegenseitig aus.

Dieses Tool akzeptiert zusätzliche Befehlszeilenargumente. Siehe "SYNOPSIS" und Verwendung
Informationen für Details.

--ändern
Typ: Zeichenfolge

Die Schemaänderung ohne die ALTER TABLE-Schlüsselwörter. Sie können mehrere durchführen
Änderungen an der Tabelle können Sie durch Kommas angeben. Bitte beziehen Sie sich auf MySQL
Handbuch zur Syntax von ALTER TABLE.

Es gelten die folgenden Einschränkungen, die bei einem Versuch zum Ausfall des Tools führen
unvorhersehbare Wege:

· In fast allen Fällen muss ein PRIMÄRSCHLÜSSEL oder EINZIGARTIGER INDEX im vorhanden sein
Tisch. Dies ist notwendig, da das Tool einen DELETE-Trigger erstellt, um die Datei beizubehalten
Neue Tabelle wird aktualisiert, während der Prozess ausgeführt wird.

Eine bemerkenswerte Ausnahme ist, wenn aus einem PRIMARY KEY oder UNIQUE INDEX erstellt wird
vorhandenen Spalten als Teil der ALTER-Klausel; in diesem Fall werden diese verwendet
Spalte(n) für den DELETE-Trigger.

· Die Klausel „RENAME“ kann nicht zum Umbenennen der Tabelle verwendet werden.

· Spalten können nicht durch Löschen und erneutes Hinzufügen mit dem neuen Namen umbenannt werden. Das Werkzeug
kopiert die Daten der ursprünglichen Spalte nicht in die neue Spalte.

· Wenn Sie eine Spalte ohne Standardwert hinzufügen und sie auf NOT NULL setzen, wird das Tool dies tun
schlägt fehl, da nicht versucht wird, einen Standardwert für Sie zu erraten; Sie müssen die angeben
default.

· „DROP FOREIGN KEY context_name“ erfordert stattdessen die Angabe von „_constraint_name“.
als der echte „constraint_name“. Aufgrund einer Einschränkung in MySQL kann pt-online-schema-
Durch die Änderung wird den Namen von Fremdschlüsseleinschränkungen beim Erstellen ein führender Unterstrich hinzugefügt
neuer Tisch. Um diese Einschränkung beispielsweise aufzuheben:

CONSTRAINT `fk_foo` FOREIGN KEY (`foo_id`) REFERENCES `bar` (`foo_id`)

Sie müssen „--alter „DROP FOREIGN KEY _fk_foo““ angeben.

· Das Tool verwendet bei MySQL 5.0 nicht den „LOCK IN SHARE MODE“, da dies zu a führen kann
Slave-Fehler, der die Replikation unterbricht:

Die Abfrage verursachte unterschiedliche Fehler auf Master und Slave. Fehler beim Master:
„Beim Versuch, eine Sperre zu erhalten, wurde ein Deadlock gefunden; Versuchen Sie, die Transaktion neu zu starten“ (1213),
Fehler am Slave: „kein Fehler“ (0). Standarddatenbank: 'pt_osc'.
Abfrage: 'INSERT INTO pt_osc.t (id, c) VALUES ('730', 'new row')'

Der Fehler tritt beim Konvertieren einer MyISAM-Tabelle in InnoDB auf, da MyISAM nicht
transaktional, aber InnoDB ist transaktional. MySQL 5.1 und neuere Versionen behandeln diesen Fall
richtig, aber beim Testen wird der Fehler in 5 % der Fälle mit MySQL 5.0 reproduziert.

Dies ist ein MySQL-Fehler, ähnlich wiehttp://bugs.mysql.com/bug.php?id=45694>, aber
In MySQL 5.0 gibt es keine Lösung oder Problemumgehung. Ohne „LOCK IN SHARE MODE“, Tests
Dies geschieht in 100 % der Fälle, sodass das Risiko eines Datenverlusts oder einer Unterbrechung der Replikation bestehen sollte
unerheblich.

Be sicher zu überprüfen die neu Tabelle if mit automatisierten MySQL 5.0 und Umwandlung von MyISAM zu
InnoDB!

--alter-foreign-keys-method
Typ: Zeichenfolge

So ändern Sie Fremdschlüssel, sodass sie auf die neue Tabelle verweisen. Fremdschlüssel das
Verweise auf die zu ändernde Tabelle müssen besonders behandelt werden, um sicherzustellen, dass sie
Verweisen Sie weiterhin auf die richtige Tabelle. Wenn das Tool die ursprüngliche Tabelle in umbenennt
Lassen Sie den neuen an seine Stelle treten, die Fremdschlüssel „folgen“ der umbenannten Tabelle und müssen
geändert werden, um stattdessen auf die neue Tabelle zu verweisen.

Das Tool unterstützt zwei Techniken, um dies zu erreichen. Es findet automatisch „Kind“.
Tabellen“, die auf die zu ändernde Tabelle verweisen.

Auto
Ermitteln Sie automatisch, welche Methode die beste ist. Das Tool verwendet „rebuild_constraints“
wenn möglich (Einzelheiten finden Sie in der Beschreibung dieser Methode), und wenn nicht, dann
verwendet „drop_swap“.

rebuild_constraints
Diese Methode verwendet „ALTER TABLE“, um Fremdschlüsseleinschränkungen zu löschen und wieder hinzuzufügen
Verweisen Sie auf die neue Tabelle. Dies ist die bevorzugte Technik, es sei denn, eine oder mehrere davon
Die „untergeordneten“ Tabellen sind so groß, dass „ALTER“ zu lange dauern würde. Das Werkzeug
Bestimmt dies, indem die Anzahl der Zeilen in der untergeordneten Tabelle mit der Rate verglichen wird
wodurch das Tool Zeilen aus der alten Tabelle in die neue Tabelle kopieren kann. Wenn die
Das Tool schätzt, dass die untergeordnete Tabelle in kürzerer Zeit geändert werden kann als die
„--chunk-time“, dann wird diese Technik verwendet. Zum Zweck der Schätzung
Je nachdem, wie viel Zeit zum Ändern der untergeordneten Tabelle benötigt wird, vervielfacht das Tool die Zeilenkopierrate
durch „--chunk-size-limit“, da „ALTER TABLE“ von MySQL normalerweise viel schneller ist
als der externe Vorgang des Kopierens von Zeilen.

Aufgrund einer Einschränkung in MySQL haben Fremdschlüssel nach dem nicht die gleichen Namen
ALTER, was sie vorher getan haben. Das Tool muss den Fremdschlüssel umbenennen, wenn es ausgeführt wird
definiert es neu, wodurch dem Namen ein führender Unterstrich hinzugefügt wird. In einigen Fällen MySQL
Benennt außerdem automatisch die für den Fremdschlüssel erforderlichen Indizes um.

drop_swap
Deaktivieren Sie Fremdschlüsselprüfungen (FOREIGN_KEY_CHECKS=0) und löschen Sie dann die Originaltabelle
bevor Sie die neue Tabelle an ihrer Stelle umbenennen. Das ist anders als normal
Methode zum Austauschen der alten und neuen Tabelle, die ein atomares „RENAME“ verwendet
für Clientanwendungen nicht erkennbar.

Diese Methode ist schneller und blockiert nicht, ist aber aus zwei Gründen riskanter.
Erstens für eine kurze Zeit zwischen dem Löschen der ursprünglichen Tabelle und dem Umbenennen der
temporäre Tabelle, die zu ändernde Tabelle existiert einfach nicht und fragt ab
dagegen führt zu einem Fehler. Zweitens, wenn ein Fehler vorliegt und der neue
Wenn die Tabelle nicht an der Stelle der alten umbenannt werden kann, ist es dafür zu spät
Abbruch, da die alte Tabelle dauerhaft verschwunden ist.

Diese Methode erzwingt „--no-swap-tables“ und „--no-drop-old-table“.

keine
Diese Methode ist wie „drop_swap“ ohne „swap“. Alle Fremdschlüssel, die
Wenn auf die ursprüngliche Tabelle verwiesen wird, wird nun auf eine nicht vorhandene Tabelle verwiesen. Dieser Wille
verursachen typischerweise Fremdschlüsselverletzungen, die in „SHOW ENGINE INNODB“ sichtbar sind
STATUS“, ähnlich wie folgt:

Ich versuche, dem Index das Tupel „idx_fk_staff_id“ hinzuzufügen:
Datentupel: 2 Felder;
0: Länge 1; Hex 05; aufsteigend ;;
1: Länge 4; Hex 80000001; aufsteigend ;;
Aber die übergeordnete Tabelle „sakila“.`staff_old`
oder die .ibd-Datei existiert derzeit nicht!

Dies liegt daran, dass die ursprüngliche Tabelle (in diesem Fall sakila.staff) in umbenannt wurde
sakila.staff_old und dann gelöscht. Diese Methode zur Behandlung von Fremdschlüsseleinschränkungen
wird bereitgestellt, damit der Datenbankadministrator die integrierten Funktionen des Tools deaktivieren kann
Funktionalität auf Wunsch.

--[no]analyze-before-swap
Standard: ja

Führen Sie ANALYZE TABLE für die neue Tabelle aus, bevor Sie mit der alten tauschen. Standardmäßig,
Dies geschieht nur, wenn MySQL 5.6 und höher ausgeführt wird und „innodb_stats_persistent“ vorhanden ist
ermöglicht. Geben Sie die Option explizit an, um sie unabhängig von MySQL zu aktivieren oder zu deaktivieren
version und „innodb_stats_persistent“.

Dadurch wird ein potenziell schwerwiegendes Problem im Zusammenhang mit den Statistiken des InnoDB-Optimierers umgangen.
Wenn die Tabelle, die benachrichtigt wird, ausgelastet ist und das Tool schnell fertig wird, wird die neue Tabelle dies tun
nach dem Austausch keine Optimierungsstatistiken mehr haben. Dies kann zu einer schnellen Indexverwendung führen
Abfragen, um vollständige Tabellenscans durchzuführen, bis die Optimierungsstatistiken aktualisiert werden (normalerweise danach).
10 Sekunden). Wenn die Tabelle groß und der Server stark ausgelastet ist, kann dies zu einem Ausfall führen.

--ask-pass
Beim Herstellen einer Verbindung mit MySQL zur Eingabe eines Kennworts auffordern.

--Zeichensatz
Kurzform: -A; Typ: Zeichenfolge

Standardzeichensatz. Wenn der Wert utf8 ist, setzt Perls binmode auf STDOUT auf utf8,
übergibt die Option mysql_enable_utf8 an DBD::mysql und führt danach SET NAMES UTF8 aus
Verbindung zu MySQL. Jeder andere Wert setzt binmode auf STDOUT ohne die utf8-Ebene,
und führt SET NAMES aus, nachdem eine Verbindung zu MySQL hergestellt wurde.

--[no]check-alter
Standard: ja

Analysiert das angegebene „--alter“ und versucht, vor möglichem unbeabsichtigtem Verhalten zu warnen.
Derzeit wird Folgendes überprüft:

Spalte wird umbenannt
In früheren Versionen des Tools kann eine Spalte mit „CHANGE COLUMN name“ umbenannt werden
neuer_name“ würde dazu führen, dass die Daten dieser Spalte verloren gehen. Das Tool analysiert nun die
alter-Anweisung und versucht, diese Fälle abzufangen, sodass die umbenannten Spalten dies tun sollten
die gleichen Daten wie die Originale. Der Code, der dies tut, ist jedoch kein vollständiger Code.
SQL-Parser defekt, daher sollten Sie das Tool zunächst mit „--dry-run“ und „--print“ ausführen.
und stellen Sie sicher, dass die umbenannten Spalten korrekt erkannt werden.

PRIMÄRSCHLÜSSEL LASSEN
Wenn „--alter“ „DROP PRIMARY KEY“ enthält (ohne Berücksichtigung von Groß- und Kleinschreibung), wird eine Warnung angezeigt
wird gedruckt und das Tool wird beendet, sofern nicht „--dry-run“ angegeben ist. Ändern der
Der Primärschlüssel kann gefährlich sein, aber das Tool kann damit umgehen. Die Auslöser des Tools,
insbesondere der DELETE-Trigger, sind am stärksten von der Änderung des Primärschlüssels betroffen
weil das Tool für seine Trigger bevorzugt den Primärschlüssel verwendet. Du solltest
Führen Sie das Tool zunächst mit „--dry-run“ und „--print“ aus und überprüfen Sie, ob die Auslöser vorhanden sind
korrigieren.

--Check-Intervall
Typ: Zeit; Standard: 1

Ruhezeit zwischen Prüfungen für „--max-lag“.

--[no]check-plan
Standard: ja

Überprüfen Sie die Abfrageausführungspläne auf Sicherheit. Standardmäßig führt diese Option dazu, dass das Tool ausgeführt wird
EXPLAIN, bevor Sie Abfragen ausführen, die auf eine kleine Datenmenge zugreifen sollen, aber
Dies könnte auf viele Zeilen zugreifen, wenn MySQL einen schlechten Ausführungsplan wählt. Dazu gehören die
Abfragen, um Chunk-Grenzen und die Chunk-Abfragen selbst zu bestimmen. Wenn es erscheint
Wenn MySQL einen fehlerhaften Abfrageausführungsplan verwendet, überspringt das Tool den Teil davon
Tabelle.

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

Abbruch, wenn auf einem Server ein Replikationsfilter festgelegt ist. Das Tool sucht nach Server
Optionen, die die Replikation filtern, wie etwa binlog_ignore_db und Replicate_do_db. Wenn es
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 ändern, die auf dem Master und nicht auf den Replikaten vorhanden sind,
weil es dazu führen könnte, dass die Replikation fehlschlägt. Weitere Informationen zur Replikation
Regeln, siehehttp://dev.mysql.com/doc/en/replication-rules.html>.

--check-slave-lag
Typ: Zeichenfolge

Unterbrechen Sie die Datenkopie, bis die Verzögerung dieses Replikats kleiner als „--max-lag“ ist. Der Wert ist a
DSN, der Eigenschaften von den Verbindungsoptionen („--port“, „--user“,
usw.). Diese Option überschreibt das normale Verhalten bei der Suche nach und kontinuierlich
Überwachung der Replikationsverzögerung auf ALLEN verbundenen Replikaten. Wenn Sie nicht überwachen möchten
ALLE Replikate, aber Sie möchten, dass mehr als nur ein Replikat überwacht wird, dann verwenden Sie die
DSN-Option zur Option „--recursion-method“ anstelle dieser Option.

--chunk-index
Typ: Zeichenfolge

Bevorzugen Sie diesen Index für Chunking-Tabellen. Standardmäßig wählt das Tool 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 das Tool auf die Standardeinstellung zurück
Verhalten bei der Auswahl eines Index. Das Tool fügt den Index zu den SQL-Anweisungen in a hinzu
„FORCE INDEX“-Klausel. Seien Sie vorsichtig, wenn Sie diese Option verwenden. eine schlechte Wahl des Index könnte
schlechte Leistung verursachen.

--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 jeden kopierten Block ausgewählt werden sollen. Zulässige Suffixe sind k, M, G.

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.

--chunk-size-limit
Typ: Schwimmer; Standard: 4.0

Kopieren Sie keine Blöcke, die viel größer als die gewünschte Blockgröße sind.

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
Größe multipliziert mit dem Grenzwert, 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. Sie können die Überprüfung übergroßer Blöcke deaktivieren, indem Sie den Wert 0 angeben.

Das Tool verwendet diese Option auch, um zu bestimmen, wie mit Fremdschlüsseln umgegangen wird, auf die verwiesen wird
Die zu ändernde Tabelle. Weitere Informationen finden Sie unter „--alter-foreign-keys-method“.

--chunk-time
Typ: Schwimmer; Standard: 0.5

Passen Sie die Blockgröße dynamisch an, sodass die Ausführung jeder Datenkopierabfrage so lange dauert.
Das Tool verfolgt die Kopierrate (Zeilen pro Sekunde) und passt die Blockgröße nach jeder Zeile an
Datenkopierabfrage, sodass die nächste Abfrage diese Zeit (in Sekunden) benötigt
ausführen. Es wird also ein exponentiell abnehmender gleitender Durchschnitt der Abfragen pro Sekunde beibehalten
dass, wenn sich die Leistung des Servers aufgrund von Änderungen in der Serverlast ändert, das Tool
passt sich schnell an.

Wenn diese Option auf Null gesetzt ist, wird die Blockgröße nicht automatisch angepasst, die Abfragezeiten jedoch
variieren, die Größe der Abfrageblöcke jedoch nicht. Eine andere Möglichkeit, dasselbe zu tun, besteht darin, a anzugeben
Geben Sie den Wert für „--chunk-size“ explizit ein, anstatt ihn auf dem Standardwert zu belassen.

--config
Typ: Array

Lesen Sie diese durch Kommas getrennte Liste von Konfigurationsdateien; falls angegeben, muss dies der erste sein
Option in der Befehlszeile.

--critical-load
Typ: Array; Standard: Threads_running=50

Untersuchen Sie SHOW GLOBAL STATUS nach jedem Block und brechen Sie ab, wenn die Last zu hoch ist. Der
Die Option akzeptiert eine durch Kommas getrennte Liste von MySQL-Statusvariablen und Schwellenwerten. Ein
Auf jede Variable kann optional „=MAX_VALUE“ (oder „:MAX_VALUE“) folgen. Wenn nicht angegeben, wird die
Das Tool ermittelt einen Schwellenwert, indem es den aktuellen Wert beim Start untersucht und ihn verdoppelt.

Weitere Details finden Sie unter „--max-load“. Diese Optionen funktionieren ähnlich, außer dass dies der Fall ist
Die Option bricht den Vorgang des Tools ab, anstatt ihn anzuhalten. Der Standardwert ist
wird anders berechnet, wenn Sie keinen Schwellenwert angeben. Der Grund für diese Option ist ein
Sicherheitsüberprüfung für den Fall, dass die Trigger auf der Originaltabelle den Server so stark belasten
dass es Ausfallzeiten verursacht. Es gibt wahrscheinlich keinen einzelnen Wert von Threads_running
Dies ist für jeden Server falsch, aber ein Standardwert von 50 scheint für ihn wahrscheinlich inakzeptabel hoch zu sein
Die meisten Server weisen darauf hin, dass der Vorgang sofort abgebrochen werden sollte.

--Datenbank
Kurzform: -D; Typ: Zeichenfolge

Verbinden Sie sich mit dieser Datenbank.

--default-engine
Entfernen Sie „ENGINE“ aus der neuen Tabelle.

Standardmäßig wird die neue Tabelle mit denselben Tabellenoptionen wie die ursprüngliche Tabelle erstellt.
Wenn also die ursprüngliche Tabelle InnoDB verwendet, verwendet die neue Tabelle InnoDB. Mit Sicherheit
In Fällen mit Replikation kann dies zu unbeabsichtigten Änderungen an Replikaten führen, die a verwenden
unterschiedliche Engine für die gleiche Tabelle. Durch Angabe dieser Option wird die neue Tabelle erstellt
mit der Standard-Engine des Systems erstellt werden.

--defaults-Datei
Kurzform: -F; Typ: Zeichenfolge

Lesen Sie nur MySQL-Optionen aus der angegebenen Datei. Sie müssen einen absoluten Pfadnamen angeben.

--[no]drop-new-table
Standard: ja

Löschen Sie die neue Tabelle, wenn das Kopieren der Originaltabelle fehlschlägt.

Durch die Angabe von „--no-drop-new-table“ und „--no-swap-tables“ bleibt die neue, geänderte Kopie übrig
der Tabelle, ohne die ursprüngliche Tabelle zu ändern. Siehe „--new-table-name“.

--no-drop-new-table funktioniert nicht mit „alter-foreign-keys-method drop_swap“.

--[no]drop-old-table
Standard: ja

Löschen Sie die ursprüngliche Tabelle, nachdem Sie sie umbenannt haben. Nachdem die ursprüngliche Tabelle erstellt wurde
erfolgreich umbenannt, damit die neue Tabelle an ihre Stelle tritt, und wenn keine Fehler vorliegen,
Das Tool löscht standardmäßig die Originaltabelle. Bei Fehlern verlässt das Tool den Vorgang
der ursprüngliche Tisch an Ort und Stelle.

Wenn „--no-swap-tables“ angegeben ist, gibt es keine alte Tabelle, die gelöscht werden könnte.

--[keine] Drop-Trigger
Standard: ja

Drop-Trigger auf der alten Tabelle. „--no-drop-triggers“ erzwingt „--no-drop-old-table“.

--Probelauf
Erstellen und ändern Sie die neue Tabelle, aber erstellen Sie keine Trigger, kopieren Sie keine Daten und ersetzen Sie sie nicht
Originaltabelle.

--ausführen
Geben Sie an, dass Sie die Dokumentation gelesen haben und die Tabelle ändern möchten. Du musst
Geben Sie diese Option an, um die Tabelle zu ändern. Wenn Sie dies nicht tun, wird das Tool nur ausgeführt
einige Sicherheitskontrollen und Ausstieg. Dadurch stellen Sie sicher, dass Sie die Dokumentation gelesen haben
und verstehen, wie man dieses Tool verwendet. Wenn Sie die Dokumentation nicht gelesen haben, dann tun Sie es
Geben Sie diese Option nicht an.

--Macht
Diese Option umgeht die Bestätigung im Falle der Verwendung von alter-foreign-keys-method = none ,
Dies könnte Fremdschlüsseleinschränkungen durchbrechen.

--help
Hilfe anzeigen und beenden.

--Gastgeber
Kurzform: -h; Typ: Zeichenfolge

Mit Host verbinden.

--max-flow-ctl
Typ: float

Etwas ähnlich wie --max-lag, aber für PXC-Cluster. Überprüfen Sie die durchschnittliche Zeit, die der Cluster verbracht hat
Halten Sie für die Flusskontrolle an und lassen Sie das Werkzeug anhalten, wenn der angegebene Prozentsatz überschritten wird
in der Option. Ein Wert von 0 würde das Tool pausieren lassen, wenn *irgendeine* Flusskontrolle erfolgt
Aktivität wird erkannt. Standardmäßig wird keine Flusskontrollprüfung durchgeführt. Diese Option ist verfügbar
für PXC-Versionen 5.6 oder höher.

--max-lag
Typ: Zeit; Standard: 1s

Unterbrechen Sie die Datenkopie, bis die Verzögerung aller Replikate unter diesem Wert liegt. Nach jedem Daten-
Bei der Kopierabfrage (jeder Block) prüft das Tool die Replikationsverzögerung aller Replikate
die es über Seconds_Behind_Master verbindet. Wenn eine Replik mehr als zurückliegt
den Wert dieser Option, dann wird das Tool für „--check-interval“ Sekunden in den Ruhezustand versetzt,
Überprüfen Sie dann alle Replikate erneut. Wenn Sie „--check-slave-lag“ angeben, dann nur das Tool
Untersucht diesen Server auf Verzögerungen, nicht alle Server. Wenn Sie genau steuern möchten, welche
Server, die das Tool überwacht, verwenden Sie den DSN-Wert für „--recursion-method“.

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 Datenkopie wird fortgesetzt, wenn alle
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.

--Tragfähigkeit
Typ: Array; Standard: Threads_running=25

Untersuchen Sie SHOW GLOBAL STATUS nach jedem Block und halten Sie an, wenn Statusvariablen vorhanden sind
höher als ihre Schwellenwerte. Die Option akzeptiert eine durch Kommas getrennte Liste von MySQL
Statusvariablen. Auf jeden kann optional ein „=MAX_VALUE“ (oder „:MAX_VALUE“) folgen
Variable. Wenn kein Wert angegeben ist, ermittelt das Tool einen Schwellenwert, indem es den Strom untersucht
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 Datenkopierabfragen aufdringlich sind oder Sperrwartezeiten verursachen, dann
Andere Abfragen 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 Abfrage. Wenn Sie hierfür einen Schwellenwert angeben
Variable, dann können Sie das Tool anweisen, zu warten, bis die Abfragen normal ausgeführt werden
wieder. Dies verhindert jedoch nicht die Warteschlangenbildung; Es gibt dem Server nur eine Chance
um sich von der Warteschlange zu erholen. Wenn Sie eine Warteschlange bemerken, verringern Sie am besten die Zeit
Chunk-Zeit.

--new-table-name
Typ: Zeichenfolge; Standard: %T_new

Neuer Tabellenname, bevor er ausgetauscht wird. %T wird durch den ursprünglichen Tabellennamen ersetzt.
Wenn die Standardeinstellung verwendet wird, stellt das Tool dem Namen bis zu 10 „_“ (Unterstrich) voran
Finden Sie einen eindeutigen Tabellennamen. Wenn ein Tabellenname angegeben ist, wird ihm vom Tool kein Präfix vorangestellt
mit „_“, daher darf die Tabelle nicht existieren.

--Passwort
Kurzform: -p; Typ: Zeichenfolge

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_online_schema_change_plugin“-Klasse definiert. Ein Plugin
ermöglicht es Ihnen, ein Perl-Modul zu schreiben, das sich in viele Teile von pt-online-schema einbinden lässt.
ändern. Dies erfordert gute Kenntnisse der Konventionen von Perl und Percona Toolkit
liegen außerhalb des Rahmens dieser Dokumentation. Bitte wenden Sie sich gegebenenfalls an Percona
Fragen haben oder Hilfe benötigen.

Weitere Informationen finden Sie unter „PLUGIN“.

--Hafen
Kurzform: -P; Typ: int

Portnummer, die für die Verbindung verwendet werden soll.

--drucken
Drucken Sie SQL-Anweisungen auf STDOUT. Wenn Sie diese Option angeben, können Sie die meisten davon sehen
Anweisungen, die das Tool ausführt. Sie können diese Option mit „--dry-run“ verwenden, z
Beispiel.

--Fortschritt
Typ: Array; Standard: Zeit, 30

Drucken Sie beim Kopieren von Zeilen Fortschrittsberichte an STDERR. Der Wert ist durch Kommas getrennt
Liste mit zwei Teilen. Der erste Teil kann Prozentsatz, Zeit oder Iterationen sein; Die
Der zweite Teil gibt an, wie oft ein Update gedruckt werden soll, in Prozent, Sekunden.
oder Anzahl der Iterationen.

--ruhig
Kurzform: -q

Nachrichten nicht an STDOUT ausgeben (deaktiviert „--progress“). Fehler und Warnungen sind
wird immer noch auf STDERR gedruckt.

--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“.

--recursion-method
Typ: Array; Standard: Prozessliste, Hosts

Bevorzugte Rekursionsmethode zum Erkennen von Replikaten. Mögliche Methoden sind:

VERWENDUNG DER METHODE
=========== ==================
Prozessliste PROZESSLISTE ANZEIGEN
hosts SLAVE-HOSTS ANZEIGEN
dsn=DSN DSNs aus einer Tabelle
keine Finde keine Sklaven

Die Methode „processlist“ ist die Standardeinstellung, da SHOW SLAVE HOSTS nicht zuverlässig ist.
Allerdings kann die Hosts-Methode besser funktionieren, wenn der Server einen nicht standardmäßigen Port verwendet (nicht).
3306). Das Tool macht in der Regel das Richtige und findet alle Replikate, aber Sie können darauf verzichten
eine bevorzugte Methode und wird zuerst verwendet.

Für die Hosts-Methode müssen Replikate mit „report_host“, „report_port“ und „report_port“ konfiguriert werden.
usw.

Die DSN-Methode ist etwas Besonderes: Sie gibt eine Tabelle an, aus der andere DSN-Zeichenfolgen gelesen werden.
Der angegebene DSN muss ein D und t oder ein datenbankqualifiziertes t angeben. Die DSN-Tabelle
sollte folgenden Aufbau haben:

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`)
);

Damit das Tool nur die Hosts 10.10.1.16 und 10.10.1.17 auf Replikationsverzögerung überwacht,
Fügen Sie die Werte „h=10.10.1.16“ und „h=10.10.1.17“ in die Tabelle ein. Derzeit ist die
DSNs werden nach ID sortiert, id und parent_id werden ansonsten jedoch ignoriert.

--set-vars
Typ: Array

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
lock_wait_timeout=60

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.

--Schlaf
Typ: Schwimmer; Standard: 0

Wie lange (in Sekunden) nach dem Kopieren jedes Blocks geschlafen werden soll. Diese Option ist nützlich, wenn
Eine Drosselung durch „--max-lag“ und „--max-load“ ist nicht möglich. Eine kleine Subsekunde
Es sollte ein Wert wie 0.1 verwendet werden, andernfalls könnte das Kopieren des Tools sehr lange dauern
große Tische.

--Steckdose
kurz Formen; Typ: Zeichenfolge

Socket-Datei, die für die Verbindung verwendet werden soll.

--Statistiken
Drucken Sie Statistiken über interne Zähler. Dies ist nützlich, um zu sehen, wie viele Warnungen es gibt
wurden im Vergleich zur Anzahl der INSERT unterdrückt.

--[no]Swap-Tabellen
Standard: ja

Tauschen Sie die ursprüngliche Tabelle gegen die neue, geänderte Tabelle aus. Dieser Schritt vervollständigt den Online-Vorgang
Schemaänderungsprozess, indem die Tabelle mit dem neuen Schema an die Stelle der Tabelle tritt
Originaltisch. Die ursprüngliche Tabelle wird zur „alten Tabelle“ und das Tool löscht sie
es sei denn, Sie deaktivieren „--[no]drop-old-table“.

--versucht
Typ: Array

Wie oft müssen kritische Vorgänge ausprobiert werden? Wenn bestimmte Vorgänge aufgrund von Nicht-Fehlern fehlschlagen,
Bei schwerwiegenden, behebbaren Fehlern wartet das Tool und versucht den Vorgang erneut. Diese sind
die Vorgänge, die wiederholt werden, mit ihrer Standardanzahl an Versuchen und Wartezeit
zwischen Versuchen (in Sekunden):

OPERATION VERSUCHT WARTEN
=================== ===== ====
create_triggers 10 1
drop_triggers 10 1
copy_rows 10 0.25
swap_tables 10 1
update_foreign_keys 10 1
analysieren_tabelle 10 1

Um die Standardeinstellungen zu ändern, geben Sie die neuen Werte wie folgt an:

--tries create_triggers:5:0.5,drop_triggers:5:0.5

Dadurch versucht das Tool fünfmal „create_triggers“ und „drop_triggers“ mit einem Wert von 5
zweite Wartezeit zwischen den Versuchen. Das Format ist also:

operation:tries:wait[,operation:tries:wait]

Alle drei Werte müssen angegeben werden.

Beachten Sie, dass die meisten Vorgänge nur in MySQL 5.5 und neuer von betroffen sind
„lock_wait_timeout“ (siehe „--set-vars“) aufgrund von Metadatensperren. Die „copy_rows“
Der Betrieb wird in jeder MySQL-Version durch „innodb_lock_wait_timeout“ beeinträchtigt.

Beim Erstellen und Löschen von Triggern gilt die Anzahl der Versuche für jedes „CREATE
TRIGGER“- und „DROP TRIGGER“-Anweisung für jeden Trigger. Zum Kopieren von Zeilen die Nummer
Anzahl der Versuche gilt für jeden Block, nicht für die gesamte Tabelle. Beim Tauschen von Tabellen die Nummer
Anzahl der Versuche gilt normalerweise einmal, da es normalerweise nur eine „RENAME TABLE“ gibt.
Stellungnahme. Für die Wiederherstellung von Fremdschlüsseleinschränkungen gilt die Anzahl der Versuche
jede Anweisung („ALTER“-Anweisungen für die „rebuild_constraints“
„--alter-foreign-keys-method“; andere Anweisungen für die Methode „drop_swap“).

Das Tool wiederholt jeden Vorgang, wenn folgende Fehler auftreten:

Sperrwartezeitüberschreitung (innodb_lock_wait_timeout und lock_wait_timeout)
Deadlock gefunden
Die Abfrage wurde beendet (KILL QUERY )
Verbindung wird beendet (KILL CONNECTION )
Verbindung zu MySQL verloren

Bei verlorenen oder unterbrochenen Verbindungen stellt das Tool die Verbindung automatisch wieder her.

Fehler und Wiederholungsversuche werden in der „--statistics“ erfasst.

--Benutzer
Kurzform: -u; Typ: Zeichenfolge

Benutzer für die Anmeldung, wenn nicht aktueller Benutzer.

--Version
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 .

PLUGIN


Die durch „--plugin“ angegebene Datei muss eine aufgerufene Klasse (dh ein Paket) definieren
„pt_online_schema_change_plugin“ mit einer „new()“-Subroutine. Das Tool erstellt eine
Instanz dieser Klasse und rufen Sie alle von ihr definierten Hooks auf. Es sind keine Haken erforderlich, aber a
Ohne sie ist das Plugin nicht sehr nützlich.

Diese Hooks werden in dieser Reihenfolge aufgerufen, sofern sie definiert sind:

init
before_create_new_table
after_create_new_table
before_alter_new_table
after_alter_new_table
before_create_triggers
after_create_triggers
before_copy_rows
after_copy_rows
before_swap_tables
after_swap_tables
before_update_foreign_keys
after_update_foreign_keys
before_drop_old_table
after_drop_old_table
before_drop_triggers
before_exit
get_slave_lag

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(
orig_tbl => $orig_tbl,
child_tables => $child_tables,
umbenannte_cols => $renamed_cols,
Sklaven => $Sklaven,
Slave_lag_cxns => $slave_lag_cxns,
);
}

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

dsn: Datenbank; kopieren: ja

Datenbank für die alte und neue Tabelle.

· F.

dsn: mysql_read_default_file; kopieren: ja

Nur Standardoptionen aus der angegebenen Datei lesen

· 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; kopieren: ja

Socket-Datei, die für die Verbindung verwendet werden soll.

· T

dsn: Tabelle; Kopie: nein

Tisch zum Umstellen.

· 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-online-schema-change ... > 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.

Dieses Tool funktioniert nur auf MySQL 5.0.2 und neueren Versionen, da dies bei früheren Versionen nicht der Fall ist
Auslöser unterstützen.

Verwenden Sie pt-online-schema-changep online über die Dienste von onworks.net



Neueste Linux- und Windows-Online-Programme