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 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

Dezember 2023

Business Continuity Management: Ein unverzichtbares Instrument im digitalen Zeitalter

Risiken für Unternehmen wachsen ständig: Business Continuity Management stellt sicher, dass im Falle einer Cyberbedrohung der Geschäftsbetrieb weiterläuft.

Mehr erfahren

Dezember 2023

15 Jahre Computer Museum Oldenburg

Im November 2023 feierte das Oldenburger Computer-Museum sein 15-jähriges Bestehen – ein außergewöhnlicher Ort, der die Geschichte der Computertechnologie lebendig hält.

Mehr erfahren

November 2023

BASYS Brinova auf der Microsoft Ignite 2023

Dennis van Ophuysen, unser engagierter Mitarbeiter im Bereich Cloud, hat die Microsoft Ignite 2023 in Seattle besucht. Diese Reise war eine Gelegenheit, die neuesten Entwicklungen im Bereich der künstlichen Intelligenz und Cloud-Technologien aus erster Hand zu erleben.

Mehr erfahren

November 2023

Outsourcing IT-Services: Vorteile und Nachteile

Das Outsourcing von IT-Services bietet sowohl Vorteile als auch Nachteile. Wir zeigen Ihnen für eine bessere Übersicht beide Seiten auf.

Mehr erfahren

November 2023

Rückblick auf den „connexta IT-Security Day“

Am 7. November 2023 fand der connexta IT-Security Day präsentiert von BASYS Brinova statt – ein Cybersecurity-Event, das sich als Fachveranstaltung und Networking-Möglichkeit präsentiert.

Mehr erfahren

Oktober 2023

Auf der Hut: Wie Sie Ihr Unternehmen vor Zero-Day-Exploits schützen

Zero-Day-Exploits bedrohen Unternehmen und Einzelpersonen gleichermaßen. Diese Sicherheitslücken können verheerende Auswirkungen haben.

Mehr erfahren