NEWS
Backup MySQL-Datenbank
-
Hallo,
anbei ein kleines Skript, welches eure SQL-DB sichern kann:
#!/bin/bash NOW=$(date +"%d") cd /var/ftp mkdir sql cd sql USER="BENUTZER" PASSWORD="PASSWORD" databases=`mysql -u $USER -p$PASSWORD -e "SHOW DATABASES;" | tr -d "| " | grep -v Database` #echo "DBS: $databases" for db in $databases; do if [[ "$db" != "information_schema" ]] && [[ "$db" != "performance_schema" ]] && [[ "$db" != "mysql" ]] && [[ "$db" != _* ]] ; then echo "Dumping database: $db" rm org.$NOW.$db.sql.gz mysqldump -u $USER -p$PASSWORD --databases $db > org.$NOW.$db.sql gzip org.$NOW.$db.sql fi done
Ihr müßt
cd /var/ftp durch das Verzeichnis Eurer Wahl ersetzen
BENUTZER und PASSWORT müssen natürlich auch angepaßt werden.
Wenn ihr z.B. nur bestimmte Datenbanken sichern wollt, dann
databases = "iobroker"
oder
databases = "iobroker,testdb"
eintragen.
Es wird pro Tag im Monat eine Datei angelegt. Steuerbar über $NOW.
-
Hi ssiswup,
ich habe das jetzt mit dem Kommando vom eric in einer .sh Datei gemacht (und dann täglich per cron):
http://forum.iobroker.net/viewtopic.php … SQL#p24787
mysqldump -u root -pgeheimespasswort --all-databases > /mnt/diskstation/Sicherungen/mySQL//$(date +"%d")_mySQL.sql
Da Dein Skript doch etwas umfangreicher ist, frage ich mir da irgendwelche Nachteile mit erkaufe.
Wo sind denn die Unterschiede?
Gruß
Michael
P.S.: ich war etwas großzügig mit den Datenpunkten, die ich speichere. Die SQL-Datenbank wächst derzeit knapp 7 MB pro Tag.
Hast Du gerade ein SQL-Statement zur Hand, um da aufzuräumen, z.B. alle Daten löschen, die älter als 14 Tage sind?
-
Hallo,
Der Umterschied ist, das bei meinem Skript pro Datenbank eine Datei erstellt wird.
Das löschen kannst du meine ich über ioBroker machen, indem du die Speicherdauer
Der Datenpunkte heruntersetzt.
-
Hallo,
Der Umterschied ist, das bei meinem Skript pro Datenbank eine Datei erstellt wird.
Das löschen kannst du meine ich über ioBroker machen, indem du die Speicherdauer
Der Datenpunkte heruntersetzt. `
Ich habe jetzt Dein Skript angepasst. Danke!
Das die unterschiedliche Datenbanken gesondert abgespeichert werden, macht alleine deshalb schon Sinn, da ich für mySQL extra einen eigenen Server genommen habe und dort auch andere Datenbanken anlegen möchte.
Dann wird bei Dir die Datenbank komprimiert, was ungefähr dieSicherung um den Faktor 10 verkleinert.
Und ich hab was gelernt, nachdem ich mir das Skript getestet habe
Das mit den Datenpunkten löschen schaue ich mir trotzdem noch einmal direkt in SQL an.