===== Datenbanken ===== ==== Alle vorhandenen Datenbanken anzeigen: ==== user~/> echo "show databases" | mysql -uroot | grep -v Database | grep -v information_schema Dieser Aufruf setzt voraus, dass im Heimatverzeichnis eine Konfigurationsdatei .my.cnf existiert, die das root-Passwort enthält. Damit muss beim Aufruf das Passwort nicht mehr angegeben werden. user~/> cat /home/user/.mycnf [mysqldump] user=root password=########## [mysql] user=root password=########## ====Ein Skript, das für jede Datenbank ein Backup erstellt. ==== user~/> vi /home/user/bin/dbbackup.sh #!/bin/bash # Backupskript für eine MySQL-Datenbank # Alle Datenbanken werden in je einer Datei im temporären Ordner /tmp gesichert. DBUSER="root" DATUM=`date +"%y-%m-%d"` ZIEL="/backup" # Datenbanken einlesen, Database und information_schema weglassen DATABASES=`echo "show databases" | mysql -u$DBUSER | grep -v Database | grep -v information_schema` # für jede Datenbank einen Dump erstellen for db in $DATABASES; do mysqldump --force --opt -u$DBUSER --databases $db | gzip --best -c -f > "$ZIEL/$db-$DATUM.sql.gz" done ====Periodisches Ausführen des Skripts mit einem cron-Job ==== $> crontab -e # m h dom mon dow command 00 05 \* \* \* /home/user/bin/dbbackup.sh ====Verwendung von logrotate==== Damit über die Zeit nicht zu viele Backups gesichert werden, können mit logrotate jeweils eine bestimmte Anzahl von Backups gesichert werden. $> sudo vi /etc/logrotate.d/mysql_backups /backup/*.gz { daily rotate 7 nocreate nocompress sharedscripts postrotate /home/user/bin/dbbackup.sh || true endscript } Die Konfigurationsdatei kann mit folgendem Befehl getestet werden: user~> sudo logrotate -f /etc/logrotate.d/mysql_backups