Anleitung: Backup der Datenbanken und des kompletten Raspi

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

Moderatoren: Ulrich, TeamO

Antworten
TeamO
Beiträge: 247
Registriert: Mo 22. Jun 2020, 08:58
Hat sich bedankt: 3 Mal
Danksagung erhalten: 37 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 /ect/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.:
      • M3 -> C2 (Verzeichnispfad für die Backups) = /backup <- Hier wird der Speicherort des zu erstellenden Backups angegeben. Also der zuvor angegebene/erstellte Pfad.
      • C3 (Anzahl vorzuhaltender Backups) = 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.
      • C5 (Zu stoppende und startende Services) = grafana-server + influxdb
        • Grafana-server
        • influxdb
      • C8 (regelmäßiges Backup) = nach Wunsch
        • R1 -> R2 -> Sonntag
        • R3 = 01:00
      • C9 (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

Benutzeravatar
solarfanenrico
Beiträge: 192
Registriert: Mi 20. Jan 2021, 19:49
Hat sich bedankt: 15 Mal
Danksagung erhalten: 17 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
Dateianhänge
alu_line.png

TeamO
Beiträge: 247
Registriert: Mo 22. Jun 2020, 08:58
Hat sich bedankt: 3 Mal
Danksagung erhalten: 37 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.

Benutzeravatar
solarfanenrico
Beiträge: 192
Registriert: Mi 20. Jan 2021, 19:49
Hat sich bedankt: 15 Mal
Danksagung erhalten: 17 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.
Dateianhänge
usb.png

Benutzeravatar
solarfanenrico
Beiträge: 192
Registriert: Mi 20. Jan 2021, 19:49
Hat sich bedankt: 15 Mal
Danksagung erhalten: 17 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

Benutzeravatar
solarfanenrico
Beiträge: 192
Registriert: Mi 20. Jan 2021, 19:49
Hat sich bedankt: 15 Mal
Danksagung erhalten: 17 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: 347
Registriert: Do 25. Jun 2020, 13:40
Hat sich bedankt: 10 Mal
Danksagung erhalten: 13 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)

Benutzeravatar
solarfanenrico
Beiträge: 192
Registriert: Mi 20. Jan 2021, 19:49
Hat sich bedankt: 15 Mal
Danksagung erhalten: 17 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

Antworten