MySQL Backup unter Linux

MySQL Datenbanken sind in der heutigen Zeit nicht mehr von einem Server wegzudenken. Informationen jeglicher Art können gespeichert, aufgerufen und gefiltert werden. Hierzu bietet MySQL eine Syntax, welche ohne Probleme in z.B. PHP integriert werden kann.

Um zu gewährleisten, dass Datenbanken auch nach einem Systemcrash noch verfügbar sind, ist es nötig diese regelmäßig zu sichern.

MySQL bringt ein Tool mit, welches mysqldump heisst. Mit diesem Tool ist es möglich eine Sicherung aller Datenbanken anzufertigen. Zeitgemäße Systeme arbeiten mit einer passwortgeschützten Abfrage. Aus diesem Grund werde ich hier auch nur diese Variante vorstellen.

Rufen wir mysqldump ohne Parameter auf bekommen wir folgendes zur Benutzung angezeigt:

$ mysqldump
Usage: mysqldump [OPTIONS] database [tables]
OR     mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
OR     mysqldump [OPTIONS] --all-databases [OPTIONS]
For more options, use mysqldump --help

Mit

$ mysqldump --help

werden alle zur Verfügung stehenden Optionen angezeigt. Diese sind aber für ein Backup nicht alle relevant. Die wichtigsten Optionen sind für uns: -u -p

Die Option -u gibt den Usernamen an, der Zugriff auf die Datenbank hat. Die Option -p zeigt eine Passworteingabeaufforderung vor dem Ausführen des Befehls.

Um eine bestimmte Datenbank zu sichern benutzen wir einfach folgende Syntax:

$ mysqldump -u USER -p database USERDATABASE > usr1_db.sql

USER entspricht hier dem Benutzer. Die Option -p wird ohne dazugehörigen Parameter übergeben. USERDATABASE entspricht der eigentlichen Datenbank. Wenn alles richtig eingegeben worden ist, bekommen wir eine Passwortabfrage zu sehen. Hier geben wir das Passwort des Benutzers ein uns sollten nun die Datei usr1_db.sql vorfinden, welche alle Datenbankeinträge enthält.

Um alle Datenbanken zu sichern, müssen wir uns als MySQL root anmelden. Folgende Syntax wird benutzt, welche ähnlich funktioniert wie die bereits oben beschriebene:

$ mysqldump -u USER -p --all-databases > full_db.sql

Das importieren eines dump files ist ebenso einfach. Hierzu nutzen wir folgende Syntax:

$ mysql -p USERDATABASE -u USER -p < usr1_db.sql

oder um alle Datenbanken wiederherzustellen:

$ mysql -p USERDATABASE -u USER -p < full_db.sql

Um die Datenbank automatisch zu sichern, kann man folgendes Script nutzen, welches Jerome Griessmeier auf seiner Webseite zur Verfügung stellt:

#!/bin/sh 
# Backup Script 
# Author: Jerome Griessmeier 
# Version: 0.2
#
# This Shell Script backup your database
# For automating use a cronjob
 
# 
# Pfade setzen/ Setting path variables
# 
MYSQL_DUMP=/usr/bin/mysqldump 
BACKUP_DIR=/pfad/zu/backup_verzeichnis
TAR=/bin/tar 
RM=/bin/rm 
DB_NAME=DB_NAME 
DB_USER=DB_USER 
DB_PASS=DB_PASS 
AKT_DATUM=`date +%Y%m%d%H%M` 
 
# 
# mysql dump erzeugen / create mysql dump
# 
$MYSQL_DUMP $DB_NAME -u $DB_USER --password=$DB_PASS > 
$BACKUP_DIR/$AKT_DATUM.backup.sql 
 
# 
# mysql dump komprimieren / Compress data
# 
cd $BACKUP_DIR 
$TAR -cvzf $AKT_DATUM.backup.sql.tgz $AKT_DATUM.backup.sql 
 
# 
# aufraeumen / clean up
# 
$RM $AKT_DATUM.backup.sql
crontab -e

cronjob anlegen:

55 2 * * * root /backup/backup.sh >> /dev/null 2>&1

Start des Scripts um 02.55 jede Nacht

  • linux/mysql_backup.txt
  • Zuletzt geändert: 2024/01/13 23:41
  • von psycore