MySQL-Dump via logrotate

Veröffentlicht: April 25, 2015 in Linux
Schlagwörter:, ,

MySQL IconFrage: Wie kann ich meine Datenbank täglich sichern und die letzen x-Tage vorhalten?

Antwort: Diese Aufgabe lässt sich leicht mit Hilfe von mysqldump und logrotate umsetzen.

In diesem Beispiel wird die Datenbank „TestDB“ auf dem entfernten Host „dbserver“ nach „/root/sql/testdb.sql“ gesichert und die Dumps der letzten 7 Tage vorgehalten.

Im ersten Schritt wird unter /etc/logrotate.d das File sqldump erstellt:

nano /etc/logrotate.d/sqldump
# logrotate sql dump file
/root/sql/test.sql
{
   # behalte die letzten x-Tage
   rotate 7
   # taeglicher dump
   daily
   # keine Komprimierung
   nocompress
   # erstelle das File mit <mode> <user> <group>
   create 644 root root
   # haenge das Datum an
   dateext
   # loesche alles aelter als x-Tage
   maxage 7
   # fuehre das Skript aus nachdem der Dump rotiert wurde
   prerotate
     /usr/bin/mysqldump --host=dbserver --user=root --password=root --lock-tables --add-drop-database --add-drop-table TestDB > /root/sql/testdb.sql
   endscript
}

Anschließend muss das Dumpfile einmal erzeugt werden, da es ansonsten Probleme mit logrotate geben kann. Hierzu kann entweder ein Dump mit dem Befehl mysqldump erzeugt werden oder man erstellt einfach ein leeres File mit:

touch /root/sql/testdb.sql

Zum Schluss kann man das ganze nocheinmal testen:

logrotate -fv /etc/logrotate.d/sqldump
Advertisements

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden /  Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden /  Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden /  Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden /  Ändern )

Verbinde mit %s