Hier ein kleines Script, was dazu benutzt werden kann, täglich alle SQL Tabellen zu optimieren und für ein Backup zu archivieren.

Shellscript z.B. per Cronjob täglich ausführbar… Datei sollte auf Read-Only für ROOT gesetzt werden, da das Root-SQL Passwort im Klartext zu entnehmen ist. Übernahme auf eigene Gefahr, keine Gewährleistung auf Funktion!

Cronjob-Zeile (Bsp.): 33 02 * * * sh /root/opt_backup_sql.sh > /dev/null 2>&1

Code für /root/opt_backup_sql.sh:

# little MySQL script - optimize and backup tables...
b="/tmp/sqlbackup" # backup directory
PWD="blubb" # root passwort for sql table dump statemend
# nothing below has to be changed
MOVETO=”/backup” # directory where backup should be placed in
logger “sql opt and backup: starting”
export d=$(date +%Y%m%d)
mkdir -p $b
mkdir -p $b/$d
for a in `echo “show databases” | mysql -uroot -p$PWD |grep -v Database`;
do
mkdir -p $b/$d/$a
for i in `echo “show tables” | mysql -uroot -p$PWD $a|grep -v Tables_in_`;
do
echo “optimize table $i” | mysql -uroot -p$PWD $a|grep -v Msg_text;
mysqldump –add-drop-table –allow-keywords -q -a -c -uroot -p$PWD $a $i > $b/$d/$a/$i.sql
rm -f $b/$d/$a/$i.sql.gz
gzip $b/$d/$a/$i.sql
done
done
`tar cf $d.db.tar $b`
`gzip $d.db.tar`
rm -rf $b
mv $d.db.tar.gz $MOVETO
logger “sql opt and backup: done”