Regelmässige MySQL Backups erstellen

Nach dem ich an dieser Stelle schon über MySQL Dumps geschrieben habe, möchte ich euch mal noch ein kleines Script vorstellen, mit dem ich auf diversen Servern regelmässige MySQL-Dumps mache:

#!/bin/sh
BACKDIR="/export/backup/mysql"
BACKEXT="sql.bz2"
OLDEXT="sql.bz2.old"

BACKFILE=backup

for i in $(mysqlshow -u backup | grep -v "^+" | grep -v Databases | cut -d " " -f 2 | grep -v information_schema);
do
    mysqldump -u backup --opt -Q $i | bzip2 -c > $BACKDIR/$i.neu
    if [ -f $BACKDIR/$i.$BACKEXT ] ; then
        cmp $BACKDIR/$i.neu $BACKDIR/$i.$BACKEXT > /dev/null 2>&1
        if [ $? != 0 ] ; then
            mv $BACKDIR/$i.$BACKEXT $BACKDIR/$i.$OLDEXT
            chmod 600 $BACKDIR/$i.$OLDEXT
        fi
    fi
    mv $BACKDIR/$i.neu $BACKDIR/$i.$BACKEXT
    chmod 600 $BACKDIR/$i.$BACKEXT
done

Das Script macht einzelne Dumps jeder Datenbank auf dem Server. Es setzt voraus dass es einen User namens „Backup“ gibt, der die passenden Rechte hat, und macht die Backups in /export/backup/mysql. Die Backups werden mit Bzip2 komprimiert und man hat immer den aktuellen ump plus den davor vorrätig (das Script rotiert die Backups durch).

Nutzt es auf eigene Gefahr 😉

Advertisements

Linux: MySQL-Dumps erstellen und wieder laden

Weil ich’s diese Woche gerade gebraucht habe, und selber hier nachsehen musste:

Einen MySQL-Dump erstellen:
/pfad/zu/mysqldump -u$DBUSER -p$DBPASSWD -h$DBHOST $DATABASE > $FILENAME

Was ich diese Woche dann benötigte: Einen MySQL Dump auch wieder einlesen:
/pfad/zu/mysql -u $DBUSER -p$DBPASSWD --database=$DATABASE < $FILENAME

Mehr dazu (z.B. UTF8 und MySQLHotCopy) gibts unter obigem Link, oder im MySQL 5.1 Referenzhandbuch.