Statt Datums- und Zeitangaben anzugeben, können Sie die
Optionen --start-position
und
--stop-position
für
mysqlbinlog zur Angabe von Logpositionen
verwenden. Diese Optionen arbeiten genauso wie die Optionen
für Start- und Endzeitpunkt, nur werden Positionsangaben aus
dem Log spezifiziert. Die Angabe dieser Logposition ist unter
Umständen eine exaktere Wiederherstellungsmethode –
insbesondere dann, wenn viele Transaktionen zur gleichen Zeit
wie die schädliche SQL-Anweisung auftraten. Zur Bestimmung
der Positionsnummer können Sie mysqlbinlog
für einen Zeitbereich in der Umgebung des Zeitpunkts
ausführen, an dem die unerwünschte Transaktion durchgeführt
wurde, die Ergebnisse aber zur Überprüfung in einer
Textdatei umleiten. Dies wird wie folgt gemacht:
shell>mysqlbinlog --start-date="2005-04-20 9:55:00" \
--stop-date="2005-04-20 10:05:00" \
/var/log/mysql/bin.123456 > /tmp/mysql_restore.sql
Dieser Befehl erstellt eine kleine Textdatei im Verzeichnis
/tmp
, die die im zeitlichen Bereich der
misslichen SQL-Anweisung abgesetzten Anweisungen enthält.
Öffnen Sie diese Datei mit einem Texteditor und suchen Sie
nach der Anweisung, die nicht wiederholt werden soll.
Bestimmen Sie die Positionen im Binärlog für das Beenden und
Wiederaufnehmen der Wiederherstellung und notieren Sie sich
diese. Die Positionen sind gekennzeichnet mit
log_pos
, gefolgt von einer Zahl. Nach der
Wiederherstellung der vorherigen Sicherungsdatei verarbeiten
Sie die Binärlogdatei unter Verwendung der Positionsnummern.
So würden Sie z. B. Befehle in der Art der folgenden
verwenden:
shell>mysqlbinlog --stop-position="368312" /var/log/mysql/bin.123456 \
| mysql -u root -p
shell>mysqlbinlog --start-position="368315" /var/log/mysql/bin.123456 \
| mysql -u root -p
Der erste Befehl stellt alle Transaktionen bis zur angegebenen
Endposition wieder her. Der zweite Befehl führt die
Wiederherstellung aller Transaktionen vom angegebenen
Fortsetzungspunkt bis zum Ende des Binärlogs durch. Da die
Ausgabe von mysqlbinlog vor jeder
aufgezeichneten SQL-Anweisung SET
TIMESTAMP
-Anweisungen enthält, finden sich in den
wiederhergestellten Daten und den zugehörigen MySQL-Logs die
ursprünglichen Ausführungszeitpunkte der Transaktionen
wieder.
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.