Mysql Datenbank sichern

Hier möchte ich in kurzen Schritten zeigen wie man auf der Konsole eine Mysql Datenbank sichern kann. Die Beispiele wurden alle als root ausgeführt.

Manuelles sichern von Mysql Datenbanken als sql Datei!

Eine Datenbank:


mysqldump -u root -p db_name > db_name.sql

Alle Datenbanken:


mysqldump -u root -p --all-databases > all_db.sql

Manuelles sichern von Mysql Datenbanken als gzip Datei!

  • Das Abspeichern als gzip Datei sparrt ein bisschen Speicherplatz. Je nach Große der Datenbank können es schon einige MB sein.
    Bei mir waren es z.B. statt 20 MB nur 2,5 MB!

Eine Datenbank:


mysqldump -u root -p db_name | gzip -q > db_name.sql.gz

Alle Datenbanken:


mysqldump -u root -p --all-databases | gzip -q > all_db.sql.gz
  • „db_name“ jeweils durch die gewünschte Datenbank ändern.
  • Anschließend wird nach dem Root Passwort gefragt.
  • Das „-u root“ braucht man nicht umbedingt, wenn man schon als root im System angemeldet ist. Es sei denn man möchte unter einem anderen User sichern.
  • Beim sichern mit mysqldump wird die Datenbank kurz gesperrt, damit sie konsistent bleibt!. Je nach Große und Serverauslastung kann es ein paar Sekunden dauern!
  • Wer auf die Eingabe des Passworts verzichten möchte schaut unter Automatische Sicherung nach! (s.u.)

Manuelles sichern von Mysql Datenbanken mit Datum und Uhrzeit!

Eine Datenbank:


mysqldump -u root -p db_name > $(date +"%d.%m.%Y--%H:%M")-db_name.sql

Alle Datenbanken:


mysqldump -u root -p --all-databases > $(date +"%d.%m.%Y--%H:%M")-all_db.sql
  • Das Prinzip ist wie oben gleich, man fügt lediglich zum Dateiname
    $(date +"%d.%m.%Y--%H:%M")

    hinzu!

  • Aussehen tut das ganze so:
    20.06.2015--10:00-db_name.sql

Automatisches sichern von Mysql Datenbanken mittels cronjob bzw. mit Datum und Uhrzeit!

  • Unter Debian/Ubuntu gibt es den User debian-sys-maint, welcher vollen Zugriff auf Mysql hat. Die Zugangsdaten sind in der
    /etc/mysql/debian.cnf gespeichert!
  • Bei einem cronjob ruft man diese Datei mittels mysql…–defaults-extra-file auf!
  • Man kann die Option auch bei der Manuellen Sicherung nutzen, das spart die Eingabe es Passworts!
  • Die Option -u benutzer -p ist hier vollkommen überflüssig!

Als sql Datei:


mysqldump --defaults-extra-file=/etc/mysql/debian.cnf db_name > $(date +"\%d.\%m.\%Y--\%H:\%M")-db_name.sql

Als gzip Datei:


mysqldump --defaults-extra-file=/etc/mysql/debian.cnf db_name | gzip -q > $(date +"\%d.\%m.\%Y--\%H:\%M")-db_name.sql.gz
  • Als cronjob würde es beispielsweise so aussehen:
    0 4 * * * mysqldump --defaults-extra-file=/etc/mysql/debian.cnf db_name > $(date +"\%d.\%m.\%Y--\%H:\%M")-db_name.sql
  • Angabe eines anderen Pfades, sonst landet alles im Root Ordner:
    0 4 * * * mysqldump --defaults-extra-file=/etc/mysql/debian.cnf db_name > /pfad/backup/$(date +"\%d.\%m.\%Y--\%H:\%M")-db_name.sql
  • Die „\“ vor dem „%“ Zeichen sind wichtig, damit cron diese nicht falsch interpretiert!
  • Im Beispiel wird die Sicherung um 4 Uhr Nachts ausgeführt!
  • Mehr zum Thema cronjobs hier: Cron

Mysql Datenbank zurücksichern

Schreibe einen Kommentar

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

Time limit is exhausted. Please reload CAPTCHA.