Automatisk backup av database.
For å kjøre en backup, for eksempel den første hver måned, klokken 0545:
45 5 1 * * bash /var/scripts/backup_mariadb.sh 1>> /var/log/cronjobs/backup_database.log
Ved gjenoppretting av databaser, kan det oppstå problemer med tillatelser på data-folder.
Fikse error 2002 på openSUSE/redhat/centos:
chown -R mysql:mysql /var/lib/mysql
find /var/lib/mysql/* -type d -exec chmod 0700 {} \;
find /var/lib/mysql/* -type f -exec chmod 0660 {} \;
chmod 755 /var/lib/mysql
Backup med mariabackup
MariaDB tilbyr et eget program for å gjøre backup av databaser enkelt.
Eksempel:
#!/bin/sh
## Doc: https://mariadb.com/kb/en/library/full-backup-and-restore-with-mariabackup/
## To restore:
## mariabackup --prepare --target-dir=/dir/backup
## mariabackup --copy-back/--move-back --target-dir=/dir/backup
## Where the backups should be stored
BACKUPDIR="/data/NAS/Databaser"
## Socket location
SOCKET="/var/lib/mysql/mysql.sock"
## Backup filename
DAYT=`date +%Y-%m-%d_%H-%M-%S`
DAYF="MARIADBBACKUP_$DAYT"
## Log backup here
LOGC="/var/log/cronjobs/backup_database_log_$DAYT.log"
printf "$(date +%c)\n"
printf "Starter backup av database..."
touch $LOGC
## Make a temp dir for current backup
DIR1=$BACKUPDIR/$DAYF
mkdir $DIR1
## Make the backup
mariabackup --backup --target-dir=$DIR1 --socket=$SOCKET &>> $LOGC
printf " OK!\n"
printf "Komprimerer..."
## CD into backup dir
cd $BACKUPDIR
## Compress backup
CMPFILE=$DAYF.tar.gz
tar -czvf $CMPFILE $DAYF/ > /dev/null 2>&1 && rm -rf $DIR1
printf " OK!\n"
## Update permissions
chmod 0744 $CMPFILE
chown user:group $CMPFILE
size_gz=$(du -sh "$CMPFILE" | cut -f1)
printf "Størrelse på backup: %s\n" $size_gz
printf "$(date +%c)\n\n"
############
### Cleanup
## Delte backups older than 60 days
#find $BACKUPDIR/*.tar.gz -mtime +30 -exec rm {} \;
Full guide på bruk av denne finner man på MariaDB sin hjemmeside her.