Open Source im professionellen Einsatz
Linux-Magazin 05/2004

MySQL-Datenbanken sichern - Teil 1

Gesichert wie eine Bank

Die beliebte Open-Source-Datenbank MySQL kennt verschiedene Möglichkeiten der Datensicherung. Jede hat Vor- und Nachteile, die jedoch nur unter bestimmten Umständen gravierend sind.

635

Die MySQL-Datenbanken nehmen alle möglichen Daten auf. Darin lassen sich Artikel genauso verwalten wie Daten für Werbeeinblendungen. Diese Daten müssen regelmäßig gesichert werden, um bei einem Defekt auf der sicheren Seite zu sein. MySQL[1] enthält für die Datensicherung eine ganze Reihe an Werkzeugen, die sich für verschiedene Anwendungsbereiche eignen. Der Anwender kann zwischen schnellen und sicheren Möglichkeiten wählen.

Option 1: Select into outfile

Wenn die Datenbank aus wenigen Tabellen besteht und zudem ein Shellzugang zum MySQL-Server vorhanden ist, sind die Daten mit der Option »select into outfile« einfach zu sichern. So lässt sich eine Tabelle respektive ein Teil von ihr auf die Schnelle in eine Datei schreiben. Das »select«-Statement ist dabei in vollem Umfang nutzbar, um die sicherungsbedürftigen Dateien in die Auswahl einzubeziehen. Eine ganze Tabelle speichert man einfach mit dem Kommando »select *«. Den kompletten Aufruf von »select into outfile« zeigt Listing 1.

Listing 1: Select into
outfile

01 select * into outfile 'Datei.txt'
02 fields terminated by ','
03 enclosed by '"'
04 lines terminated by 'n' from Tabelle;

»Datei« steht für den Namen der Datei, in die die Tabelle gesichert wird. Die Anweisung »fields terminated by« enthält das Zeichen, mit dem die einzelnen Spaltenwerte in der Datei getrennt sind. Gängig dafür ist ein Komma. Im Beispiel kommt eine mit Kommas separierte Liste heraus, die einzelne Werte in Hochkommas einschließt.

Zu beachten ist dabei, dass die Ausgabedatei nicht vorhanden sein darf. Dies dient MySQL als einfacher Sicherheitsmechanismus, der das irrtümliche Überschreiben einer Sicherungskopie verhindert. Außerdem muss der Account, der das »select into outfile« auf MySQL anwendet, File-Rechte auf dem MySQL-Server-Host besitzen. Der größte Vorteil des Verfahrens ist die enorme Geschwindigkeit, mit der eine einzelne Tabelle gesichert wird.

Die gleiche Geschwindigkeit legt auch das Gegenstück an den Tag: »load date infile«. Mit dieser Option lässt sich eine Datei laden, die mit »select into outfile« gesichert wurde. »load data infile« erhält unter anderem die einzulesende Datei als Parameter:

load data info 'Datei' 
 [replace | ignore] into table Tabelle


Im Wesentlichen lädt es den Inhalt der Datei in die Tabelle mit dem angegebenen Namen. Wenn die Kombination aus »select into outfile« und »load data info« für ein Tabellen-Backup zum Einsatz kommt, muss vor dem »load data« die Zieltabelle leer sein. Alternativ funktioniert auch der »ignore«-Parameter. Er verwirft Zeilen mit doppelten Primary-Keys, sodass selbst dann keine Fehler auftreten, wenn die Zieltabelle bereits dieselben Daten enthält.

Allerdings bringen »select into outfile« und »load data infile« auch einen Nachteil mit sich, der ihren Einsatz für die meisten Anwender zu sehr beschränkt. Denn es lassen sich immer nur einzelne Tabelle laden oder speichern. Daher muss der Anwender bei einer neu angelegten Tabelle jedes Mal auch die Sicherungsskipte ergänzen, damit die neue Tabelle auch ins Backup einfließt. Ideal ist »select into outfile« hingegen, um eine einzelne Tabelle zu sichern.

Option 2: Backup Table

Backup Table funktioniert ähnlich wie »select into outfile«, ist aber vom Befehl her klarer strukturiert: Der Anwender gibt direkt im SQL-Statement an, was er sichern möchte. Die Option »backup table« erhält als Parameter eine oder mehrere Tabelle sowie den Namen einer Datei, in die die Tabellen gesichert werden sollen: »backup table Tabelle1 [ ,Weitere] to \' Datei\'«. Mit diesem Befehl lassen sich mehrere Tabellen gleichzeitig sichern, die mit einem Komma voneinander getrennt anzugeben sind.

In aktuellen MySQL-Dokumentationen ist zwar zu lesen, dass Backup Table veraltet sei und die Entwickler gerade an einer neuen Variante arbeiten. Diesen Hinweis kann der Anwender jedoch getrost ignorieren, denn die Option - ob veraltet oder nicht - funktioniert ganz hervorragend. Der große Vorteil im Vergleich zu »select into outfile« ist, dass sie mehrere Tabellen gleichzeitig sichert. Sie verlangt jedoch wie die Select-Funktion einen Shellzugriff auf den MySQL-Server.

Linux-Magazin kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Log-Hilfe

    Normalerweise senden IPtables-Firewalls ihre Protokolle an den Syslog-Daemon. Doch bei größeren Datenmengen wird der Dienst zum Engpass für System und Admin. Dann helfen der Log-Daemon Ulogd und das Analysetool Nulog, beide verwenden eine MySQL-Datenbank für die Protokolle.

  • Encoding

    Moderne Linux-Distributionen benutzen in Zeiten der Globalisierung Unicode, meist in der Ausprägung UTF-8. Vor dieser Ära entstandene ISO-Textdateien lassen sich noch relativ einfach konvertieren. Eine ganze Datenbank ins Heute zu bringen, erfordert Fingerspitzengefühl.

  • Datenspeicher für Sparsame

    SQLite bringt zwar die Funktionalität einer relationalen SQL-Datenbank mit, kommt aber ohne aufwändig zu administrierende Server aus. Dieser Artikel vergleicht die Bibliothek mit ihren Konkurrenten und zeigt, wie man sie in eigene Programme einbaut.

  • Abfragen-Beschleuniger

    MySQL ist ein schnelles Datenbanksystem. Wenn die Datenbankanwendung dennoch in der Praxis manchmal lahmt, sind die Ursachen meist suboptimales Datenbankdesign, ineffiziente Abfragen oder der Verzicht auf Indizierung. Diese Fehler sind aber vermeidbar.

  • Perl-Snapshot

    Der bekannte Musikplayer Banshee legt die Metadaten der von ihm verwalteten Songs in einer SQLite-Datenbank ab, die zwei Perl-Skripte auslesen, restaurieren und mit automatisch ermittelten Beats-per-Minute-Werten auffrischen.

comments powered by Disqus

Ausgabe 02/2017

Digitale Ausgabe: Preis € 6,40
(inkl. 19% MwSt.)

Artikelserien und interessante Workshops aus dem Magazin können Sie hier als Bundle erwerben.