Diese Seite ist nicht editierbar. Sie können den Quelltext sehen, jedoch nicht verändern. Kontaktieren Sie den Administrator, wenn Sie glauben, dass hier ein Fehler vorliegt. {{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: <code bash> $ 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 </code> Mit <code bash>$ mysqldump --help</code> 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: <code bash>$ mysqldump -u USER -p database USERDATABASE > usr1_db.sql</code> 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: <code bash>$ mysqldump -u USER -p --all-databases > full_db.sql</code> ===== Wiederherstellen der MySQL Datenbank ===== Das importieren eines dump files ist ebenso einfach. Hierzu nutzen wir folgende Syntax: <code bash>$ mysql -p USERDATABASE -u USER -p < usr1_db.sql</code> oder um alle Datenbanken wiederherzustellen: <code bash>$ mysql -p USERDATABASE -u USER -p < full_db.sql</code> ===== 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: <code bash> #!/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 </code> ==== cronjob einrichten ==== <code bash>crontab -e</code> cronjob anlegen: <code bash>55 2 * * * root /backup/backup.sh >> /dev/null 2>&1</code> //Start des Scripts um 02.55 jede Nacht// ===== Quellen ===== [[http://www.griessmeier.de/linux/mysql_backup.htm]]