Standardmäßig haben Dateinamen von Relay-Logs die Form
.
Hierbei ist host_name-relay-bin.nnnnnnhost_name der Name des
Slave-Serverhosts und nnnnnn eine
Sequenznummer. Aufeinander folgende Relay-Log-Dateien werden mit
laufenden Sequenznummern beginnend bei 000001
erstellt. Der Slave verwendet eine Indexdatei, um die Übersicht
über die derzeit verwendeten Relay-Log-Dateien zu behalten. Der
Standardname der Relay-Log-Indexdatei lautet
.
Standardmäßig erstellt der Slave-Server die Relay-Log-Dateien
in seinem Datenverzeichnis. Die Standarddateinamen können mit
den Serveroptionen host_name-relay-bin.index--relay-log und
--relay-log-index außer Kraft gesetzt werden.
Siehe auch Abschnitt 6.9, „Replikationsoptionen in my.cnf“.
Relay-Logs haben dasselbe Format wie Binärlogs und können mit
mysqlbinlog gelesen werden. Der SQL-Thread
löscht eine Relay-Log-Datei automatisch, sobald er alle
Ereignisse in dieser Datei ausgeführt hat und sie nicht mehr
benötigt. Es gibt keine dedizierte Methode zum Löschen von
Relay-Logs – der SQL-Thread kümmert sich selbst darum.
Allerdings rotiert FLUSH LOGS die Relay-Logs,
was Auswirkungen darauf hat, wann der SQL-Thread sie löscht.
Ein Slave-Server erstellt unter den folgenden Bedingungen eine neue Relay-Log-Datei:
bei jedem Start des I/O-Threads
wenn die Logs – beispielsweise mit FLUSH
LOGS oder mysqladmin flush-logs
– synchronisiert werden
wenn die aktuelle Relay-Log-Datei zu groß wird. Die Bedeutung von „zu groß“ ermitteln Sie wie folgt:
Wenn der Wert von max_relay_log_size
größer als 0 ist, gibt er die maximale Größe einer
Relay-Log-Datei an.
Wenn der Wert von max_relay_log_size
0 ist, bestimmt max_binlog_size die
maximale Größe einer Relay-Log-Datei.
Ein Slave-Replikationsserver erstellt zwei weitere kleine
Dateien im Datenverzeichnis. Diese
Statusdateien heißen standardmäßig
master.info und
relay-log.info. Die Namen können mit den
Optionen --master-info-file und
--relay-log-info-file geändert werden. Siehe
auch Abschnitt 6.9, „Replikationsoptionen in my.cnf“.
Die beiden Statusdateien enthalten Informationen wie die in der
Ausgabe der Anweisung SHOW SLAVE STATUS
gezeigte (siehe auch Abschnitt 13.6.2, „SQL-Anweisungen für die Steuerung von Slave-Servern“).
Weil die Statusdateien auf der Festplatte gespeichert sind,
überdauern sie das Herunterfahren des Slave-Servers. Beim
nächsten Start des Servers liest er die beiden Dateien dann
aus, um zu ermitteln, wie weit er beim Lesen der Binärlogs vom
Master und bei der Verarbeitung der eigenen Relay-Logs gekommen
ist.
Der I/O-Thread aktualisiert die Datei
master.info. Die folgende Tabelle zeigt die
Entsprechungen zwischen den Zeilen in der Datei und den von
SHOW SLAVE STATUS angezeigten Spalten.
| Zeile | Beschreibung |
| 1 | Anzahl der Zeilen in der Datei |
| 2 | Master_Log_File |
| 3 | Read_Master_Log_Pos |
| 4 | Master_Host |
| 5 | Master_User |
| 6 | Passwort (wird von SHOW SLAVE STATUS nicht angezeigt) |
| 7 | Master_Port |
| 8 | Connect_Retry |
| 9 | Master_SSL_Allowed |
| 10 | Master_SSL_CA_File |
| 11 | Master_SSL_CA_Path |
| 12 | Master_SSL_Cert |
| 13 | Master_SSL_Cipher |
| 14 | Master_SSL_Key |
Der SQL-Thread aktualisiert die Datei
relay-log.info. Die folgende Tabelle zeigt
die Entsprechungen zwischen den Zeilen in der Datei und den von
SHOW SLAVE STATUS angezeigten Spalten.
| Zeile | Beschreibung |
| 1 | Relay_Log_File |
| 2 | Relay_Log_Pos |
| 3 | Relay_Master_Log_File |
| 4 | Exec_Master_Log_Pos |
Wenn Sie die Daten des Slaves sichern, sollten Sie neben den
Relay-Log-Dateien auch diese beiden Statusdateien sichern. Sie
werden stets benötigt, um die Replikation nach
Wiederherstellung der Daten auf dem Slave fortzusetzen. Wenn Sie
die Relay-Logs verlieren, aber noch über die Datei
relay-log.info verfügen, können Sie
ermitteln, wie weit der SQL-Thread die Binärlogs des Masters
bereits ausgeführt hatte. Dann können Sie den Slave durch
Absetzen von CHANGE MASTER TO mit den
Optionen MASTER_LOG_FILE und
MASTER_LOG_POS anweisen, die Binärlogs von
diesem Punkt an erneut zu lesen. (Dies setzt natürlich voraus,
dass die Binärlogs noch auf dem Master-Server vorhanden sind.)
Wenn Ihr Slave Gegenstand der Replikation von LOAD DATA
INFILE-Anweisungen ist, sollten Sie auch alle
SQL_LOAD-*-Dateien sichern, die in dem vom
Slave zu diesem Zweck verwendeten Verzeichnis vorhanden sind.
Der Slave benötigt diese Dateien, um die Replikation
unterbrochener LOAD DATA INFILE-Operationen
fortzusetzen. Die Verzeichnisposition wird mit der Option
--slave-load-tmpdir angegeben. Wird die Option
nicht angegeben, dann bezeichnet der Wert der Systemvariablen
tmpdir die Verzeichnisposition.
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.
