MySQL
Aus FAQ-vServer
Datenbankserver MySQL
Finetunig
Bevor an der my.cfg rumgeschraubt wird, sollte man sich erstmal die Ursachen ansehen, warum ein Datenbankserver plötzlich zu lahmen beginnt.
Siehe hierzu die sehr guten Ausführungen von Thomas Schefter!
Aus Gründen der Ursachensuche haben wir jetzt auf dem gemeinsamen MySQL-Server folgende Einträge verändert und werden von Zeit zu Zeit Auszüge der Logs an die Besitzer der Datenbanken senden:
log_slow_queries = /var/log/mysql/mysql-slow.log long_query_time = 3 log-queries-not-using-indexes
Backup mit MySQLDump
Das Tool mysqldump ist Bestandteil von MySQL.
Hier ein einfaches Script, weilches zB. in einen Cronjob eingebaut werden kann:
db:~# cat /root/bin/dump-mysql.sh
#!/bin/bash
## dump-mysql.sh
# Einfaches Skript, um Datenbanken zu sichern
# Andreas Appenheimer, 2008
# enthaelt: Fehlerabfangroutine, um Datenbanken zu erkennen
# Backupstrategie um Backups zu rotieren
DUMP="mysqldump --skip-opt --add-drop-table --add-locks -C --hex-blob --extended-insert" #-u <Benutzer> -p <Passwort>
WORKDIR="/var/lib/mysql"
BACKUPDIR="/var/backup/mysql"
DATUM=`date +%F-%H-%M`
## Check Verzeichnisse
for DB in `ls $WORKDIR` ; do
if [ -d "$WORKDIR/$DB" ]; then
if [ -d "$BACKUPDIR/$DB" ] ; then
echo "check!"
else
mkdir $BACKUPDIR/$DB
fi
fi
done
## Rotate Backups
#for BACKUP in `ls $BACKUPDIR` ; do
# echo ""
#done
## Dump Databases
for DB in `ls $WORKDIR` ; do
echo "$DB is a Database?"
if [ -d "$WORKDIR/$DB" ] ; then
echo "database found: $DB"
$DUMP $DB > $BACKUPDIR/$DB/$DATUM.sql
# else
# echo "not a database"
fi
done
Viel Spaß

