Anleitung: Backup der Datenbanken und des kompletten Raspi

PDF Dokumente für Informationen im Detail, sowie Bauanleitungen.

Moderatoren: Ulrich, TeamO

TeamO
Beiträge: 422
Registriert: Mo 22. Jun 2020, 08:58
Hat sich bedankt: 4 Mal
Danksagung erhalten: 66 Mal

Anleitung: Backup der Datenbanken und des kompletten Raspi

Beitrag von TeamO »

Da ich in einem anderen Thread darauf hingewiesen wurde, dass es schlecht ist eine Anleitung mitten in einem sehr langen Thread zu haben, hier nun ein extra Thread zu einer Möglichkeit für Backups der Datenbanken und des gesammten Raspberry inklusive Erläuterungen.
Wenn jemand dazu Anregungen, Änderungen oder sonstiges hat, werde ich diesen ersten Post entsprechend anpassen, damit hier immer eine aktuelle Anleitung/Erklärung vorhanden ist.

Diese Anleitung bezieht sich in meinem Fall auf die Sicherung auf einer NAS, da man generell keine Sicherungen auf dem Laufwerk ablegen sollte von welchem gesichert wird!
Denn ist dieses Laufwerk defekt hat man natürlich auch nichts mehr von der Sicherung.
Es kann jedoch auch eine externe Festplatte verwendet werden. Dazu muss im folgenden entweder das Ziel "/Backup" durch das entsprechende lokale Laufwerk getauscht werden, oder der Ordner "/Backup" muss auf das externe Laufwerk verweisen.

Vorbereitungen:
  • Anlegen des User pi mit entsprechendem Kennwort auf der NAS
  • Anlegen eines Backup-Ordners auf der NAS mit Berechtigung für den User pi
  • Anlegen des Backupordners auf dem Raspberry:

    Code: Alles auswählen

    sudo mkdir /backup
    sudo chmod 777 /backup
    • Da ich eine Verbindung über NFS-Share mit der NAS herstelle müssen noch folgende Tätigkeiten erledigt werden:

      Code: Alles auswählen

      sudo apt-get install nfs-common -y

      Code: Alles auswählen

      sudo systemctl start rpcbind

      Code: Alles auswählen

      sudo systemctl enable rpcbind
    • Anpassen von /etc/fstab zum Mounten eines NFS-Shares auf der NAS (ich habe dafür WinSCP verwendet; Login mit root):

      Code: Alles auswählen

      NAS-IP:/Pfad_zum_Backup-Ordner /backup nfs rw 0 0
      
      An ende eine Leerzeile lassen
      Hiermit wird der Ordner auf der NAS am Raspberry als Ordner "/Backup" eingebunden.
    • Anpassen von /etc/crontab für mount nach boot:

      Code: Alles auswählen

      @reboot root sleep 20 && umount -a
      @reboot root sleep 40 && mount -a
    Mit diesen beiden Zeilen werden nach einem (Neu-)Start des Raspberry erst alle verbundenen Laufwerke getrennt und danach wieder verbunden. Dadurch wird sichergestellt, dass auch wirklich das Laufwerk vorhanden ist.

    (Wöchentliche) Komplettsicherung des Raspberry: kann natürlich auch nur einmal im Monat oder so erfolgen.
    • Installation von raspiBackup

      Code: Alles auswählen

      sudo curl -sLO https://www.linux-tips-and-tricks.de/raspiBackupInstallUI.sh && sudo bash ./raspiBackupInstallUI.sh
    • Konfiguration nach eigenen Vorstellungen z.B. in der aktuellen raspiBackup.sh Version 0.6.6 und raspiBackupInstallUI.sh Version 0.4.3.5:
      • M3 -> C2 (Verzeichnispfad für die Backups) = /backup <- Hier wird der Speicherort des zu erstellenden Backups angegeben. Also der zuvor angegebene/erstellte Pfad.
      • C3 (Backupversionen) = "Eine maximale Anzahl von Backups vorhalten -> 2
      • C4 (Backup Typ) = „Sichere mit dd und stelle unter Windows wieder her“ <- Somit kann das Backup mit Win32DiskImager wieder auf eine SD-Karte gespielt werden.

        Folgende Möglichkeiten habt ihr generell mit C10 zusammen:
        Vollbackup Backupzeit Backupgröße Datenkompression CPU belastet Karte belastet Selektiver Restore möglich Dateisystem
        dd ja lang gross nein mittel hoch nein alle, fat32 nur bis 4GB
        ddz ja lang kleiner ja ja hoch nein alle, fat32 nur bis 4GB
        tar ja mittel mittel nein nein mittel ja alle, fat32 nur bis 4GB
        tgz ja mittel mittel ja ja mittel ja alle, fat32 nur bis 4GB
        rsync ja kurz mit Hardlinks

        mittel ohne Hardlinks
        klein mit Hardlinks

        mittel ohne Hardlinks
        nein nein nein kaum ext3/ext4
      • C6 (Zu stoppende und startende Services) = grafana-server + influxdb
        • Grafana-server
        • influxdb
      • C9 (regelmäßiges Backup) = nach Wunsch
        • R1 -> R2 -> Sonntag
        • R3 = 01:00
      • C10 (Komprimierung) = „Komprimiere den dd Backup“ <- Spart einiges an Speicherplatz

    Stündliches Datenbank-Backup und Sicherung von ein paar Dateien: kann ebenfalls nach eigenen Wünschen gestalltet werden
    • Anpassen von /etc/crontab für Datenbank-Backup:

      Code: Alles auswählen

      # Backup von Datenbanken
      30 *	* * *	pi    influxd backup -portable -database solaranzeige /backup/Datenbanken/solaranzeige
      
      Erklärung:
      "influxd backup" -> Erstellt das Datenbank-Backup
      "-portable" -> erstellt das Backup in *.tar.gz Dateien, wodurch die Dateien gepackt/verkleinert werden
      "-database solaranzeige" gibt die zu sichernde Datenbank an "/backup/Datenbanken/solaranzeige" -> gibt den Speicherort der Sicherung an. Also hier dann in dem oben verbundenem Laufwerk im Unterordner "Datenbanken" und dann im weiteren Unterordner "solaranzeige" um bei mehreren Datenbanken unterscheiden zu können.

      Hier bei Bedarf noch weitere Datenbanken in eigene Unterordner (/backup/Datenbanken/XXX) sichern (Abstand der Sicherungen ca. 2-5 Minuten).
    Backup von Dateien erstellen über crontab:
    • Code: Alles auswählen

      # Backup von Dateien
      50 1	* * 6	pi    cp /var/www/html/*user.config.php /backup/Dateien/
      51 1	* * 6	pi    cp /var/www/html/meldungen_senden.php /backup/Dateien/
      52 1	* * 6	pi    cp /var/www/html/befehle.ini.php /backup/Dateien/
      53 1	* * 6	root    cp -r /var/lib/grafana/plugins/* /backup/Dateien/grafana/
    Damit werden einfach nur die angegebenen Dateien ebenfalls auf dem verbundenen Laufwerk gesichert. Die Dateien können natürlich nach Bedarf geändert/angepasst werden.

    Auch bei der crontab muss an Ende eine Leerzeile vorhanden sein!

    Zu guter Letzt werden jetzt noch, über ein extra Script, Datenbank-Backups gelöscht, welche älter als 2 Tage sind:
    • darin eine Datei anlegen "autodelete.sh". Diese ist das Script zum löschen der Dateien:

      Code: Alles auswählen

      mcedit autodelete.sh
    • folgenden Inhalt eintragen:

      Code: Alles auswählen

      #!/bin/bash
      find /backup/Datenbanken/solaranzeige/* -mtime +2 -exec rm {} \;
      
    Erklärung:
    "find /backup/Datenbanken/solaranzeige/*" -> Durchsuche den Ordner "/backup/Datenbanken/solaranzeige"
    "-mtime +2" -> beachtet alle Dateien, welche älter als 2 Tage sind (2 kann auch durch eine andere gewünschte Zahl von Tagen getauscht werden.)
    "-exec rm {} \" -> hiermit werden die vorher gefundenen Dateien (alter als 2 Tage) gelöscht
    • crontab erneut anpassen:

      Code: Alles auswählen

      @daily /bin/bash/ /home/pi/script/autodelete.sh
    Dadurch wird das vorher angelegte Script zum löschen der Dateien einmal am Tag ausgeführt.

    Wieder an die Leerzeile am Ende der crontab denken!


    Wie gesagt ist dies nur eine mögliche Variante um den Raspberry und die Datenbank(en) zu sichern. Anregungen/Wünsche/Änderungsvorschläge werden bei Bedarf gerne in diesem Post aufgenommen um eine Anleitung für alle verständlich vorzuhalten.

    Gruß
    Timo

solarfanenrico
Beiträge: 593
Registriert: Mi 20. Jan 2021, 19:49
Hat sich bedankt: 31 Mal
Danksagung erhalten: 37 Mal

Re: Anleitung: Backup der Datenbanken und des kompletten Raspi

Beitrag von solarfanenrico »

Hallo Timo,
danke für die neue Aufarbeitung.
mit dem NAS über meine Fritzbox bin ich zwar nicht weitergekommen, aber es war Anregung genug für die Datensicherung auf einem zusätzlichen USB-Stick.
Mit Hilfe dieser Anleitung https://www.elektronik-kompendium.de/si ... 911281.htm konnte ich die USB-Devices erkennen, automatisch einhängen und bearbeiten. Meine InfluxDB wird somit schonmal extern gesichert.

Mein Sicherungsbefehl in meiner datenbackup.sh lautet hier nun
influxd backup -portable -database solaranzeige750 /media/usb0/backups/750/solaranzeige750_backup
influxd backup -portable -database solaranzeige1650 /media/usb0/backups/1650/solaranzeige1650_backup
Die Backups werden ordentlich ausgeführt, nur ob diese tatsächlich auf dem Stick gelandet sind, merke ich erst wenn ich den Stick extern auslese.

Kennst Du eine Möglichkeit dies bereits im laufenden System zu erkennen?

mit dem Befehl " usb-devices" in der Konsole habe ich u.a. die Info siehe Bild erhalten.
Sollte das als Sicherheit genügen?
sonnige Grüße
Enrico

TeamO
Beiträge: 422
Registriert: Mo 22. Jun 2020, 08:58
Hat sich bedankt: 4 Mal
Danksagung erhalten: 66 Mal

Re: Anleitung: Backup der Datenbanken und des kompletten Raspi

Beitrag von TeamO »

Hallo Enrico,
du kannst ja über PuTTY in den Ordner /media/usb0/backups/750/solaranzeige750_backup gehen und mit

Code: Alles auswählen

ls -ll
schauen was dort enthalten ist.
Ob es wirklich der USB-Stick ist kann ich Dir natürlich nicht sagen, da ich nicht weiß wie Du ihn genau eingebunden hast. Sollte aber eigentlich passen.

solarfanenrico
Beiträge: 593
Registriert: Mi 20. Jan 2021, 19:49
Hat sich bedankt: 31 Mal
Danksagung erhalten: 37 Mal

Re: Anleitung: Backup der Datenbanken und des kompletten Raspi

Beitrag von solarfanenrico »

Hallo Timo,
danke für die schnelle Rückmeldung.
Da ich ja sowieso immer als root auf der solaranzeige angemeldet bin, benötige ich die Vorkommandos nicht. Über den Midnightcommander kann ich in die Verzeichnisstruktur und uch die Dateiinhalte sehen und bearbeiten.
Den Befehl ls -ll kannte ich aber so auch noch nicht.Man lernt jeden Tag dazu. Jedenfalls hat er mir ebenfalls alle backup-Dateien angezeigt.

Da die Unterordner usb0-usb7 usw. im Verzeichnis /media vor dem mounten noch nicht da waren, wird es schon passen.

Vielen Dank nochmal, und demnächst werde ich solaranzeigen-und Grafana-backup auch dorthin ausführen. Wenn es geklappt hat melde ich mich wieder.

solarfanenrico
Beiträge: 593
Registriert: Mi 20. Jan 2021, 19:49
Hat sich bedankt: 31 Mal
Danksagung erhalten: 37 Mal

Re: Anleitung: Backup der Datenbanken und des kompletten Raspi

Beitrag von solarfanenrico »

Hallo Timo,
meine datenbackup.sh sieht nun so aus.

#!/bin/bash
#Konfiguration
# Backup von Dateien
cp /var/www/html/*user.config.php /media/usb0/backups/Dateien/
cp /var/www/html/meldungen_senden.php /media/usb0/backups/Dateien/
cp /var/www/html/befehle.ini.php /media/usb0/backups/Dateien/
cp -r /var/lib/grafana/plugins/* /media/usb0/backups/Dateien/Grafana/

influxd backup -portable -database solaranzeige750 /media/usb0/backups/750/solaranzeige750_backup
influxd backup -portable -database solaranzeige1650 /media/usb0/backups/1650/solaranzeige1650_backup
macht alle Backups und Kopieen binnen 2 Sekunden, und wird durch den einzigen Befehl innerhalb des cronjobs ausgeführt.

Die neuen Ordner /Dateien und /Dateien/Grafana mußte ich jedoch anlegen, da dies der Befehl cp nicht automatisch anlegt.
Aber es läuft und automatisiert sich langsam immer besser.
sonnige Grüße
Enrico

solarfanenrico
Beiträge: 593
Registriert: Mi 20. Jan 2021, 19:49
Hat sich bedankt: 31 Mal
Danksagung erhalten: 37 Mal

Re: Anleitung: Backup der Datenbanken und des kompletten Raspi

Beitrag von solarfanenrico »

solarfanenrico hat geschrieben:
Fr 16. Apr 2021, 20:09
Hallo Timo,
meine datenbackup.sh sieht nun so aus.
....

Aber es läuft und automatisiert sich langsam immer besser.
sonnige Grüße
Enrico
Habe bemerkt, daß es unnötig ist das Dateien-Backup täglich zu machen, und habe meine datenbackup wieder aufgeteilt.
der erste Teil (Kopieren von Dateien mache ich nun nur wöchentlich) ist bei mir sinnvoll, weil ich viel ändere.

Die InfluxDB sichere ich weiterhin täglich.

Für das Kopieren der Dateien füge ich noch das Argument -u ein. Dies bedeutet, daß die Datei nur kopiert wird, wenn diese aktueller, als die Zieldatei ist.
Es verhindert unnötige Schreibzugriffe.
Beispiel:

Code: Alles auswählen

cp -u /var/www/html/*user.config.php /media/usb0/backups/Dateien/
Für meine Test's habe ich auch noch -v eingefügt. Da sieht man den Kopierverlauf.

PS: anderes Thema Grafana-Update/Upgrade auf 7.5.4. habe ich auch erfolgreich auf meinem WebserverRPi4 gemacht und eine kleine Dokumentation erstellt. Nun sind auf meinen beiden RPi's wieder extrnelly Dashboard-Kopieen machbar, ohne Fehlermeldung, und ohne Neuinstallation.
Falls Du Interesse hast schicke ich Dir das mal per email und zur Aufbereitung für das Forum.
Enrico

andreas_n
Beiträge: 593
Registriert: Do 25. Jun 2020, 13:40
Hat sich bedankt: 15 Mal
Danksagung erhalten: 27 Mal

Re: Anleitung: Backup der Datenbanken und des kompletten Raspi

Beitrag von andreas_n »

solarfanenrico hat geschrieben:
Sa 17. Apr 2021, 12:55
Habe bemerkt, daß es unnötig ist das Dateien-Backup täglich zu machen...
Laut meinem Spezl in einem IT Zentrum eines Stadtwerkes gibt es nur zweierlei Daten:

Unwichtige
und
GESICHERTE!

Dateien alle paar Std wegsichern und mit "find" die ältesten (einstellbar) wieder löschen, läuft der Server nie voll und wenn mal die DB abraucht, biste froh wenn die "Lücke" recht klein ist...
Vollbackup/Image schreibe ich alle 14 Tage, config Files alle Tage und DB 6mal am Tag, sollte reichen, dafür auf 4 diversen Datenträgern.. :)
Plattenplatz kost ja heute nix mehr...
9kWp S/SO > SMA Tripower (IBN 18.6.20) + 4kWp S/SW > Growatt MIN 3000 TL-XE (IBN 31.3.21) + 2kWp Süd -19° ELWA DC Warmwasser ("IBN" 9.5.21)
3,8kWp S > Growatt SPH 4600 (IBN 22.10.21)

solarfanenrico
Beiträge: 593
Registriert: Mi 20. Jan 2021, 19:49
Hat sich bedankt: 31 Mal
Danksagung erhalten: 37 Mal

Re: Anleitung: Backup der Datenbanken und des kompletten Raspi

Beitrag von solarfanenrico »

andreas_n hat geschrieben:
Fr 23. Apr 2021, 10:24
solarfanenrico hat geschrieben:
Sa 17. Apr 2021, 12:55
Habe bemerkt, daß es unnötig ist das Dateien-Backup täglich zu machen...
Laut meinem Spezl in einem IT Zentrum eines Stadtwerkes gibt es nur zweierlei Daten:

Unwichtige
und
GESICHERTE!

Dateien alle paar Std wegsichern und mit "find" die ältesten (einstellbar) wieder löschen, läuft der Server nie voll und wenn mal die DB abraucht, biste froh wenn die "Lücke" recht klein ist...
Vollbackup/Image schreibe ich alle 14 Tage, config Files alle Tage und DB 6mal am Tag, sollte reichen, dafür auf 4 diversen Datenträgern.. :)
Plattenplatz kost ja heute nix mehr...
Hallo Andreas,
ich meinte mit den Backup von Dateien, diejenigen welch ..user.config.php, multi_regler_auslesen.php usw. betreffen.
Die InfluxDB-backups mache ich täglich, und wenn mal Bedarf bestünde auch stündlich :D
sonnige Grüße
Enrico

JoxWayne
Beiträge: 34
Registriert: So 4. Jul 2021, 12:46
Hat sich bedankt: 1 Mal
Danksagung erhalten: 3 Mal

Re: Anleitung: Backup der Datenbanken und des kompletten Raspi

Beitrag von JoxWayne »

bei mir hat das ganze soweit funktioniert.
nur mit dem Netzlaufwerk habe ich ein wenig herumgekaspert.
Problem ist wohl, dass die Netzwerkverbindung ggf. noch gar nicht da ist, wenn die FSTAB gelesen wird.
mit dem Eintrag in der crontab hat es bei mir leider nicht geklappt.
Aber was bei mir geholfen hat, war einmal

Code: Alles auswählen

sudo raspi-config

aufzurufen und "Wait for Network at Boot" zu aktivieren.
Dann waren auch die Einträge in der crontab unnötig.

vielen Dank für die tolle Anleitung!!!
Jox

andreas_n
Beiträge: 593
Registriert: Do 25. Jun 2020, 13:40
Hat sich bedankt: 15 Mal
Danksagung erhalten: 27 Mal

Re: Anleitung: Backup der Datenbanken und des kompletten Raspi

Beitrag von andreas_n »

Hi,

mountest du nur wenn BAckup oder ist das ein dauerhaftes Mount?

Kann durchaus sein, dass die Zielplatte noch nicht "wach" ist und daher die crontab / fstab zu schnell drüber läuft.

In dem Falle hilft ein "sleep"

reboot sleep 25 && mount -a

in der crontab (Wert einfach erhöhen bis der Pi sauber mounted)

Gruss
Andreas
9kWp S/SO > SMA Tripower (IBN 18.6.20) + 4kWp S/SW > Growatt MIN 3000 TL-XE (IBN 31.3.21) + 2kWp Süd -19° ELWA DC Warmwasser ("IBN" 9.5.21)
3,8kWp S > Growatt SPH 4600 (IBN 22.10.21)

Antworten