Sitemap | Nicht eingeloggt

Layout: V2_DayTime
V2_DayTime
| V2
V2
| V2 Dark
V2 Dark
| Alle

DE

Tux

MySQL Datenbank sichern und wiederherstellen

Einführung

Es gibt mehrere Wege eine oder mehrere MySQL-DB(s) zu speichern und wieder herszustellen. Es gibt Drittanbieter Scripte (meistens PHP), die direkt genutzt werden können und zu empfehlen sind, wenn man keinen Zugriff auf die Kommandozeile des Web- oder DB-Servers hat. Sie sind meistens sehr einfach und oft sogar mit einer graphischen Oberfläche. Ich erkläre hier aber die Variante mit der Linux-Kommandozeile, die auch mit dem Artikel unter Advanced Linux Infos > Webserver (Lamp) installieren und einrichten zusammenhängt.

Voraussetzungen

MySQL Datenbank sichern

Bitte auf dem Server in der Kommandozeile folgenden Befehl ausführen:

mysqldump -u root -p datenbank1 > /usr/src/datenbank1.sql

Fett markiert ist der Datenbankname, der Sicherungspfad und der Sicherungsdateiname. Die musst Du auf Deine gewünschten Angaben umstellen. Wenn Du den Befehl ausführst, wirst Du aufgefordert das (MySQL-)Rootpasswort einzugeben.
Da ich die Sicherung im Webordner haben möchte, per FTP darauf zugreife und sie dann in mein Backup speichere, sieht die Zeile bei mir so aus:

mysqldump -u root -p easeli > /var/www/mysqldumps/easeli_JAHR_MONAT_TAG.sql

Die gespeicherte Datei enthält bei mir das heutige Datum, damit ich mehrere Sicherungen nebeneinander haben kann.

Speichern auf anderen Computer

Dafür gibt es mehrere Varianten. Man kann:

MySQL Datenbank auf dem neuen Server erstellen

Ich gehe davon aus, dass der MySQL Server schon installiert, ein Rootlogin, die gewünschte Datenbank und ein Datenbankuser eingerichtet ist. Falls Du nicht weisst wie das geht, hat es unter Linux / Debian > Webserver (LAMP) installieren und einrichten eine kurze Anleitung wie man das macht.

MySQL Dump in Datenbank wiederherstellen

Jetzt stellen wir den zuvor gemachten Dump der MySQL Datenbank easeli auf dem Server in die zuvor erstellte neue Datenbank easeli wieder her. Dazu muss man das MySQL Root-Passwort eingeben. Falls es auf dem neuen Server anders lautet, natürlich das richtige nehmen:

mysql -u root -p easeli < /var/www/mysqldumps/easeli_JAHR_MONAT_TAG.sql

Nach dem Einspielen, sollte unbedingt ein Flush Privileges auf der Datenbank durchgeführt werden. Dazu loggen wir auf den MySQL Server ein:

mysql -u root -p

Und führen den Befehl aus um die Berechtigungen neu einzulesen:

FLUSH PRIVILEGES;

MySQL-Dump per Cronjob ausführen

Damit man nicht manuell den Dump ausführen muss, bietet es sich an einen Cronjob einzurichten, der das in einem Intervall automatisch ausführt.

Dafür erstellen wir die Datei in /etc/cron.weekly/auto_dump (oder /etc/cron.daily/auto_dump, wenn man das täglich machen möchte):

sudo nano /etc/cron.weekly/auto_dump

...und fügen folgenden Inhalt ein:

#!/bin/bash
dateiname=DEINDBNAME_`date +%Y_%m_%d`.sql
pfad=/var/www/mysqldumps/$dateiname

mysqldump -u root -pDEINPASSWORT DEINEDB > $pfad
chown user:gruppe $pfad

Das Passwort bei -p MUSS wie angegeben ohne Abstand eingegeben werden!
Den user:gruppe ändere ich, damit ich per sFTP mit meinem FTP User die Datei holen, respektive überhaupt sehen kann.
Die Cronjobs werden mit Root ausgeführt, wenn man die crontab nicht umkonfiguriert!

Speichere und schliesse die Datei.
Jetzt führen wir folgenden Befehl aus, damit die Datei ausführbar wird:

sudo chmod +x /etc/cron.weekly/auto_dump

Wenn man den Computer jetzt neustartet, wird ab jetzt einmal wöchtenlich (oder täglich wenn cron.daily) der Dump ausgeführt und direkt mit Datum versehen. Die ` (Akzent links) sind nötig, damit der Befehl date auch innerhalb der spezifizierten Variable ausgeführt wird.

Die Datei kann jetzt per SCP oder FTP auf einen anderen Computer kopiert werden. Man kann das natürlich auch automatisieren.

Infos zum Dokument
Author: Christoph Iseli
Datum: 01.04.2014
Letzte Änderung: 21.11.2014

2 Kommentare

#1 Von Easelee in Jona am 16.7.2014 um 16:57 Uhr

Cronjob-Anleitung eingefügt.

#2 Von Easelee in Jona am 16.7.2014 um 17:02 Uhr

Testen kann man cronjobs (zumindest in Debian-Umgebungen) so:
sudo run-parts -v /etc/cron.weekly/

Einen neuen Kommentar hinzufügen

Info: Wenn Du eingeloggt bist, musst Du keine Userdaten mehr eingeben.

Ort:
(Optional)

Kommentar:

Impressum
Programmierung: Christoph Iseli | Design: Christoph Iseli
Webseitencode: Darf frei kopiert / verwendet werden (Downloads) | Inhalt: Darf frei verwendet werden, solange ein Link auf diese Seite mitgegeben wird.