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/