User Tools

Site Tools


datenbankutil

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
datenbankutil.txt · Last modified: 2024/03/11 13:57 by walter