MySQL Datenbanken sichern und wiederherstellen
Oftmals wird bei Webinhalten vergessen, dass diese auf Datenbankinhalten basieren. Somit ist eine
Sicherung der Datenbankinhalte genauso wichtig wie die Sicherung des Quelltextes.
Diese Anleitung ist keine generelle Sicherungsmethode, sondern entspricht nur meine Vorgehensweise.
Da meine existierenden Datenbanken nicht lebensnotwendige Inhalte haben, nehme ich es hin das
Veränderungen während des Tages nicht gesichert werden. (Log-Dateien werden nicht erstellt und
gesichert)
Da meine Datenbanken in der Nacht nicht verändert werden, kann eine Sperrung der Datenbanken erfolgen.
Die Sicherung der einzelnen Datenbanken erfolgt mit:
Notation
- $ ist der Linux- oder Dosprompt
- Benutzereingaben sind fett dargestellt
- alle Befehle müssen mit einem return abgeschlossen werden
- Befehle im mysql-Monitor müssen mit einem Semikolon ";" und einem return abgeschlossen
werden
Allgemeines
- Die Pfade entsprechen einer XAMPP Installation von Apachefriend.org
- Die Anleitung benötigt Shell zugriff und Crontab
- Vergabe eines Passwort für MySQL User root
Sicherung aus der Shell
Sicherung als dump
$ /opt/lampp/bin/mysqldump --opt --add-drop-table --user=root --password=geheim EDV
> /opt/lampp/htdocs/php_progs/MySQL_Sicherung/EDV.sql
ACHTUNG! eine Zeile
Sicherung als dump komprimiert
$ /opt/lampp/bin/mysqldump --opt --add-drop-table --user=root --password=geheim EDV | gzip
> /opt/lampp/htdocs/php_progs/MySQL_Sicherung/EDV.sql.gz
ACHTUNG! eine Zeile
Erleuterungen:
/opt/lampp/bin/mysqldump
Installationsverzeichnis von MySQL
--opt
Optimiert die Erstellung der Dump-Datei
(Datenbank(en) Schreibzugriff sperren,
keine Log-Dateien Sicherung, direktes schreiben der Dump's)
--add-drop-table
Bei der wiederherstellung werden alle bestehenden einträge
gelöscht und anschließend aus der Sicherung wieder eingespielt.
--user=root --password=root
Username und Passwort der Datenbank
EDV
Datenbank
--databases [OPTIONS] DB1 [DB2 DB3...] = mehrere Datenbanken
--all-databases = alle Datenbanken
/opt/lampp/htdocs/php_progs/MySQL_Sicherung/EDV.sql
Ablageverzeichnis und Datei
Wiederherstellung aus der Shell
Sollte die Komprimierung verwendet worden sein, muss die Datei erstmal entpackt werden.
$ gzip -d EDV.sql.gz
Jetzt gehen wir in die MySQL - Shell
$ ./mysql -u root -p
Enter Password:
Welcome to the mysql monitor ....
mysql>
Muss die Datenbank gelöscht werden, weil Sie korrupt ist oder andere undefinierte Probleme macht.
mysql> drop database EDV;
Query OK, ....
mysql>
Muss die Datenbank erst erstellt werden
mysql> create database EDV;
Query OK, ....
mysql>
Jetzt kann die Sicherung eingespielt werden
mysql> mysql --one-database EDV < EDV.sql
Query OK, ....
mysql>
Wenn alles OK können wir ja die MySQL - Shell ja verlassen.
mysql> quit;
Bye
Automatisierung der Datenbanksicherung
Solange es eine händische Sicherung ist wird diese nur sporadisch verwendet,
aber nur selten regelmäßig.
Die Automatisierung auf der Linux-Ebene erfolgt mit cron.
$ crontab -e
00 20 * * * /opt/lampp/bin/mysqldump --opt --add-drop-table --user=root
--password=geheim EDV
> /opt/lampp/htdocs/php_progs/MySQL_Sicherung/EDV.sql
ACHTUNG! eine Zeile
Der Editor ist vi
somit mit i in den Eingabemodus wechseln und die Zeile eingeben
nach der Eingabe 2 x [ESC]- Taste drücken um aus den Insert-Modus zu kommen und
mit :wq [ENTER] den vi schreibend verlassen.
Wollen Sie nicht schreibend verlassen, so benden Sie mit :q! [Enter]
Das Verzeichnis /opt/lampp/htdocs/php_progs/MySQL_Sicherung/ noch in die tägliche Sicherung
einbinden, was ich über eine Sambafreigabe und einem NAS- System erledigt hab.
Viel Spass
Matthias Wulff
www.M-Wulff.de