#!/bin/bash # # MySQL-Backup mit LVM-SnapShot # #------------------------------------------------------------------------------# # # https://www.badllama.com/content/mysql-backups-using-lvm-snapshots # #------------------------------------------------------------------------------# # LVM2, und rsnapshot muss installiert sein # aptitude install lvm2 rsnapshot # eine Volumengruppe muss angelegt sein, # in der das zu sichernde Laufwerk liegt und soviel freier Platz ist, # wie temporär für die Backup-Zeit benötigt werden. #------------------------------------------------------------------------------# VERSION="v2017022300" # # /dev/mapper/backup-backup /var/cache/rsnapshot ext4 errors=remount-ro 0 0 # /dev/mapper/trusty-mysqlbackup /snapshot ext4 errors=remount-ro 0 0 # SNAPSHOT="/snapshot" VolumenGruppe="trusty" VolumenName="mysql" #------------------------------------------------------------------------------# BACKUP=Ja umount /var/cache/rsnapshot 2>/dev/null umount ${SNAPSHOT} 2>/dev/null echo "FLUSH TABLES WITH READ LOCK;" | mysql -t || export BACKUP=Nein echo "SHOW MASTER STATUS; SHOW SLAVE HOSTS; SHOW SLAVE STATUS \G;" | mysql -t > /var/lib/mysql/data/MASTER_STATUS.txt || export BACKUP=Nein # modprobe dm-snapshot lvcreate -l 100%FREE -s -n ${VolumenName}backup /dev/${VolumenGruppe}/${VolumenName} || export BACKUP=Nein echo "UNLOCK TABLES;" | mysql -t mount /dev/mapper/backup-backup /var/cache/rsnapshot || export BACKUP=Nein mount /dev/${VolumenGruppe}/${VolumenName}backup ${SNAPSHOT} || export BACKUP=Nein if [ "${BACKUP}" = Ja ] ; then # # Copy data to backup rsnapshot hourly # fi ls -lha /var/cache/rsnapshot/backup/ umount /var/cache/rsnapshot umount ${SNAPSHOT} lvremove -f /dev/${VolumenGruppe}/${VolumenName}backup