Datensicherung mit MySQL (Datensicherung mit MySQL), Lektion, Seite 723290
https://www.purl.org/stefan_ram/pub/sicherung_mysql (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram

Datensicherung mit MySQL

Das Thema der Replikation und Sicherung von MySQL-Datenbanken ist ein weites Feld, zu dem es viele Bücher und Software gibt. Es kann hier nur angerissen werden. In einer Organisation, die eine Datenbank einsetzt, sollte es mindestens einen Experten auf diesem Gebiet geben, der für die nötigen Replikationen und Sicherungen zuständig ist.

Sicherungskopien

Bei der Sicherungskopie  werden die aktuellen Inhalte der Datenbank kopiert. Änderungen, die danach erfolgen, sind dann nicht  gesichert. Sie würde bei einer Wiederherstellung der Datenbank aus der Kopie verloren gehen. Falls alle Tabellen nach dem Herstellen der Sicherungskopie versehentlich gelöscht werden, können diese von der Sicherungskopie wiederhergestellt werden. Um zu verhindern, daß unbemerkt eine Datenbank mit versehentlich gelöschten Tabellen die letzte Sicherungskopie überschreibt, sollte auch immer mehrere alte Sicherungskopien aufbewahrt werden.

Es kann jedoch hilfreich sein, zusätzlich zu Sicherungskopieren auch noch mit einem Zweitrechner für eine Replikation zu arbeiten, da eine Sicherungskopie der Datenbank wiederum nichts nutzen würde, wenn der Hauptrechner ausfällt.

Eine spezielle Aufzeichnungsdatei  erlaubt es auch ohne Replikation oder Sicherungskopie die letzten Änderungen wiederherzustellen. Sie ist aber nicht als alleinige Sicherung geeignet, da sie ebenfalls beschädigt werden könnte.

Sicherungsstrategien

Wenn die Daten sehr wichtig sind, könnte mit mehreren  Zweitrechnern für Replikationen und einer ausgefeilten Vorgehensweise für regelmäßige Sicherungskopieren gearbeitet werden, bei der mehrere  Sicherungskopieren in verschiedenen zeitlichen Intervallen erzeugt und sicher verwahrt werden. In solch einem Fall sollten verschiedene Arten von Ausfällen und Wiederherstellungen auch regelmäßig geübt  werden, um sicher zu sein, daß eine Wiederherstellung dann im Notfall auch wirklich gelingt.

Das Programm »mysqldump«

Das Programm »mysqldump« gehört zu MySQL.

Das folgende Kommando schreibt das Schema »S« in die Datei »mysqldump.sql«.

Das Kommando »mysqldump« ist hierzu nicht  in den MySQL-Klienten einzugeben, sondern in eine Kommandokonsole des Betriebssystems. Diese Vorgehensweise ist nur für Personen praktikabel, die bereits gelernt haben, wie Betriebssystemkommandos verwendet werden.

Betriebssystem-Konsole
mysqldump -u root -p S >mysqldump.sql

Das Schema wird als Skript ausgegeben, das die gesicherte Datenbank wiederherstellt.

Das folgende Kommando schreibt alle Schemata in die Datei »mysqldump.sql«.

Betriebssystem-Konsole
mysqldump -u root -p --all-databases >mysqldump.sql

Vor dem Einsatz dieses Kommandos auf Datenbanken, die ständig im Betrieb sind, sollten seine Möglichkeiten zuvor gründlich studiert werden. Mehr Details finden sich auf der folgenden Webseite.

Webseite
http://dev.mysql.com/doc/en/mysqldump.html

MySQL kann mit verschiedenen Datenbankmaschinen, wie InnoDB  oder MyISAM, verwendet werden.

Bei Verwendung von InnoDB, ist es beispielsweise möglich durch Verwendung der Option »--single-transaction« unter gewissen Umständen, eine konsistente Sicherung einer Datenbank im laufenden Betrieb zu erstellen.

Zur Sicherung wichtiger Datenbanken, die häufig geändert werden, könnten beispielsweise täglich, wöchentlich, monatlich und jährlich Sicherungskopien angefertigt werden, von den die jeweils letzten drei aufbewahrt werden. Dies könnte es dann beispielsweise erlauben, eine versehentlich gelöschte Tabelle wiederherszustellen, wenn der Fehler erst nach einigen Tagen bemerkt wird, so daß eine Herstellung von den täglichen Kopien schon nicht mehr möglich ist, weil diese auch alle schon die gelöschte Tabelle enthalten.

Das Programm »mysqldump« erlaubt keine  inkrementellen Sicherungen.

Wiederherstellung aus einem SQL-Skript

Das folgende Kommando zeigt eine Möglichkeit, eine mit »mysqldump« erstellte Sicherung wiederherzustellen.

Die Sicherung ist ein Skript. Dieses Skript wird im folgenden Kommando beim Aufruf des Klienten als Eingabe festgelegt.

Betriebssystem-Konsole
mysql -u root -p <mysqldump.sql

Alternativ kann

Konsole
source mysqldump.sql

Die Verarbeitung eines Skripts erfolgt relativ langsam.

Wenn eine Tabelle als CSV-Datei vorliegt, so wird sie relativ schnell importiert. Allerdings würden Information über die genauen Spaltentypen von Tabellen und andere Einstellungen verloren gehen, wenn man Tabellen auf diese Weise speichert und wiederherstellt.

Bei wichtigen Datenbanken, sollte die Wiederherstellung auch (auch einem anderen System) regelmäßig geübt werden (bis hin zu Inbetriebnahme einer Kopie des Systems aus einer Sicherungskopie), um eventuelle Probleme zu erkennen und sicher zu sein, daß die Wiederherstellung dann im Notfall auch wirklich gelingt.

Speicherort der Datenbankdateien

Die Datenbankdateien finden sich unter einem Speicherort, der von Details der Installation und Version abhängt. Das folgende Beispiel einer bestimmten Installation und Version liefert einen Anhaltspunkt.

Speicherort (Beispiel)

C:\ProgramData\MySQL\MySQL Server 5.7\data

%ALLUSERSPROFILE%\MySQL\MySQL Server 5.7\data

Die Version »5.7« ist in dem obigen Speicherort möglicherweise anzupassen.

Das Datenverzeichnis wird oft in einer »my.ini«-Datei festgehalten.

Eine Kopie der Datendateien innerhalb des Datenverzeichnisses kann  als Sicherung verwendet werden, wenn sichergestellt ist, daß MySQL nicht  so konfiguriert wurde, daß bestimmte Dateien außerhalb jenes Verzeichnisses gespeichert wurden, der Server während des Kopierens nicht  läuft und die Kopie mit der gleiche oder einer späteren Version von MySQL verwendet wird. Außerdem muß immer das vollständige  »datadir« mit allen Unterverzeichnissen und Dateien kopiert werden.

An Stelle einer Beendigung des Servers kann auch »FLUSH TABLES WITH READ LOCK« verwendet werden, um die Tabellendateien zu stabilisieren. Der Server kann die Daten nun nur noch lesen, aber nicht mehr verändern. Mit »UNLOCK TABLES« können diese dann wieder für Änderungen freigegeben werden.

Nach einigen Quellen, kann dieses Verfahren angewendet werden, wenn Daten zu einer Installation übertragen werden, welche unter demselben Betriebssystem läuft und dieselbe MySQL-Version verwendet.

Die Dateien sollten nicht kopiert werden, während der Datenkbank-Server (also das Datenbanksystem) läuft.

Binäres Mitschreiben

Die binäre Mitschrift enthält Informationen über Änderungen an einer Datenbank.

Sie kann verwendet werden, um nach dem Wiederherstellen der Datenbank aus einer Datensicherung noch Änderungen wiederherzustellen, die nach dem Erstellen der verwendeten Sicherungskopie erfolgt sind.

Weitere Informationen findet man unter der folgenden URI.

Quelle
http://dev.mysql.com/doc/en/binary-log.html

Zugriff über Programme

Es ist auch möglich, mit vom Benutzer der Datenbank geschriebenen Programmen (beispielsweise in Perl, Java  oder PHP ) auf die Datenbank zuzugreifen und darüber Sicherungskopien oder Protokolle anzulegen, die dann für eine Wiederherstellung verwendet werden können.

Sicherung mit CSV 

Falls eine Datenbank nur wenige Tabellen enthält und nicht ständig im Einsatz ist, könnten die Inhalte auch durch Export nach CSV  gesichert werden. Dies hat den Nachteil, daß die Stuktur der Datenbank (wie die Datentypen von Spalten) dabei nicht gesichert werden (diese müssen dann extra auf andere Weise gesichert werden). Ein Vorteil ist es, daß das Einlesen von CSV -Dateien schneller gehen kann als die Ausführung von Skripten. Zum Einlesen solcher Dateien gibt es auch das Programm »mysqlimport«.

xtrabackup

Ein weiteres, kostenloses Programm zum Herstellen von Sicherungskopien von MySQL  heißt xtrabackup.

MySQL Enterprise Backup 

MySQL Enterprise Backup  ist ein kostenpflichtiges Sicherungsprogramm.

URI
https://dev.mysql.com/doc/workbench/en/wb-mysql-enterprise-backup.html

Replikationen

Die sogenannte Replikation  einer Datenbank stellt sicher, daß sich eine aktuelle Kopie der Datenbank auf einem Zweitrechner befindet, die im laufenden Betrieb ständig aktualisiert wird. Falls der Hauptrechner ausfällt, könnte dann nach relativ kurzer Zeit mit dem Zweitrechner weitergearbeitet werden, da dieser den aktuellen letzten Stand der Datenbank enthält.

Falls auf dem Hauptrechner jedoch versehentlich ein Kommando eingegeben wird, das alle Tabellen der Datenbank löscht, dann wird dieser Löschvorgang auch sofort automatisch auf dem Zweitrechner nachvollzogen. Die gelöschten Tabellen können daher dann nicht  vom Zweitrechner wiederhergestellt werden. Deswegen ist die Replikation der Datenbank nicht als einzige Form der Datensicherung brauchbar.

Einrichten einer Replikation

Die Einrichtung einer Replikation ist schwierig und wird nicht immer benötigt. Deswegen wird sie hier nicht im Detail beschrieben.

Die folgende Quelle enthält weitere Information:

Quelle
http://dev.mysql.com/doc/en/replication-howto.html

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram723290 stefan_ram:723290 Datensicherung mit MySQL Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd723290, slrprddef723290, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/sicherung_mysql