Erstellen von Datensicherungen
Die beiden Datenbanken von SOLECTRUS (PostgreSQL und vor allem InfluxDB) sammeln Daten, die man nicht verlieren möchte. Daher ist es wichtig, regelmäßig Sicherungen zu erstellen.
Es stehen dafür Scripte zur Verfügung, die die Sicherung manuell oder automatisiert durchführen.
Herunterladen der Scripte
Abschnitt betitelt „Herunterladen der Scripte“Vor dem Gebrauch müssen die Scripte einmalig heruntergeladen und ausführbar gemacht werden. Dies muss im Verzeichnis ausgeführt werden, indem bereits die Dateien .env und compose.yaml liegen:
cd /pfad/zu/solectrus
curl -o backup.sh https://raw.githubusercontent.com/solectrus/backup-restore/refs/heads/main/backup.shcurl -o restore.sh https://raw.githubusercontent.com/solectrus/backup-restore/refs/heads/main/restore.shchmod +x backup.sh restore.shManchmal werden die Scripte aktualisiert. Um die neueste Version zu erhalten, sind die beiden curl-Befehle erneut auszuführen.
Erstellen einer Datensicherung
Abschnitt betitelt „Erstellen einer Datensicherung“Das Erstellen einer Sicherung erfolgt durch das Script backup.sh. Es erstellt eine Sicherung beider Datenbanken in eine Datei, die nach dem Datum benannt ist.
./backup.shDas Backup wird im laufenden Betrieb erstellt. Es muss (und darf) kein Container gestoppt werden. Das Ergebnis ist eine Datei wie solectrus-backup-2024-10-06.tar.gz. Das Script zeigt eine Ausgabe wie folgt:
SOLECTRUS Backup Script
Checking if PostgreSQL and InfluxDB containers are running...Ok, PostgreSQL and InfluxDB containers are both running.
Creating PostgreSQL backup...PostgreSQL backup saved as solectrus-postgresql-backup-2024-10-06.sql.gz (4.0K)
Creating InfluxDB backup...2024/10/06 11:49:15 INFO: Downloading metadata snapshot2024/10/06 11:49:15 INFO: Backing up TSM for shard 332024/10/06 11:49:15 INFO: Backing up TSM for shard 342024/10/06 11:49:15 INFO: Backing up TSM for shard 352024/10/06 11:49:15 INFO: Backing up TSM for shard 362024/10/06 11:49:15 INFO: Backing up TSM for shard 372024/10/06 11:49:15 INFO: Backing up TSM for shard 382024/10/06 11:49:15 INFO: Backing up TSM for shard 392024/10/06 11:49:15 INFO: Backing up TSM for shard 40Successfully copied 137kB to /home/ledermann/solectrus/solectrus-influxdb-backup-2024-10-06.tar.gzInfluxDB backup saved as solectrus-influxdb-backup-2024-10-06.tar.gz (136K)
Combined backup saved as solectrus-backup-2024-10-06.tar.gz (136K)Backup process completed.Die Sicherung kann optional auf einem anderen Speicherort gespeichert werden. Dazu wird der Pfad als Parameter übergeben:
./backup.sh --backup-dir /pfad/zum/zielverzeichnisAußerdem kann dafür gesorgt, dass nur eine begrenzte Anzahl von Sicherungen aufbewahrt wird. Dazu wird die Anzahl ebenfalls als Parameter übergeben:
./backup.sh --retentation-days 10Automatisieren der Datensicherung
Abschnitt betitelt „Automatisieren der Datensicherung“Die Sicherung kann auch automatisiert werden, indem das Script in einem Cronjob aufgerufen wird.
-
Cron-Tabelle öffnen:
Terminal-Fenster crontab -e -
Ergänze folgende Zeile und speichere die Änderung:
0 2 * * * cd /pfad/zu/solectrus && ./backup.sh --backup-dir /pfad/zum/zielverzeichnis --retention-days 10 -
Prüfen ob der Cronjob korrekt hinzugefügt wurde:
Terminal-Fenster crontab -l
Wiederherstellen einer Datensicherung
Abschnitt betitelt „Wiederherstellen einer Datensicherung“Das Wiederherstellen einer Sicherung läuft ähnlich ab. Es wird das Script restore.sh verwendet, das alle Schritte automatisiert. Auch hier muss (und darf) kein Container manuell gestoppt werden. Das Script übernimmt das und startet die Container nach der Wiederherstellung wieder.
Das Script wird mit dem Pfad zur Backup-Datei als Parameter aufgerufen:
./restore.sh <BACKUP_DATEI>Da eine Wiederherstellung den aktuellen Zustand der Datenbanken überschreibt, wird aus Sicherheitsgründen vor dem Wiederherstellen eine Bestätigung eingeholt. Die Ausgabe des Scripts sieht wie folgt aus:
SOLECTRUS Restore Script
Validating backup files in solectrus-backup-2024-10-06.tar.gz...Ok, backup file contains backups for both PostgreSQL and InfluxDB.
Checking if PostgreSQL, InfluxDB, and Redis containers are running...Ok, PostgreSQL, InfluxDB, and Redis containers are all running.
WARNING: This will overwrite all existing data in PostgreSQL and InfluxDB!Are you sure you want to continue? Type 'yes' to proceed: yes
Checking running containers...Stopping all containers except PostgreSQL, InfluxDB, and Redis...[+] Stopping 4/4 ✔ Container solectrus-senec-collector-1 Stopped ✔ Container solectrus-dashboard-1 Stopped ✔ Container solectrus-power-splitter-1 Stopped ✔ Container solectrus-watchtower-1 StoppedAll other containers stopped.
Extracting backup files from solectrus-backup-2024-10-06.tar.gz...Extraction completed.
Restoring PostgreSQL backup...PostgreSQL restore completed successfully.
Restoring InfluxDB backup...ID Name Retention Shard group duration Organization ID Schema Type Deleted8617308794b3e561 solectrus infinite 168h0m0s a161178df503af35 implicit trueSuccessfully copied 137kB to 4ee52044437a271f0b7fa0bb9a09a7ed5cd6b756b0bfdbb8081a8d29596b6dd8:/tmp/2024/10/06 11:50:39 INFO: Restoring bucket "8617308794b3e561" as "solectrus"2024/10/06 11:50:40 INFO: Restoring TSM snapshot for shard 412024/10/06 11:50:40 INFO: Restoring TSM snapshot for shard 422024/10/06 11:50:40 INFO: Restoring TSM snapshot for shard 432024/10/06 11:50:40 INFO: Restoring TSM snapshot for shard 442024/10/06 11:50:40 INFO: Restoring TSM snapshot for shard 452024/10/06 11:50:40 INFO: Restoring TSM snapshot for shard 462024/10/06 11:50:40 INFO: Restoring TSM snapshot for shard 472024/10/06 11:50:40 INFO: Restoring TSM snapshot for shard 48InfluxDB restore completed.
Flushing Redis...OKRedis cache flushed successfully.
Restarting previously running containers...[+] Running 7/7 ✔ Container solectrus-watchtower-1 Started ✔ Container solectrus-influxdb-1 Healthy ✔ Container solectrus-redis-1 Healthy ✔ Container solectrus-postgresql-1 Healthy ✔ Container solectrus-power-splitter-1 Started ✔ Container solectrus-dashboard-1 Started ✔ Container solectrus-senec-collector-1 StartedPreviously running containers restarted.Restore process completed.Quelltext
Abschnitt betitelt „Quelltext“Die Scripte sind in Bash implementiert, der Quelltext ist auf GitHub verfügbar:
github.com/solectrus/backup-restore