MySQL Backup via SSH - Fertiges Beispiel
Erstellt am 23.10.2008 um 21:56 Uhr von sim4000
Hier nun noch mal ein komplettes Beispiel, zur Veranschaulichung.
Inhalte dieses Artikels
Die Textdatei
| 1 2 3 | mysql5.example.com:user123_1:huhu123abc:t:datenbank_1
mysql3.example.com:user123_2:kafhkahd:t:datenbank_2
mysql4.example.com:user123_3:12had709:w:datenbank_3 |
Der Bash Code
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | #!/bin/bash # Backup der Datenbanken mit SSH via Public Keys und Samba Shares # by Christian Blechert # 22.10.2008 # Datum erstellen DATE=$(date +"%Y-%m-%d_%H-%M") # Laufwerk mouten echo "Binde Laufwerk ein..." mount.cifs //192.168.1.1/sql /mnt -o user=sql,pass=sql1234rg,gid=1000,uid=1000,codepage=cp850,iocharset=utf8 # Wenn Laufwerk erfolgreich eingebunden wurde if [ -d /mnt/sqlbackups ]; then for I in $(cat /home/sim4000/backup/databases); do if [ "$1" == "$(echo $I | cut -d ":" -f4)" ]; then MYSQL_HOST=$(echo $I | cut -d ":" -f1) MYSQL_USER=$(echo $I | cut -d ":" -f2) MYSQL_PASS=$(echo $I | cut -d ":" -f3) MYSQL_DATA=$(echo $I | cut -d ":" -f2) NAME=$(echo $I | cut -d ":" -f5) FOLDER="$(echo $MYSQL_DATA)_$(echo $NAME)" if [ ! -d /mnt/sqlbackups/$FOLDER ]; then mkdir /mnt/sqlbackups/$FOLDER fi echo "############################################ Create Dump for \\"$NAME\\"... ############################################" echo "Create..." ssh user@example.com -i /home/sim4000/backup/pub_key "mysqldump -h $MYSQL_HOST -u $MYSQL_USER -p$MYSQL_PASS $MYSQL_DATA > /var/www/user123/backup/$(echo $DATE)_$(echo $MYSQL_DATA).sql" echo "Download..." scp -i /home/sim4000/backup/pub_key user@example.com:/var/www/user123/backup/$(echo $DATE)_$(echo $MYSQL_DATA).sql /mnt/sqlbackups/$FOLDER echo "" fi done; echo "" echo "" echo "Sicherung durchgefuehrt" echo "Trenne Laufwerk" umount /mnt/ # Wenn Laufwerk nicht eingebunden wurde else echo "Fehler beim Mounten des Laufwerks!" fi |
Der Cron-Aufruf in /etc/crontab
| 1 2 3 4 | # Taeglich 8:00 0 8 * * * root /home/sim4000/backup/sql_backup.sh t # Sonntags 8:00 0 8 * * 0 root /home/sim4000/backup/sql_backup.sh w |
Die beiden Cron Aufrufe starten den Backup für die Täglichen Backups (t) jeden Tag um 8:00 Uhr morgens. Dabei werden folgende Datenbanken gesichert.
- datenbank_1
- datenbank_2
Der wöchentliche Backup (w) wird jeden Sonntag um 8:00 Uhr morgens aufgerufen. Da werden folgende Datenbanken gesichert.
- datenbank_3




