Magento Datenbank mit phpMyAdmin sichern und wiederherstellen

Magento LogoDatensicherung ist ein elementarer Bestandteil der Tätigkeiten eines jeden Systemadministrators. Dazu gehört die Sicherung aller Dateien und oder der Datenbank. Nur so kann im Fehlerfall oder im Falle einer Portierung auf anderes System sichergestellt werden, dass das System zu einem definierten Zustand wiederhergestellt werden kann. Bei einer Magento Installation betrifft das neben allen Dateien und Verzeichnissen auch eine Kopie der MySQL Datenbank. Doch was nutzt das beste Backup wenn nicht sichergestellt werden kann, dass es im Notfall auch fehlerfrei wieder eingespielt werden kann?

InnoDB vs. MyISAM

Zum jetzigen Zeitpunkt unterstützt Magento das Datenbankmanagementsystem MySQL. Innerhalb von MySQL werden so genannte Storage Engines verwendet um die Daten auf Dateiebene zu organisieren. Im Moment kommen die beiden Storage Engines InnoDB und  MyISAM zum Einsatz, wobei jede für sich Vor- und Nachteile besitzt.

InnoDB

Bei InnoDB handelt es sich um ein freies Speichersubsystem für MySQL, welches vor allem durch Transaktionssicherheit und referenzielle Integrität über Fremdschlüssel glänzt.

MyISAM

MyISAM zeichnet sich besonders durch hohe Effizienz aus und besitzt seit der MySQL 3.23 ein Volltextsuche.

Wie sich unschwer erkennen lässt, werden für Online Shops, wie Magento einer ist,  Transaktionssicherheit benötigt, damit ein Einkauf entweder fehlerfrei und vollständig oder gar nicht ausgeführt wird.

Probleme beim Löschen und Wiederherstellen der Daten

Meist beginnt das Einspielen alter Daten mit dem löschen der bestehenden Tabellen einer Datenbank und hier tritt bereits der erste Stolperstein zu Tage. Aufgrund der referenziellen Integrität, also der Abhängigkeit der Datensätze innerhalb verschiedener Tabellen untereinander, erscheint beim löschen der Tabelle die folgende Meldung: „Cannot delete or update a parent row: a foreign key constraint fails“.

Magento Foreign Key Error

Entweder man wiederholt nun den Schritt so oft bis alle Tabellen gelöscht sind oder man löscht die Datenbank und legt sie Anschluss daran wieder an; was meist schneller geht.

Das gleiche Problem tritt, wenn man endlich alle Tabellen gelöscht hat, beim importieren der Daten erneut auf: „Cannot add or update a child row: a foreign key constraint fails“.

Magento Import Foreign Key Error

Ein funktionierendes Backup mit Hilfe von phpMyAdmin

Mit Hilfe von phpMyAdmin ist es ein leichtes eine Datensicherung der Magento Datenbank durchzuführen. Nachdem die Datenbank ausgewählt wurde, einfach auf Export klicken und der entsprechende Dialog erscheint. In den allermeisten Fällen sind auch keine Änderungen in den Export-Einstellungen vorzunehmen. Nicht so hier!

Der Trick lautet: Beim exportieren nicht die Quick-Einstellungen zu verwenden, sondern auf Benutzerdefiniert zu wechseln und „Format spezifische Einstellungen“ zu wählen. Hier den „Disable foreign key checks“ aktivieren. Es findet keine Prüfung statt!

Magento Export Foreign Key disable

Das ist in Ordnung, wenn wir davon ausgehen, dass wir eine funktionierende Datenbank exportieren und nur dann. Jetzt klappt es auch mit dem importieren.

Den MySQL Speicherauszug (Dump) manuell ändern

Wer allerdings zu spät bemerkt, dass er ein Export vorgenommen hat ohne den Foreign-Key-Check zu deaktivieren, der kann nachträglich die Datei ändern. Dazu die Datei im Editor öffnen und am Datei-Anfang die folgende Zeile Code einfügen:

SET FOREIGN_KEY_CHECKS=0;

Diese Direktie deaktiviert die InnoDB Prüfung beim importieren. Damit die Prüfung nachdem importieren wieder aktiviert wird, ist eine weitere Zeile Code am Ende der Dump-Datei notwendig:

SET FOREIGN_KEY_CHECKS=1;

Dies ist zwar nur ein kleiner Trick, aber der kann den Administratoren-Alltag  um einiges vereinfachen.

Euer Chefkoch

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

*