Standardmäßig haben Dateinamen von Relay-Logs die Form
.
Hierbei ist host_name
-relay-bin.nnnnnn
host_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.