Eigen database back-up

Je kunt zelf eventueel een back-up maken naar je eigen server. Hieronder een script ter inspiratie van een andere klant.

Credentials aanvragen

Wil je hier gebruik van maken, neem dan even contact op met support via support@inserve.nl.
 

Op een server waarop zowel mariadb-dump (onderdeel van mariadb-client) als pigz (de multithreaded variant van gzip) zijn geïnstalleerd, draait een eenvoudig script voor het maken van dagelijkse database dumps.

Script:

make-dump.sh

#!/bin/sh
set -ex

export $(xargs < ./.env)

DATE=$(date --iso-8601)
DESTINATION=$DB_DUMP_FOLDER/$DATE-$DB_NAME.gz

/usr/bin/mariadb-dump --single-transaction -h"$DB_HOST" "$DB_NAME" | pigz > $DESTINATION

# Verwijder backups ouder dan 5 dagen
find $DB_DUMP_FOLDER/ -maxdepth 1 -type f -mtime +5 -exec rm -f {} \;

# Update symlink naar meest recente dump
cd $DB_DUMP_FOLDER
rm -f latest.tar.gz
ln -s $DATE-$DB_NAME.gz latest.tar.gz

Configuratiebestand

.env

In dezelfde directory als het script staat een .env bestand met de volgende inhoud:

DB_DUMP_FOLDER=./dumps
DB_HOST=bi.inserve.nl
DB_NAME=<inserve_databasenaam>

Database credentials

In de home-directory van de gebruiker waaronder het script draait, staat een bestand genaamd .my.cnf:

user=<database_gebruikersnaam>
password=<database_wachtwoord>

Bijvoorbeeld:

/home/<gebruiker>/.my.cnf

Hierdoor kunnen database credentials veilig worden gebruikt zonder ze direct in het script op te nemen.


Cronjob

Het script wordt dagelijks uitgevoerd via cron:

43 1 * * * /home/<gebruiker>/make-dump.sh

Dit voorbeeld start de backup iedere nacht om 01:43.


Backups opnemen in bestaand backupschema

De map:

/home/<gebruiker>/dumps

wordt vervolgens meegenomen in het reguliere backupschema. Hierdoor worden zowel de dagelijkse dumps als de latest.tar.gz symlink automatisch extern gebackupt.