Backup database

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.