1. Home
  2. Linux
  3. Apache - MySQL - PHP
  4. Skript zum Sichern der MySQL Datenbanken

Skript zum Sichern der MySQL Datenbanken

MySQL bzw. MariaDB bringt mit dem mysqldump Utility ein geeignetes Werkzeug mit, welches sich gut in einem Skript verarbeiten lässt. Das folgende Skript sichert zB alle vorhandenen MySQL Datenbanken, verzippt diese, verschiebt diese Dumps in ein Backup-Verzeichnis und löscht ältere Dumps wieder

Skript zum Sichern der Datenbanken

Das Skript enthält das MySQL root-Passwort in Klartext (Zeile 12). Sichern Sie Datei gegen unbefugten Zugriff entsprechend ab!

#!/bin/sh
 
# MySQL dump script
# v1.0
# prontosystems.de
# /var/scripts/sqldumper.sh
 
# where to save database dumps
SAVEDIR="/var/backups/mysql/"
 
# sql root password
SQLPASS="mysqlpass"
 
# dump file name ending
FILEEND="`date +%Y%m%d`"
 
# delete dumps older than n days
DELOLDER="6"
 
# absolute pathnames
MYSQLDUMP=`which mysqldump`
GZIP=`which gzip`
 
# scriptname and pid
SCRIPT="`basename $0`[$$]"
 
# delete files
for TODEL in `find ${SAVEDIR} -mtime +${DELOLDER}` ;
do
        rm ${TODEL}
        if [ $? -eq 0 ] ;
        then
                logger "${SCRIPT}: deleted ${TODEL}"
        fi
done
 
# dynamic listing of databases at runtime
DATABASES=`mysql -u root -p$SQLPASS -e 'show databases' | cat | grep -v "^Database$" | grep -v "^information_schema$"`
 
# create SAVEDIR if it does not exist
if [ ! -w ${SAVEDIR} ] ;
then
        mkdir ${SAVEDIR}
fi
 
# dump databases
for DB in ${DATABASES} ;
do
        ${MYSQLDUMP} -u root -p${SQLPASS} --single-transaction --opt --quote-names ${DB} | ${GZIP} -9 > ${SAVEDIR}${DB}-${FILEEND}.sql.gz
done
 
exit 0

Abschließend muss das Skript noch ausführbar gemacht werden und der Lesezugriff für die Benutzergruppe Jeder muss entfernt und root als Eigentümer und Gruppe eingetragen werden:

# chown root:root /var/scripts/sqldumper.sh
# chmod 750 /var/scripts/sqldumper.sh

Automatisierte Ausführung via cron

Um das Skript zeitgesteuert einmal am Tag ausführen zu lassen fügen Sie folgende Zeile in eine Ihrer crontab-Datein ein:

*  5    * * *   root    /var/scripts/sqldumper.sh > /dev/null 2>&1
Updated on 10. Oktober 2022

Was this article helpful?

Related Articles