20. Mai 2019

Immer wieder bekomme ich die Frage gestellt, wie man eine einzelne Datenbank z.B. nach einem Datenfehler oder einer Fehlbedienung wieder herstellen kann. Aus diesem Grund habe ich bereits vor über einem Jahr ein HowTo geschrieben, das auf dem MariaDB Blog im April 2018 veröffentlicht wurde. Nachdem ich jetzt diverse Erfahrungen mit dem Vorgehen gemacht habe, dachte ich, es sei an der Zeit den Artikel einem Update zu unterziehen und auch die Struktur etwas klarer zu machen.

Wie geht man also vor, wenn man tatsächlich einmal eine einzelne Datenbank wiederherstellen muss. Seit es MariaDB Backup gibt, ist dies für viele Anwender das Mittel der Wahl um Backups ihrer Datenbanken zu erstellen, insbesondere, da MariaDB Backup es ermöglicht, im laufenden Betrieb ohne Unterbruch Backups zu erstellen. Der Nachteil ist, dass man damit immer ein Backup des gesamten Servers und nicht nur eines einzelnen Schemas hat. Für Schemata, deren Tabellen nicht InnoDB-Tabellen sind, ist das auch nciht weiter tragisch, da es in diesen Fällen reicht, die Tabellendateien an die richtigen Orte zurück zu kopieren, wenn nötig die Eigentümereigenschaft zu korrigieren und schon kann man wieder auf die Daten zugreifen.

Schwieriger wird es bei InnoDB, da neben den Tabellendateien im Schema-Verzeichnis InnoDB auch noch das Data Dictionary im System Table Space führt. Aus diesem Grund muss man bei InnoDB-Tabellen diese aus dem Backup exportieren und im laufenden Betrieb importieren. Anschließend kann man dann noch anhand der Binary Logs die Transaktionen der wiederhergestellten Tabellen bis zum fehlerhaften Ereignis nachverarbeiten.

Im ersten Artikel - Restore a Single Database from MariaDB Backup - meiner kleinen Serie wird erklärt, wie man das Backup vorbereitet und im laufenden Betrieb einspielt. In weiteren Artikeln werde ich erklären, wie man die Transaktionen nachverarbeitet und wie man das ganze im MariaDB Galera Cluster durchführt.