7.5 KiB
Datenbank-Handling: Exports, Imports, Backups & Datensicherung
Dieses Dokument beschreibt, wie die PowerOn-Plattform ihre Datenbanken verwaltet — von der strukturierten Datensicherung über flexible Export- und Import-Werkzeuge bis hin zur sicheren Wiederherstellung.
1. Datenbankübersicht
Die Plattform betreibt 13 separate Datenbanken auf dem Datenbankserver db.poweron.swiss. Jede Datenbank gehört einem fachlichen Bereich:
| Datenbank | Inhalt |
|---|---|
poweron_app |
Benutzer, Mandate, Berechtigungen, Features — Kern der Plattform |
poweron_management |
Workflows, Prompts, Verbindungen (Connections) |
poweron_billing |
Abonnements, Rechnungen, Stripe-Daten |
poweron_chat |
Chat-Konversationen und Nachrichten |
poweron_chatbot |
Chatbot-Feature: Konversationen, Logs |
poweron_knowledge |
RAG-Wissensdatenbank, Dokumentenindizes |
poweron_workspace |
Workspace-Daten |
poweron_trustee |
Treuhand-spezifische Daten |
poweron_realestate |
Immobilien-Daten |
poweron_commcoach |
CommCoach-Feature |
poweron_neutralization |
Content-Neutralisierung |
poweron_teamsbot |
Microsoft Teams Bot |
poweron_test |
Testdaten (wird bei Exports ausgeschlossen) |
2. Export
Ein Export erstellt eine vollständige Kopie aller Daten in einem lesbaren JSON-Format. Er dient als Grundlage für Backups, Migrationen zwischen Umgebungen (z. B. Prod → Int) und als Sicherungspunkt vor grösseren Änderungen.
2.1 Export via Admin-UI (empfohlen)
Im SysAdmin-Bereich der Plattform gibt es einen integrierten Export-Button. Er erzeugt eine JSON-Datei, die direkt heruntergeladen wird.
- Zugriff: Nur für SysAdmins (höchste Berechtigungsstufe)
- Umfang: Alle Datenbanken oder einzelne auswählbar
- Dateiname:
migration_backup_YYYY-MM-DD_HH-MM.json - Rate-Limit: Max. 2 Exports pro Minute (Schutzmassnahme gegen versehentliche Mehrfachausführung)
Auch sehr grosse Datenbanken werden sicher übertragen, ohne dass der Server dabei überlastet wird.
2.2 Export via Script (für Entwickler / Server-Zugriff)
Direkt auf dem Server kann das Export-Script ausgeführt werden:
ssh ubuntu@api.poweron.swiss
cd /srv/gateway/current
source .venv/bin/activate
# Alle Datenbanken exportieren
python scripts/script_db_export_migration.py --pretty
# Nur bestimmte Datenbanken
python scripts/script_db_export_migration.py --db poweron_app,poweron_management
# Ohne Metadaten (kleiner, für Archivierung)
python scripts/script_db_export_migration.py --exclude Token,AuthEvent
# Mit Zusammenfassung (zeigt Tabellen- und Zeilenanzahl)
python scripts/script_db_export_migration.py --summary
Das Script erstellt automatisch zwei Dateien:
migration_export_TIMESTAMP.json— vollständige Datenmigration_export_TIMESTAMP_structure.json— nur Tabellenstruktur, keine Daten
2.3 Was wird beim Export ausgeschlossen?
Aus Sicherheits- und Datenschutzgründen werden folgende Tabellen nie exportiert:
Token(aktive Login-Sessions)AuthEvent(Login-Protokoll)poweron_test(Testdatenbank)
3. Import
Ein Import spielt einen zuvor erstellten Export wieder ein. Typische Anwendungsfälle:
- Wiederherstellung eines früheren Datenstands
- Migration zwischen Umgebungen (z. B. Produktionsdaten auf die Testumgebung übertragen)
- Initialisierung einer neuen Instanz
3.1 Zwei Import-Modi
Replace (Ersetzen): Löscht alle bestehenden Daten (ausser geschützte System-Objekte, siehe unten) und schreibt den Backup-Stand vollständig neu. Verwenden bei vollständiger Wiederherstellung.
Merge (Zusammenführen): Fügt nur Datensätze ein, die noch nicht existieren (anhand ID). Bestehende Daten bleiben unverändert. Verwenden wenn nur fehlende Daten ergänzt werden sollen.
3.2 Import via Admin-UI
- JSON-Datei hochladen
- Validation läuft automatisch (prüft Format-Version, Struktur, System-Objekte)
- Import-Modus wählen:
replaceodermerge - Import starten — Ergebnis zeigt Anzahl eingespielter Datensätze pro Tabelle
Auch sehr grosse Backup-Dateien können problemlos importiert werden, ohne den Server zu überlasten.
3.3 Geschützte System-Objekte
Beim Import werden drei kritische Objekte nie gelöscht oder überschrieben, unabhängig vom Import-Modus:
- Root-Mandat
- Admin-Benutzer
- Event-Benutzer
Falls diese Objekte im Backup andere interne Kennungen hatten als in der Zielumgebung, passt das System alle betroffenen Verknüpfungen automatisch an. Das verhindert inkonsistente Daten nach dem Import.
3.4 Import via Script
ssh ubuntu@api.poweron.swiss
cd /srv/gateway/current
source .venv/bin/activate
sudo systemctl stop gateway
# Import-Script (Pendant zum Export-Script)
# Datei übergeben, Modus wählen
python scripts/script_db_export_migration.py --help # zeigt alle Optionen
sudo systemctl start gateway
4. Backups & Datensicherung
4.1 Backup-Strategie
Die Plattform verfügt über ein durchdachtes, mehrschichtiges Sicherungskonzept:
Infrastruktur-Ebene: Der Datenbankserver läuft auf der Infomaniak Public Cloud, die Snapshot-Funktionalitäten für Managed Databases bereitstellt.
Anwendungs-Ebene: Über die integrierte Admin-UI kann jederzeit ein vollständiger Export aller Datenbanken erstellt werden — on-demand, gezielt pro Datenbank oder als Gesamtexport. Die Backup-Dateien sind vollständig portabel und können auf jedem Speicher archiviert werden.
4.2 Empfohlene Backup-Praxis
| Zeitpunkt | Aktion |
|---|---|
| Vor jedem Deployment | Export via Admin-UI, Datei lokal speichern |
| Vor Datenbank-Migrationen | Export erstellen und beschriftet archivieren |
| Wöchentlich | Export als Archiv-Backup ablegen |
5. Datenbankmigrationen (Struktur-Änderungen)
Wenn sich das Datenmodell weiterentwickelt — z. B. durch neue Felder oder Tabellen — stellt die Plattform dedizierte Hilfsprogramme bereit, die Datenbankstruktur kontrolliert und sicher anzupassen:
| Programm | Zweck |
|---|---|
script_db_adapt_to_models.py |
Passt die Datenbankstruktur automatisch an den aktuellen Code an (mit Vorschau-Modus ohne Änderungen) |
script_db_audit_legacy_state.py |
Analysiert den Datenbankzustand vor einem Bereinigungsschritt |
script_db_migrate_*.py |
Datenmigrations-Programme für spezifische Features |
script_db_init_automation2.py |
Erstellt die Datenbankstruktur für das Automation-Feature |
script_db_init_chatbot.py |
Erstellt die Datenbankstruktur für das Chatbot-Feature |
Beim Start der Anwendung prüft die Plattform ausserdem automatisch, ob alle benötigten Tabellen vorhanden sind, und legt fehlende selbstständig an.
6. Datenschutz-Hinweise
- Export-Dateien enthalten alle Kundendaten (Mandate, Benutzer, Chats, Dokumente, etc.) und sind entsprechend zu behandeln
- Dateien dürfen nicht auf unsicheren Speichern (persönliche Dropbox, E-Mail, etc.) abgelegt werden
- Export-Dateien sollten nach Nutzung gelöscht werden wenn sie nicht mehr benötigt werden
- Der Zugriff auf Export/Import ist auf SysAdmins beschränkt und wird serverseitig geloggt
Zusammenfassung: Datenbankoperationen im Überblick
| Aufgabe | Wie |
|---|---|
| Fehlende Tabellen beim Start anlegen | Automatisch beim Plattform-Start |
| Datenbank-Export / Backup | Admin-UI (ein Klick) oder Entwickler-Script |
| Datenbank-Import / Wiederherstellung | Admin-UI mit geführtem Prozess oder Entwickler-Script |
| Infrastruktur-Snapshots | Infomaniak Cloud (Serverebene) |
| Struktur-Anpassungen bei Updates | Kontrolliert durch Entwickler-Hilfsprogramme |
| Datenbankpflege & Bereinigung | Admin-UI |