START SLAVE [thread_type
[,thread_type
] ... ] START SLAVE [SQL_THREAD] UNTIL MASTER_LOG_FILE = 'log_name
', MASTER_LOG_POS =log_pos
START SLAVE [SQL_THREAD] UNTIL RELAY_LOG_FILE = 'log_name
', RELAY_LOG_POS =log_pos
thread_type
: IO_THREAD | SQL_THREAD
START SLAVE
startet beide Slave-Threads.
Der I/O-Thread liest Abfragen vom Master-Server und speichert
sie im Relay-Log. Der SQL-Thread liest das Relay-Log und
führt die Abfragen aus. START SLAVE
erfordert die Berechtigung SUPER
.
Wenn START SLAVE
die Slave-Threads
erfolgreich startet, wird kein Fehler zurückgegeben.
Allerdings kann es auch in diesem Fall vorkommen, dass die
Slave-Threads starten und kurz darauf wieder beendet werden
(etwa weil sie keine Verbindung zum Master herstellen oder die
Binärlogs nicht lesen konnten oder aus einem anderen Grund).
START SLAVE
warnt Sie davor nicht. Sie
müssen das Fehlerlog des Slaves auf Fehlermeldungen prüfen,
die von den Slave-Threads erzeugt wurden, oder sich mit
SHOW SLAVE STATUS
vergewissern, dass sie
einwandfrei ausgeführt werden.
Sie können die Optionen IO_THREAD
oder
SQL_THREAD
zur Anweisung hinzufügen, wenn
Sie angeben wollen, welcher der Threads gestartet werden soll.
Eine UNTIL
-Klausel kann hinzugefügt
werden, um anzugeben, dass der Slave starten und laufen soll,
bis der SQL-Thread einen gegebenen Punkt im Master-Binärlog
oder den Slave-Relay-Logs erreicht. Wenn der SQL-Thread diesen
Punkt erreicht, wird er beendet. Wird die Option
SQL_THREAD
in der Anweisung angegeben, dann
startet nur der SQL-Thread. Andernfalls werden beide
Slave-Threads gestartet. Läuft der SQL-Thread bereits, dann
wird die Klausel UNTIL
ignoriert, und eine
Warnung wird ausgegeben.
Für eine UNTIL
-Klausel müssen Sie sowohl
einen Logdateinamen als auch eine Position angeben. Vermischen
Sie die Optionen für Master- und Relay-Logs nicht.
Eine UNTIL
-Bedingung wird von einer
nachfolgenden STOP SLAVE
-Anweisung, einer
START SLAVE
-Anweisung ohne
UNTIL
-Klausel oder einem Serverneustart
zurückgesetzt.
Die UNTIL
-Klausel kann nützlich sein, um
die Replikation zu debuggen oder festzulegen, dass die
Replikation bis genau zu dem Punkt fortfahren soll, an dem ein
Slave eine Anweisung nicht mehr replizieren soll. Wurde
beispielsweise versehentlich eine DROP
TABLE
-Anweisung auf dem Master ausgeführt, dann
können Sie den Slave mit UNTIL
anweisen,
das Log nur bis unmittelbar vor diesem Punkt, aber nicht mehr
weiter auszuführen. Um herauszufinden, was das Ereignis ist,
verwenden Sie mysqlbinlog mit den
Master-Logs oder den Slave-Relay-Logs oder setzen eine
SHOW BINLOG EVENTS
-Anweisung ab.
Wenn Sie UNTIL
verwenden, damit der
Slave-Prozess die Abfragen in Abschnitten repliziert,
empfehlen wir den Start des Slaves mit der Option
--skip-slave-start
, damit der SQL-Thread
nicht ausgeführt wird, wenn der Slave-Server startet. Es ist
wahrscheinlich am besten, diese Option in einer Optionsdatei
statt auf der Befehlszeile zu benutzen, damit die Klausel bei
einem unerwarteten Serverneustart nicht vergessen wird.
Die SHOW SLAVE STATUS
-Anweisung enthält
Ausgabefelder, die die aktuellen Werte der
UNTIL
-Bedingung anzeigen.
In älteren Versionen von MySQL (vor 4.0.5) hieß diese
Anweisung SLAVE START
. Ihre Verwendung in
dieser Form ist zwar in MySQL 5.1 aus
Kompatibilitätsgründen noch akzeptabel, aber veraltet.
Dies ist eine Übersetzung des MySQL-Referenzhandbuchs, das sich auf dev.mysql.com befindet. Das ursprüngliche Referenzhandbuch ist auf Englisch, und diese Übersetzung ist nicht notwendigerweise so aktuell wie die englische Ausgabe. Das vorliegende deutschsprachige Handbuch behandelt MySQL bis zur Version 5.1.