{{tag>deutsch linux debian mysql backup}} ====== MySQL Backup unter Linux ====== ===== Einleitung ===== 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. ===== mysqldump ===== 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. ===== Sichern der MySQL Datenbank ===== ==== Sichern einer bestimmten Datenbank ==== 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. ==== Sichern aller Datenbanken ==== 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 ===== Wiederherstellen der MySQL Datenbank ===== 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 ===== Automatisiertes Sichern ===== Um die Datenbank automatisch zu sichern, kann man folgendes Script nutzen, welches Jerome Griessmeier auf seiner [[http://www.griessmeier.de/linux/mysql_backup.htm#3-1|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 ==== cronjob einrichten ==== crontab -e cronjob anlegen: 55 2 * * * root /backup/backup.sh >> /dev/null 2>&1 //Start des Scripts um 02.55 jede Nacht// ===== Quellen ===== [[http://www.griessmeier.de/linux/mysql_backup.htm]]