tägliche Mysql-Backups

Sofern der MySQL-Root User mit einem Passwort belegt wurde sollte man zunächst Passwort Datei für MySQL anlegen.

Anlegen der Datei

/root/.my.cnf

Inhalt:

[mysqldump]
user=root
password=YourPassW0rd
[mysql]
user=root
password=YourPassW0rd

Rechte setzen:

chmod 0600 /root/.my.cnf

Das Script für da MySQL-Backup wird in

/usr/local/bin/mysqlbackup

angelegt. Folgender Inhalt kann übernommen werden.

#!/bin/bash

USER="root"
BDIR="/home/backup/mysql"
DATE=$(date +%G-%m-%d)

if [ ! -d "${BDIR}" ]
then
        mkdir -p "${BDIR}"
fi

for i in $(/usr/bin/mysql -u${USER} -e 'show databases' | grep -vw "Database")
do
        if [ ! -d "${BDIR}/${i}" ]
        then
                mkdir "${BDIR}/${i}"
        fi
        /bin/touch "${BDIR}"
        /usr/bin/mysqldump -u${USER} -c -Q --default-character-set=latin1  ${i} >> "${BDIR}/${i}/${i}-${DATE}.sql"
        /bin/gzip -9 "${BDIR}/${i}/${i}-${DATE}.sql"
done

/usr/bin/find "${BDIR}" -mtime +3 -type f -exec rm {} \; 2> /dev/null

Das Script ausführbar machen:

chmod a+x /usr/local/bin/mysqlbackup

Sollte man Systemweit das Kommando mysqlbackup ausführen können. Um es nun täglich laufen zu lassen, reicht ein Symlink nach /etc/cron.daily

ln -s /usr/local/bin/mysqlbackup /etc/cron.daily/