Mit den Programmen mysqldump und mysql können Backups einer MySQL Datenbank erstellt und wiederhergestellt werden. Dabei spielt die grösse einer Datenbank keine Rolle, was ein unschlagbarer Vorteil im Vergleich zum phpMyAdmin sein kann.
mysqldump
Der Grundaufruf von mysqldump sieht wie folgt aus:
mysqldump -u [USERNAME] --password="[PASSWORT]" [DATENBANK] > [BACKUP_DATEI_NAME].sqlMit weiteren Parametern:
mysqldump --no-tablespaces --extended-insert --compress --quote-names --single-transaction --routines --triggers --opt -u [MYSQL_USER] --password="[MYSQL_PW]" [MYSQL_DB] > [BACKUP_DATEI_NAME].sqlWill man das Backup gleich auch mit gzip komprimieren:
mysqldump --max_allowed_packet=512M --no-tablespaces --extended-insert --compress --quote-names --single-transaction --routines --triggers --opt -u [MYSQL_USER] --password="[MYSQL_PW]" [MYSQL_DB] | gzip -c > [BACKUP_DATEINAME].sql.gzmysqldump kann auch via SSH Remote ausgeführt werden. Dazu sollte die Ausführung in eine Scriptdatei ausgelagert werden:
ssh -C -f -L$[FORWARD_PORT]:[MYSQL_SERVER]:[MYSQLPORT -p [SSH_PORT] -i [SSH_PRIVATE_KEY] [SSH_USER]@[SSH_SERVER] sleep 5
mysqldump -h 127.0.0.1 -P $[FORWARD_PORT] --max_allowed_packet=512M --no-tablespaces --extended-insert --compress --quote-names --single-transaction --routines --triggers --opt -u [MYSQL_USER] --password="[MYSQL_PW]" [MYSQL_DB] > [BACKUP_DATEI_NAME].sqlWenn man der Backupdatei ein Datum hinzufügen will, kann dies wie folgt gemacht werden:
mysqldump -u [USERNAME] --password="[PASSWORT]" [DATENBANK] > `date +%Y.%m.%d-%H.%M.%S`_DATEINAME.sql'mysql
Um ein Datenbankbackup wiederherzustellen wird das mysql Programm genutzt:
mysql -u [MYSQL_USER] --password="[MYSQL_PW]" [MYSQL_DB] < [BACKUP_DATEI_NAME].sqlWenn die Backupdatei mit gzip komprimiert ist.
gunzip < [BACKUP_DATEI_NAME].sql.gz | mysql [MYSQL_USER] --password="[MYSQL_PW]" [MYSQL_DB]Die Datei auf einem Remoteserver wiederherstellen:
gunzip -c [BACKUP_DATEI_NAME].sql.gz | ssh -p [SSH_PORT] -i [SSH_PRIVATE_KEY] [SSH_USER]@[SSH_SERVER] "mysql -h [MYSQL_SERVER] -P [MYSQL_PORT] -u [MYSQL_USER] --password='[MYSQL_PW]' [MYSQL_DB]