Wenn es kracht – Wiederherstellen einer MySQL Datenbank aus Dumps und Binary Logs>

Meist ist der Fehlerfall harmloser als die Armageddon-Szenarien, die immer prophezeit werden. Sollte das System also das zeitlich gesegnet haben, wird das Ersatzsystem mit dem Dump und den Binary Logs wieder aufgesetzt. Etwas komplizierter – und deshalb hier beschrieben – ist das teilweise Wiederherstellen aus den Binary Logs, wenn die Datenbank aufgrund fehlerhafter Queries gelöscht oder fehlerhaft verändert wurde. Die Beispiele sind auf einem Debian/GNU Linux 7.x System mit MySQL 5.5 Community Edition entstanden.

Dies sind Beispiele, die an die eigenen Bedürfnisse angepasst werden müssen.

> Bitte keine Kommandos per Copy ’n Paste auf Produktivsystemen ausführen, ohne zu verstehen, was diese auslösen. <

Angenommen ein beherztes ‚DROP DATABASE example_db‘ hat wichtige Kundendaten gelöscht. Als Erstes erstellen wir die Datenbank neu und spielen den Dump ein:

mysql -p y -u x
mysql> CREATE DATABASE example_db;
mysql> USE example_db;
mysql> SOURCE /var/log/mysql/dump.sql

Das wird je nach Datenbankgröße einige Zeit dauern, sodass wir parallel in einer weiteren Shell die Binary Logs vorbereiten können. Dazu ermitteln wir alle Binary Logs die nach dem Dump erstellt wurden. Dies kann an den Dateizeiten der Binary Logs oder im Kopf des Dump ausgelesen werden:


— Position to start replication or point-in-time recovery from

— CHANGE MASTER TO MASTER_LOG_FILE=’mysql-bin.000287′,
MASTER_LOG_POS=120;

In diesem Beispiel werden die Binary Logs ab mysql-bin.000287 für die Wiederherstellung interessant.

Die notwendigen Binary Logs werden nun in einfache SQL Dateien umgewandelt. In diesem Fall betrifft das die Dateien mysql-bin.000287 bis mysql- bin.000289

mysqlbinlog -r mysql-bin.000287.sql mysql-bin.000287
mysqlbinlog -r mysql-bin.000288.sql mysql-bin.000288
mysqlbinlog -r mysql-bin.000289.sql mysql-bin.000289

Nun muss die Log-Position ermittelt werden an der das unerwünschte ‚DROP DATABASE‘ zu finden ist. Die Position wird vor jedem Query in der Form ‚# at 123456‘ vermerkt. Zur Wiederherstellung ist die Position des letzten gewünschten Query notwendig. Diese kann manuell in der Datei gesucht werden und wird für den gegebene Fall mit folgendem Kommando ermittelt:

grep -e „DROP DATABASE“ -e „# at “ mysql-bin.000289.sql |grep -B2 „DROP DATABASE“

Ausgabe:

# at 86881515
# at 86881546
DROP DATABASE example_db

Mit der gefunden Position 86881515 wird nun die SQL-Datei für den Binary Log mysql- bin.000289 auf die passende Länge gekürzt erstellt.

mysqlbinlog -r mysql-bin.000289.sql –stop-position=86881515 mysql- bin.000289

Dabei bestimmt der Parameter –stop-position den letzten auszulesenden Query. Somit können nun, nachdem der parallel eingespielte Dump abgeschlossen ist, auch die Inkremente eingespielt werden:

mysql> SOURCE /var/log/mysql/mysql-bin.000287.sql


mysql> SOURCE /var/log/mysql/mysql-bin.000288.sql


mysql> SOURCE /var/log/mysql/mysql-bin.000289.sql

Die Datenbank ist nun wieder auf dem Stand vor dem DROP-Query und kann wieder in Betrieb genommen werden.

Lust auf mehr?

Weitere Blogbeiträge

Februar 2025

Was kann Microsoft Copilot leisten?

Was genau kann Microsoft Copilot leisten, und wie verändert er den Arbeitsalltag in Unternehmen?

Mehr erfahren

Februar 2025

IT-Sicherheit nach dem Windows 10 Support-Ende

Am 14. Oktober 2025 endet der Support für Windows 10 – und damit beginnt für viele Unternehmen ein Sicherheitsrisiko, das nicht ignoriert werden darf.

Mehr erfahren

Januar 2025

Das richtige Backup-Konzept für Ihr Unternehmen

Datenverlust? Nicht mit dem richtigen Backup-Konzept! Erfahren Sie, wie Datensicherung Ihr Unternehmen nachhaltig schützt.

Mehr erfahren

Januar 2025

Anzeichen für veraltete Storagelösungen

Die Anforderungen an IT-Infrastrukturen steigen kontinuierlich. In diesem Kontext spielt die richtige Storagelösung eine zentrale Rolle. Doch wie erkennen Sie, dass Ihr aktuelles System nicht mehr ausreicht?

Mehr erfahren

November 2024

Conditional Access & Sensitivity Labels

Erfahren Sie, wie diese beiden Microsoft-365-Technologien Ihre Daten klassifizieren und Zugriffe sicher steuern. Schützen Sie sensible Informationen gezielt – vom ersten Speichern bis zur Weitergabe.

Mehr erfahren
Gruppe von Geschäftspersonen in moderner Büroumgebung, die gemeinsam ein Tablet nutzen – Zusammenarbeit und Technologie im Fokus.

November 2024

Wie sinnvoll ist ein Intranet mit SharePoint?

Ist ein SharePoint-Intranet die ideale Lösung? Ein Überblick über Funktionen, Vorteile und die größten Herausforderungen.

Mehr erfahren

Februar 2024

Change Management vs. Organisationsentwicklung

Change Management und Organisationsentwicklung sind Bestandteile von Veränderungsprozessen. Doch wie unterscheiden sie sich und wie können sie Ihr Unternehmenswachstum fördern?

Mehr erfahren

Januar 2024

Server-Virtualisierung: Wie Sie IT-Komplexität meistern und Kosten senken

Server-Virtualisierung ist eine strategisch kluge Methode, um IT-Ressourcen zu maximieren und betriebliche Effizienz zu steigern.

Mehr erfahren