datenbankutil
Table of Contents
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