Bash-Scripting: Mysql-Dumpscript mit Rotation der Sicherungen
Backup…
Ein Script um ein Dump einer MySQL-Datenbank zu ziehen und komprimiert als bz2-Datei zu speichern. Eine einfache Backuprotation wurde mit eingefügt, so dass die letzten X-Versionen in den Ordnern 1-X vorgehalten werden.
#!/bin/bash # This Backup-Script creates a dump from the entire mysql-Database # and safes it in the backup-directory. # Some Backup-Rotation included. BACKUP_ROOT="/mnt/backup/mysql" DB_USER="root" #DB-root DB_PASSWD="Password" #DB-root-pw ROTATIONS="7" #Number echo "" echo "MySQL-Backup" echo "----------------------------------------" echo "Rotating Backups..." echo "This may take some time..." # Delete eldest Backup rm -rf $BACKUP_ROOT/$ROTATIONS # create directories if needed COUNT=1 for ((i=1; $i<=$ROTATIONS; i++)) do if [ ! -d ${BACKUP_ROOT}/${COUNT} ]; then mkdir -p $BACKUP_ROOT/$COUNT fi COUNT=$(($COUNT+1)) done # rotating the backups COUNT=0 for ((i=1; $i<$(($ROTATIONS)); i++)) do mv $BACKUP_ROOT/$(($ROTATIONS-$COUNT-1)) $BACKUP_ROOT/$(($ROTATIONS-$COUNT)) COUNT=$(($COUNT+1)) done mkdir $BACKUP_ROOT/1 echo "" echo "Creating new backup from Database... " echo "This may take some time..." mysqldump --user=$DB_USER --password=$DB_PASSWD --all-databases | bzip2 > $BACKUP_ROOT/1/mysql-`date +%Y-%m-%d`.bz2 echo "----------------------------------------" echo "" echo "done" exit 0
…und Restore
Der Dump kann über eine Pipe entpackt und zurückgesichert werden.
bunzip2 < mysql-2013-10-25.bz2 | mysql -uroot -p