Export- und Wiederherstellung für den charly-Server
1. Einleitung
1.1 Gesetzliche Anforderungen und Nutzen von Backups
Als Unternehmer sind Sie in Deutschland per Gesetz zu einem angemessenen Risikomanagement verpflichtet. Dazu gehört auch eine regelmäßige Datensicherung.
Die regelmäßige Datensicherung bietet folgende Vorteile:
- Kein bzw. minimaler Datenverlust (je kürzer die Datensicherungsintervalle, desto geringer die möglichen Verluste)
- Geringe Ausfallzeiten
- Schnell wiederherstellbarer Zustand seit der letzten Datensicherung
- Zeit- und Nerveneinsparung
- Geringere Einkommensverluste
1.2 Wichtig: Alle Export-Varianten über ein Kommando
Verschiedene Backup-Konzepte werden in der nativen Installation über das export
-Kommando gesteuert. Die Funktionalität wird durch Parameter und die Zielverzeichnisse bestimmt:
Typische Anwendungsszenarien
-
Vollständiges Backup auf einen SMB Share (
export
oderexport normal
):- Datenbank und Ablage (charly-Ordner) werden gesichert
- Ziel ist ein existierender Netzwerk-Share
- Vollständige Wiederherstellung nach Serverausfall möglich
charly-server export -ExportPath "\\qnap\backups\solutio"
-
Datenbank-Export in einen lokalen Ordner (
export databaseonly
):- Nur die Datenbank wird gesichert
- Der Zielordner ist lokal und kann vom Systembetreuer gesichert werden (analog zur Ablage)
- Ermöglicht Integration mit professionellen Backup-Lösungen
charly-server export databaseonly -ExportPath "C:\Solutio\DatabaseBackup"
- Alternativ Sicherung direkt in die Ablage (analog zu DBBackup bzw. PPG Service von früher)
charly-server export databaseonly -ExportPath "C:\Solutio\Client\Charly\Ablage\DB_Backup"
Automatisches Backup konfigurieren
Die empfohlene Methode zur Einrichtung automatischer Backups ist der neue backup-config
Befehl:
charly-server export backup-config
Für weitere Informationen siehe Automatisierte Backups
1.3 Zweck und Umfang
Für den Daten-Export für die Datensicherung und die Migration stehen Ihnen über das charly-Server-Skript verschiedene Möglichkeiten zur Verfügung. Es ermöglicht:
- Vollständige System-Backups
- Gezielte Datenbank-Sicherungen
- Automatisierte regelmäßige Backups
- Server-Migration mit minimalem Wartungsfenster
- Kontinuierliche Überwachung und Statusberichte
1.4 Backup-Strategien
Da auch die Speichermedien z.B. vor Hardwarefehlern nicht sicher sind, empfiehlt sich eine Strategie, bei der mehrere Speichermedien in einer vorher festgelegten Reihenfolge für die Datensicherung verwendet werden.
Die einfachste Strategie ist dabei "First in, first out" (FIFO). Bei dieser Strategie wird die älteste Datensicherung gelöscht, wenn der vorhandene Speicherplatz zur Neige geht.
Eine externe Eins-zu-Eins-Kopie des Servers sollte täglich angelegt werden.
Beispiel: Für jeden Wochentag gibt es ein separates, mit dem Wochentag beschriftetes Speichermedium, der nach dem Backup die Praxis wieder verlässt und an einem sicheren, abschließbaren Ort (z.B. in einem feuerfesten Tresor) lagert.
Idealerweise werden einzelne zusätzliche Sicherungen vorgehalten, die einen Monat oder sogar ein Jahr zurückreichen.
Hinweis: Vor einem charly-Update empfiehlt es sich eine Datensicherung durchzuführen, um ein Backup zu haben, auf das ggf. zurückgegriffen werden kann. Vor einem Datenbank-Update oder einem Serverumzug ist eine Datensicherung zwingend erforderlich.
1.5 Wiederherstellung (Recovery): Prüfen der Datensicherungen
Wenn Sie einmal vor der Situation stehen, dass Sie Ihre Daten wiederherstellen müssen ("Recovery"), müssen Sie sich auf Ihre Datensicherungen verlassen können. Im Ernstfall muss die Datenwiederherstellung schnellstmöglich durchführbar sein und funktionieren.
Testen Sie daher regelmäßig Ihre Datensicherungen auf deren Funktionalität und Datenkonsistenz. Denn Datensicherungen sind genauso wenig gegen z.B. Hardwarefehler oder z.B. Schreibfehler während des Datensicherungen immun. In der Folge könnte die Wiederherstellung daran scheitern, dass z.B. die Daten von dem Speichermedium nicht gelesen werden können.
1.6 Vergleich der Export-Typen
Export-Typ | Beschreibung | Anwendungsfall | Services während Export |
---|---|---|---|
Standard | Vollständiges Backup (Datenbank + Dateisystem) | Regelmäßige Komplettsicherung | Gestoppt |
DatabaseOnly | Nur Datenbank-Sicherung | Häufige Datensicherung | Gestoppt |
DatabaseIso | Datenbank als ISO-Datei | Testsysteme, Entwicklung | Aktiv |
Migration | Komplettes System mit Zusatzprüfungen | Serverumzug | Deaktiviert |
1.7 Auswahlhilfe Export-Typ
Wählen Sie den Export-Typ basierend auf Ihren Anforderungen:
- Standard Export: Wenn Sie eine vollständige Sicherung benötigen und eine kurze Systemunterbrechung akzeptabel ist
- DatabaseOnly: Für schnelle, regelmäßige Sicherungen der Datenbank
- DatabaseIso: Wenn Sie die Daten in einer Testumgebung verwenden möchten oder der Praxisbetrieb nicht unterbrochen werden darf
- Migration: Bei Umzug auf einen neuen Server oder bei einer Datenbankmigration (Umzug auf dem gleichen Server) mit zusätzlichen Sicherheitsprüfungen.
2. Voraussetzungen
2.1 charly-server-Skript installieren
Oft ist das charly-Server-Skript bereits installiert. Um dies herauszufinden, rufen Sie es in der Powershell folgendes auf:
Windows Administrator Powershell:
charly-server
Wenn das charly-Server-Skript bereits installiert ist, erscheint nun die Hilfe mit einer Übersicht aller möglichen Parameter. Ansonsten muss das charly-Server-Skript installiert werden. Führen Sie dazu folgende Befehle in der Powershell (mit Administratorrechten) aus:
Invoke-WebRequest -Uri "https://charly-cdn-solutio.s3.amazonaws.com/release/windows/charly-server-install.ps1" -OutFile ".\charly-server-install.ps1"
Set-ExecutionPolicy RemoteSigned -Force
.\charly-server-install.ps1
Wenn es zu einem Problem beim Download kommt, können Sie noch probieren TLS in der PowerShell zu setzen.
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
2.2 Speicheranforderungen und Pfade
Export-Pfad Auswahl
Der Export-Pfad wird nach folgender Strategie ermittelt:
- Verwendung des in der Konfiguration gespeicherten Pfads
- Vom Benutzer angegebener Pfad (über Parameter oder interaktive Eingabe)
- Interaktive Auswahl aus verfügbaren Laufwerken und Netzwerkpfaden:
- Lokale Laufwerke
- Wechseldatenträger
- Netzwerklaufwerke
- Netzwerk-Freigaben (UNC-Pfade)
Netzwerk- vs. lokale Pfade
Das System unterscheidet zwischen verschiedenen Pfadtypen und bietet entsprechende Optionen:
-
Netzwerkpfade (UNC)
- Format
\\server\share\ordner
- Direkte Verwendung mit optionaler Authentifizierung
- Einmalige oder gespeicherte Anmeldedaten
- Format
-
Lokale Pfade
- Option zur automatischen Freigabe im Netzwerk
- Erstellung einer SMB-Freigabe mit konfigurierbarem Namen
- Zugriff über automatisch generierten UNC-Pfad für die SMB-Freigabe
-
Gemappte Netzlaufwerke
- Automatische Erkennung und Auflösung zum UNC-Pfad
- Persistente Verbindung für zukünftige Backups
Automatische Laufwerksprüfung
Das System führt folgende Prüfungen durch:
- Ausreichender Speicherplatz für den gewählten Export-Typ
- Schreibberechtigungen auf dem Zielpfad
- Netzwerkkonnektivität und Authentifizierung
- Freigabestatus lokaler Ordner
Speicherplatz-Anforderungen
Export-Typ | Benötigter Speicherplatz | Zusätzliche Anforderungen |
---|---|---|
Standard | (DB-Größe × 1.5) + (charly-Ordner × 1.2) + 5 GB | Platz für 7-Tage-Rotation der Datenbank |
DatabaseOnly | (DB-Größe × 1.5) + 2 GB | Platz für 7-Tage-Rotation der Datenbank |
DatabaseIso | (DB-Größe × 2) + 1 GB | Zusätzlicher Platz für ISO-Datei |
Migration | (DB-Größe × 2) + (charly-Ordner × 1.2) + 10 GB | ggf. Platz für ISO-Datei und Prüfungen |
2.3 Netzwerkspeicher und Freigaben
Empfehlung für Netzwerkspeicher
Wir empfehlen dringend die Verwendung eines Netzwerkspeichers für Ihre Backups, um die Datensicherheit zu erhöhen und den Zugriff von verschiedenen Systemen zu ermöglichen.
Optionen für Netzwerkspeicher
-
Dedizierter Netzwerkspeicher (NAS)
- Zuverlässige, spezialisierte Backup-Lösung
- Unterstützt RAID und andere Redundanzmaßnahmen
- Einfache Einbindung über UNC-Pfade
-
Netzwerkfreigabe auf Server
- Nutzung vorhandener Server-Infrastruktur
- Integration in bestehende Backup-Strategien
- Zentrale Verwaltung von Zugriffsrechten
-
Lokale Freigabe
- Freigabe eines lokalen Ordners im Netzwerk
- Einfache Einrichtung ohne zusätzliche Hardware
- Automatisierte Freigabe durch das charly-Server-Skript
- Externe Backup-Software kann den UNC-Pfad (\server\share) direkt mounten
- Ermöglicht Integration in bestehende Backup-Strategien ohne Änderung der Backup-Software
- Backup-Software kann eigenständig Versionierung, Kompression und Verschlüsselung übernehmen
Einbinden von SMB-Freigaben
Häufig müssen Sie eine SMB-Freigabe einbinden, um auf Backups oder exportierte Daten von einem anderen System aus zuzugreifen. Das charly-Server-Skript bietet hierfür den Befehl mount-smbshare
:
# Grundlegende Syntax
charly-server export mount-smbshare -UNCPath "\\server\share" [-Username "benutzer"] [-Password "passwort"] [-MountAs "X:"]
# Beispiel mit allen Parametern
charly-server export mount-smbshare -UNCPath "\\solutioserver\export" -Username "domain\benutzer" -Password "geheim" -MountAs "E:"
# Interaktiver Modus (empfohlen für sichere Passwort-Eingabe)
charly-server export mount-smbshare
Der Befehl unterstützt folgende Parameter:
- -UNCPath: Der UNC-Pfad zur SMB-Freigabe (z.B.
\\server\share
) - -Username: Benutzername für den Zugriff (optional)
- -Password: Passwort für den Zugriff (optional, bei Weglassen wird nachgefragt)
- -MountAs: Laufwerksbuchstabe für die Einbindung (z.B.
X:
), optional - bei Weglassen wird automatisch ein freier Laufwerksbuchstabe gewählt
Wenn keine Parameter angegeben werden, startet der Befehl im interaktiven Modus und fragt alle notwendigen Informationen ab. Dies ist besonders beim Einbinden nach einem Export nützlich, da der export status
Befehl direkt den benötigten Befehl anzeigt:
> charly-server export status
...
Netzwerkfreigabe-Informationen:
Lokaler Pfad: C:\solutio_export
Freigabename: SolutioExport
UNC-Pfad: \\SOLUTIOSERVER\SolutioExport
Zugriff von anderen Systemen:
Um auf diese Freigabe von einem anderen Computer zuzugreifen, verwenden Sie:
> charly-server export mount-smbshare -UNCPath "\\SOLUTIOSERVER\SolutioExport" -Username "domain\benutzer"
Nach dem Einbinden koennen Sie die ISO-Datei fuer die Installation verwenden.
...
Backup-Laufwerk einbinden
Zusätzlich zum allgemeinen mount-smbshare
Befehl bietet das charly-Server-Skript den spezialisierten Befehl mount-backup-drive
für das Einbinden des konfigurierten Backup-Laufwerks:
# Backup-Laufwerk einbinden
charly-server export mount-backup-drive
Dieser Befehl: - Bindet das bereits konfigurierte Backup-Laufwerk (SMB-Share) ein - Verwendet die gespeicherten Anmeldedaten aus der Backup-Konfiguration - Erstellt eine neue Konfiguration, falls noch keine existiert - Stellt sicher, dass das Backup-Laufwerk für Export-Vorgänge verfügbar ist
Der Hauptunterschied zu mount-smbshare
besteht darin, dass mount-backup-drive
speziell für das Backup-System konzipiert ist und die gespeicherten Backup-Konfigurationen verwendet, während mount-smbshare
für allgemeine SMB-Freigaben gedacht ist.
Voraussetzungen für Netzwerkspeicher
- Stabile Netzwerkverbindung mit mindestens 1 Gbit/s
- Persistente Verbindung zum Netzwerkspeicher (automatische Wiederverbindung nach Neustart)
- Administratorberechtigungen für den Export-Pfad
- Der ausführende Benutzer (in der Regel das Systemkonto) benötigt Vollzugriff
- Bei geplanten Backups muss der Zugriff auch ohne aktive Benutzeranmeldung funktionieren
Authentifizierung und Sicherheit
Das System unterstützt verschiedene Authentifizierungsmethoden:
-
Anmeldedaten speichern
- Sichere Speicherung von Benutzername und Passwort
- Automatische Verwendung bei zukünftigen Backups
- Verbessertes Benutzererlebnis ohne wiederholte Eingabeaufforderungen
-
Anonymer Zugriff
- Für Netzwerkfreigaben ohne Authentifizierung
- Vereinfachter Zugriff in vertrauenswürdigen Umgebungen
- Benötigt entsprechende Konfiguration der Zielfreigabe
-
Lokale Freigabe mit Berechtigungen
- Automatisches Management von Freigabeberechtigungen
- Integration mit lokalen Benutzerkonten
- Vereinfachte Netzwerkzugriffskonfiguration
UNC-Pfad-Vorteile
UNC-Pfade (Universal Naming Convention) bieten mehrere Vorteile:
- System-unabhängige Adressierung (\\server\share\ordner
)
- Keine Abhängigkeit von Laufwerksbuchstaben-Zuordnungen
- Direkte Verwendung auf verschiedenen Geräten im Netzwerk
- Vereinfachte Konfiguration von geplanten Aufgaben
WICHTIG
- Verwenden Sie UNC-Pfade (
\\server\share
) statt Laufwerksbuchstaben für maximale Kompatibilität. - Stellen Sie sicher, dass die Netzwerkverbindung stabil ist.
- Monitoring der Backup-Logs ist besonders wichtig bei Netzwerkspeicher.
- Bei Verbindungsproblemen wird der Export automatisch abgebrochen.
- Testen Sie regelmäßig den Zugriff auf Netzwerkpfade, besonders vor wichtigen Backups.
3. Export-Prozesse
3.0 Pfadauswahl-Prozess
Vor jedem Export führt das System einen standardisierten Pfadauswahl-Prozess durch, der lokale und Netzwerkpfade unterstützt.
graph TD
Start[Start Pfadauswahl] --> Config{Konfiguration vorhanden?}
Config -->|Ja| ValidateConfig[Validiere Konfiguration]
Config -->|Nein| PathParam{Parameter angegeben?}
ValidateConfig --> ConfigValid{Gültig?}
ConfigValid -->|Ja| UseConfig[Verwende Konfiguration]
ConfigValid -->|Nein| NewConfig[Neukonfiguration]
PathParam -->|Ja| PathType{Pfadtyp?}
PathParam -->|Nein| SelectDrive[Laufwerksauswahl]
PathType -->|Netzwerk| TestConnection[Verbindungstest]
PathType -->|Lokal| ShareOption{Freigabe gewünscht?}
TestConnection --> ConnectionValid{Verbindung OK?}
ConnectionValid -->|Ja| UseNetwork[Verwende Netzwerkpfad]
ConnectionValid -->|Nein| CredentialsPrompt[Anmeldedaten abfragen]
CredentialsPrompt --> TestConnection
ShareOption -->|Ja| CreateShare[Erstelle Freigabe]
ShareOption -->|Nein| UseLocal[Verwende lokalen Pfad]
SelectDrive --> DriveSelected[Laufwerk ausgewählt]
DriveSelected --> PathType
CreateShare --> UseShare[Verwende Freigabe]
UseConfig --> End[Ende]
UseNetwork --> End
UseShare --> End
UseLocal --> End
NewConfig --> PathParam
style Start fill:#f9f,stroke:#333,stroke-width:2px
style End fill:#bfb,stroke:#333,stroke-width:2px
Komponenten des Pfadauswahl-Prozesses
1. Konfigurationsprüfung - Suche nach bestehender Export-Pfad-Konfiguration - Validierung gespeicherter Netzwerk-Anmeldedaten
2. Pfadtyp-Bestimmung
- Automatische Erkennung von Netzwerkpfaden (\\server\share\...
)
- Analyse lokaler Pfade auf bestehende Freigaben
3. Netzwerk-Authentifizierung - Bei Bedarf Abfrage von Anmeldedaten - Verbindungstest mit bereitgestellten Anmeldedaten
4. Lokale Pfad-Optimierung - Option zur automatischen Freigabe lokaler Ordner - Generierung von UNC-Pfaden für Netzwerkzugriff
In allen folgenden Export-Typen kann auf diesen standardisierten Pfadauswahl-Prozess durch einen einzelnen Schritt "Pfadauswahl-Prozess" verwiesen werden.
3.1 Standardexport
graph TD
A[Start Export] --> B[Pfadauswahl-Prozess]
B --> E[Prüfe Speicherplatz]
E --> F[Beende Clients]
F --> G[Stoppe ncjs-Services]
G --> H[Setze DB ReadOnly]
H --> I[Exportiere Datenbanken]
I --> J[Setze DB ReadWrite]
J --> K[Starte ncjs-Services]
K --> L[Erstelle 7zip-Archiv]
L --> M{ISOFilePath Parameter?}
M -->|Ja| N[Erstelle ISO-Datei]
M -->|Nein| O[Ende]
N --> O[Ende]
style A fill:#f9f,stroke:#333,stroke-width:2px
style M fill:#bbf,stroke:#333,stroke-width:2px
style O fill:#bfb,stroke:#333,stroke-width:2px
Besonderheiten
- Vollständige Sicherung aller Datenbanken des Produktes charly und charly-Ordner (Ablage)
- Temporäre ncjs-Services-Unterbrechung
- 7-Tage-Rotation der Datenbank-Backups
- Pfadauswahl gemäß dem in Abschnitt 3.0 beschriebenen Prozess
- Optionale ISO-Datei-Erstellung (nur wenn -ISOFilePath Parameter angegeben)
- Während des Exports werden die charly-Client Verbindungen getrennt und ein Arbeiten mit charly ist in dieser Zeit nicht möglich.
Ablauf im Detail
-
Pfadauswahl und Initialisierung
- Durchführung des Pfadauswahl-Prozesses (siehe Abschnitt 3.0)
- Validierung des ausgewählten Export-Pfads
- Prüfung auf ausreichenden Speicherplatz
-
Systemvorbereitung
- Beenden aktiver Client-Verbindungen
- Stoppen der ncjs-Services
- Datenbanken in ReadOnly-Modus setzen
-
Datenexport
- Export aller PostgreSQL-Datenbanken
- Erstellung von Datenbankbackups mit Zeitstempel
- Automatische 7-Tage-Rotation der Backups
-
Systemreaktivierung
- Datenbanken in ReadWrite-Modus zurücksetzen
- Neustart der ncjs-Services
-
Anwendungsdaten
- Erstellung/Aktualisierung des 7zip-Archivs
- Selektive Komprimierung mit Ausschlusslisten
- Integration externer Symlinks
-
ISO-Erstellung (optional)
- Nur wenn -ISOFilePath Parameter angegeben wurde
- Zusammenführung aller Backup-Komponenten
- Verifikation der ISO-Integrität
3.2 Nur Datenbank (DatabaseOnly)
graph TD
A[Start Export] --> B[Pfadauswahl-Prozess]
B --> E[Prüfe Speicherplatz]
E --> F[Beende charly-Clients]
F --> G[Stoppe ncjs-Services]
G --> H[Setze DB ReadOnly]
H --> I[Exportiere Datenbanken]
I --> J[Setze DB ReadWrite]
J --> K[Starte ncjs-Services]
K --> L[Ende]
style A fill:#f9f,stroke:#333,stroke-width:2px
style L fill:#bfb,stroke:#333,stroke-width:2px
Besonderheiten
- Nur Datenbank-Sicherung ohne charly-Ordner (Ablage)
- Schneller als Vollbackup
- 7-Tage-Rotation
- Temporäre ncjs-Services-Unterbrechung
- Pfadauswahl gemäß dem in Abschnitt 3.0 beschriebenen Prozess
Anwendungsfälle
- Regelmäßige Datensicherung zwischen Vollbackups
- Schnelle Sicherung vor Systemänderungen
- Fokussiertes Backup bei begrenztem Speicherplatz
- Backup für Datenbank-Migrationen und -Upgrades
Ablauf im Detail
-
Pfadauswahl und Initialisierung
- Durchführung des Pfadauswahl-Prozesses (siehe Abschnitt 3.0)
- Validierung des ausgewählten Export-Pfads
- Prüfung auf ausreichenden Speicherplatz (geringer als beim Standardexport)
-
Systemvorbereitung
- Beenden aktiver Client-Verbindungen
- Stoppen der ncjs-Services
- Datenbanken in ReadOnly-Modus setzen
-
Datenexport
- Export aller PostgreSQL-Datenbanken
- Erstellung von Datenbankbackups mit Zeitstempel
- Automatische 7-Tage-Rotation der Backups
-
Systemreaktivierung
- Datenbanken in ReadWrite-Modus zurücksetzen
- Neustart der ncjs-Services
Vorteile gegenüber Standardexport
- Schnellere Ausführung durch Fokussierung auf Datenbankdaten
- Geringerer Speicherplatzbedarf
- Ideal für tägliche automatisierte Backups
- Kürzere Unterbrechungszeit der ncjs-Services
3.3 Datenbank als ISO (DatabaseIso)
graph TD
A[Start Export] --> B[Pfadauswahl-Prozess]
B --> E[Prüfe Speicherplatz]
E --> F[KIM-IP Anpassung]
F --> G[Exportiere Datenbanken]
G --> H[Erstelle ISO-Datei]
H --> I[Ende]
style A fill:#f9f,stroke:#333,stroke-width:2px
style I fill:#bfb,stroke:#333,stroke-width:2px
Besonderheiten
- Keine Service-Unterbrechung: Im Gegensatz zum DatabaseOnly-Export werden die ncjs-Services nicht gestoppt
- Kein ReadOnly-Modus: Datenbanken bleiben im ReadWrite-Modus
- KIM-IP Anpassung: Automatische Anpassung der KIM-IP-Adressen für bessere Portierbarkeit
- Immer mit ISO-Datei: ISO-Erstellung erfolgt auch ohne expliziten -ISOFilePath Parameter
- Nutzung während Praxisbetrieb: Kann während der regulären Arbeitszeit ausgeführt werden
- Keine Client-Beendigung: Benutzer können weiterarbeiten
- Pfadauswahl: Verwendet den in Abschnitt 3.0 beschriebenen Pfadauswahl-Prozess
Kein vollständiges Backup
Dies ist kein vollständiges Backup. Es werden nur die Produkt Datenbanken exportiert, nicht die Ablage. Damit werden wichtige Dokumentation und Dateien für die BEMA Abrechnung nicht gesichert
Anwendungsfälle
- Erstellung von Testsystemen ohne Produktionssystem-Unterbrechung
- Live-Backups während des Praxisbetriebs
- Vorbereitung von Migrationstests
- Erstellung von Trainingsumgebungen
Hinweise
- Da die Datenbank nicht in den ReadOnly-Modus versetzt wird, können Datenänderungen während des Exportvorgangs zu leicht inkonsistenten Backups führen
- Die KIM-IP-Anpassung erleichtert den Einsatz auf anderen Systemen
- Ideal für Testzwecke, jedoch für kritische Backups DatabaseOnly oder Standardexport bevorzugen
- Die ISO-Datei wird unabhängig von den Kommandozeilenparametern immer erstellt
3.4 Migration
graph TD
A[Start Export] --> B[Pfadauswahl-Prozess]
B --> C[Vorprüfungen]
C --> D[TOAST-Fehler Check]
D --> E[Bloat Check]
E --> F[KIM-IP Anpassung]
F --> G[Beende Clients]
G --> H[Stoppe ncjs-Services]
H --> I[Setze DB ReadOnly]
I --> J[Exportiere Datenbanken]
J --> K[Aktualisiere 7zip-Archiv]
K --> L{ISOFilePath Parameter?}
L -->|Ja| M[Erstelle ISO-Datei]
L -->|Nein| N[Deaktiviere ncjs-Services]
M --> N
N --> O[Ende]
style A fill:#f9f,stroke:#333,stroke-width:2px
style L fill:#bbf,stroke:#333,stroke-width:2px
style O fill:#bfb,stroke:#333,stroke-width:2px
Besonderheiten
- Ziel: Serverumzug: Dieser Export-Typ ist speziell für die Migration auf einen neuen Server konzipiert
- Vorbereitende Prüfungen: Umfassende Datenbankprüfungen für optimale Migrationsergebnisse
- Permanente ncjs-Services-Deaktivierung: ncjs-Services werden nach dem Export deaktiviert, um versehentliche Weiterarbeit auf dem alten System zu verhindern
- Permanente PostgreSQL Datenbank Deaktivierung: Die PostgreSQL wird deaktiviert, um versehentliche Weiterarbeit in der alten Datenbank zu verhindern
- KIM-IP Anpassung: Automatische Anpassung der KIM-IP-Adressen für nahtlose Integration im neuen System
- Schnellere Ausführung bei Vorarbeit: Deutlich schnellere Ausführung, wenn vorab ein transfer-files oder Standardexport durchgeführt wurde
- Optionale ISO-Erstellung: ISO-Datei wird nur erstellt, wenn der -ISOFilePath Parameter angegeben wurde
Empfohlene Vorgehensweise
Für eine optimale Migration mit minimaler Ausfallzeit empfehlen wir folgende Strategie:
-
Vorbereitungsphase (während des Praxisbetriebs):
- Führen Sie
charly-server export transfer-files
während der regulären Öffnungszeiten aus - Dieser Befehl aktualisiert nur das 7zip-Archiv des charly-Ordners und beeinträchtigt nicht den laufenden Betrieb
- Alternativ können Sie einen vollständigen Standardexport über Nacht durchführen
- Führen Sie
-
Migrationsphase (nach Praxisschluss):
- Führen Sie
charly-server export migration
aus - Da das 7zip-Archiv bereits vorhanden ist, muss es nur noch aktualisiert werden. Dies verkürzt die Migrationszeit erheblich
- Nach Abschluss werden alle ncjs-Services und die PostgreSQL Datenbank deaktiviert, um das alte System zu sperren
- Führen Sie
-
Installation auf dem neuen Server:
- Verwenden Sie das erzeugte Backup zur Installation auf dem neuen Server
- Führen Sie nach der Installation einen Systemcheck durch
- Prüfen Sie die KIM-Konfiguration für korrekte Kommunikation
Hinweise
- Vollständige Systemsperre: Nach diesem Export wird das System bewusst deaktiviert - dies ist beabsichtigt, um Datenkonflikte zu vermeiden
- Keine Reaktivierung: Im Gegensatz zu anderen Export-Typen werden die ncjs-Services nicht automatisch neu gestartet
- Optimierte Datenbankqualität: Die Vorprüfungen identifizieren und beheben potenzielle Probleme für eine reibungslose Migration
- Effizienzgewinn durch Vorbereitung: Die Migration kann um bis zu 70% schneller ablaufen, wenn vorab eine Dateisystem-Sicherung durchgeführt wurde
WICHTIG
- Informieren Sie alle Benutzer vorab über den geplanten Serverumzug.
- Planen Sie die Migration außerhalb der Geschäftszeiten.
- Führen Sie wenn möglich
charly-server export transfer-files
vor der eigentlichen Migration durch. - Nach Abschluss des Migration-Exports ist das alte System nicht mehr betriebsbereit.
3.5 Gemeinsame Funktionen aller Export-Typen
Alle Export-Typen teilen bestimmte Grundfunktionen, die unabhängig vom gewählten Modus ausgeführt werden.
Integration des Pfadauswahl-Prozesses
Jeder Export-Typ verwendet den in Abschnitt 3.0 beschriebenen standardisierten Pfadauswahl-Prozess. Dieser bietet folgende Vorteile:
- Konsistente Benutzererfahrung über alle Export-Typen hinweg
- Einheitliche Behandlung von lokalen und Netzwerkpfaden
- Unterstützung für Authentifizierung und Freigabemanagement
- Persistente Speicherung von Pfadkonfigurationen für wiederkehrende Exporte
Backup-Verfolgung und Rotation
Alle Export-Typen beinhalten diese Funktionen:
- Zeitstempelbasierte Backup-Benennung
- 7-Tage-Rotation für Datenbank-Backups
- Separate Archivierung des charly-Ordners (außer bei DatabaseOnly)
- Automatische Bereinigung älterer Backups
Speicherplatzverwaltung
Unabhängig vom gewählten Export-Typ führt das System diese Prüfungen durch:
- Berechnung des erforderlichen Speicherplatzes basierend auf Datenbankgröße und Export-Typ
- Validierung des verfügbaren Speicherplatzes vor Exportbeginn
- Überwachung des Speicherplatzes während des Exports
- Bereinigung temporärer Dateien nach Abschluss
Statusberichte und Protokollierung
Jeder Export generiert detaillierte Status- und Protokollinformationen:
- Fortschrittsanzeigen während des Exports
- Zusammenfassender Statusbericht nach Abschluss
- Detaillierte Protokolle für Fehleranalysen
- Übersicht der Backup-Historie via
charly-server export status
Export-Typen im Vergleich
Die folgende Tabelle fasst die wichtigsten Unterschiede zwischen den Export-Typen zusammen:
Eigenschaft | Standard | DatabaseOnly | DatabaseIso | Migration |
---|---|---|---|---|
Pfadauswahl | Prozess aus 3.0 | Prozess aus 3.0 | Prozess aus 3.0 | Prozess aus 3.0 |
ncjs-Services während Export | Gestoppt | Gestoppt | Aktiv | Gestoppt |
ncjs-Services nach Export | Gestartet | Gestartet | Aktiv | Deaktiviert |
Datenbank-Modus während Export | ReadOnly | ReadOnly | ReadWrite | ReadOnly |
charly-Ordner (Ablage) exportiert | Ja | Nein | Nein | Ja |
ISO-Erstellung | Optional | Optional | Immer | Optional |
KIM-IP Anpassung | Nein | Nein | Ja | Ja |
Vorprüfungen (TOAST, Bloat) | Nein | Nein | Nein | Ja |
Hauptzweck | Vollbackup | Schnelles DB-Backup | Test/Training | Serverumzug |
Automatisierte Exports
Alle Export-Typen können als geplante Aufgaben automatisiert werden:
- Einrichtung über charly-server export backup-config
- Flexible Zeitplanung (täglich, wöchentlich)
- Warnung bei Überschneidung mit Geschäftszeiten
- Statusüberwachung über charly-server export status
3.6 Empfohlene Backup-Strategie
Eine effektive Backup-Strategie kombiniert häufige DatabaseOnly-Exporte mit regelmäßigen Standardexporten:
- Tägliche DatabaseOnly-Exporte für Datensicherheit
- Wöchentliche Standardexporte für vollständige Systemsicherung
Diese Kombination bietet optimalen Schutz bei effizienter Ressourcennutzung und minimaler Betriebsunterbrechung.
4. Automatisierte Backups
4.1 Einrichtung automatischer Backups
Die Einrichtung automatischer Backups erfolgt über den backup-config
Befehl:
charly-server export backup-config
Funktionalität des backup-config Befehls
- Windows Scheduled Task: Erstellt automatisch einen geplanten Task für regelmäßige Backups
- Bestehende Konfigurationen: Erkennt automatisch vorhandene Backup-Schedules und bietet die Option diese zu ändern oder beizubehalten
- Vollständig interaktiv: Führt Sie durch den gesamten Konfigurationsprozess ohne Parameter
- Separate Konfiguration: Verwendet eine eigene
backup-config.json
Datei, wodurch Ihre normale Export-Konfiguration unverändert bleibt
4.2 Der Konfigurationsprozess
Der charly-server export backup-config
Befehl ist vollständig interaktiv und führt Sie durch:
- Bestehende Backups prüfen: Falls bereits geplante Backups vorhanden sind, können Sie wählen, ob diese gelöscht oder beibehalten werden sollen
- Export-Pfad konfigurieren:
- Auswahl zwischen lokalem Pfad (z.B.
C:\Backups\Solutio
) oder Netzwerk-Pfad (UNC) - Bei Netzwerk-Pfaden werden Sie nach Benutzername und Passwort gefragt
- Backup-Typ wählen: Vollständiges Backup (empfohlen) oder nur Datenbank-Backup
- Zeitplanung: Eingabe der gewünschten täglichen Backup-Zeit im HH:mm Format (z.B. 23:00)
Ergebnis
- Automatische tägliche Backups zur konfigurierten Zeit
- Windows Scheduled Task wird erstellt (CharlyBackup_*)
- Backup-Konfiguration wird in
%ProgramData%\CharlyServer\backup-config.json
gespeichert
Änderung bestehender Konfigurationen:
Um eine bestehende Backup-Konfiguration zu ändern, führen Sie einfach charly-server export backup-config
erneut aus. Das System erkennt die vorhandene Konfiguration und fragt, ob Sie diese beibehalten oder durch eine neue ersetzen möchten.
Voraussetzungen für automatische Backups
- Stabile Netzwerkverbindung bei Netzwerkspeicher
- Ausreichend freier Speicherplatz für Rotation
- Administratorrechte für die Einrichtung von geplanten Aufgaben
4.3 Backup-Speicherung und Rotation
Das System verwendet einen optimierten Ansatz für die Sicherung und Rotation von Backups, der sowohl einfache Handhabung als auch effiziente Archivierung ermöglicht.
Datenbank-Backup-Rotation
Die Rotation der Datenbank-Backups erfolgt nach einem vereinfachten Schema:
-
Aktuelle Backups im Hauptverzeichnis
- Die aktuellsten Datenbankbackups werden ausschließlich im Hauptverzeichnis (
database_backup
) gespeichert - Diese Dateien stellen den aktuellsten Zustand dar und werden für Wiederherstellungen verwendet
- Die aktuellsten Datenbankbackups werden ausschließlich im Hauptverzeichnis (
-
Tägliche Archivierung
- Bei jedem Export werden die aktuellen Backup-Dateien in einen temporären Ordner mit Zeitstempel kopiert
- Dieser temporäre Ordner wird sofort als TAR.GZ-Archiv im
postgres
-Verzeichnis komprimiert - Das Archiv wird nach dem Zeitstempel benannt (Format:
YYYY-MM-DD-HH-MM.tar.gz
) - Nach erfolgreicher Archivierung wird der temporäre Ordner automatisch entfernt
-
Automatische 7-Tage-Rotation
- TAR.GZ-Archive, die älter als 7 Tage sind, werden automatisch gelöscht
- Dies gewährleistet eine effiziente Speichernutzung und eine übersichtliche Backup-Historie
graph TD
A[Export Abgeschlossen] --> B[Speichere DB-Dateien im Hauptverzeichnis]
B --> C[Erstelle temporären Zeitstempel-Ordner]
C --> D[Kopiere aktuelle Backups in temporären Ordner]
D --> E[Erstelle TAR.GZ-Archiv des Ordners]
E --> F[Entferne temporären Ordner]
F --> G[Migriere bestehende Backup-Ordner zu TGZ]
G --> H[Prüfe auf ältere Archive]
H --> I{Älter als 7 Tage?}
I -->|Ja| J[Entferne alte Archive]
I -->|Nein| K[Behalte Archive]
J --> L[Ende]
K --> L
style A fill:#f9f,stroke:#333,stroke-width:2px
style L fill:#bfb,stroke:#333,stroke-width:2px
Migration vorhandener Backup-Ordner
Vorhandene Backup-Ordner im database_backup
-Verzeichnis werden automatisch ins neue Format migriert. Dabei wird für jeden Ordner ein TAR.GZ-Archiv im postgres
-Verzeichnis erstellt und der ursprüngliche Ordner wird entfernt. Diese Migration erfolgt einmalig beim nächsten Export.
charly Ordner (Ablage) Sicherung (charly.7z)
Die Sicherung des charly-Ordners erfolgt weiterhin über einen inkrementellen Ansatz:
- Inkrementelles 7zip-Archiv: Ein einzelnes 7zip-Archiv wird inkrementell aktualisiert
- Selektive Aktualisierung: Nur geänderte oder neue Dateien werden aktualisiert
- Optimierte Komprimierung: Für eine schnellere Verarbeitung wird eine moderate Komprimierungsstufe verwendet
- Ausschlusslisten: Temporäre und redundante Dateien werden über Ausschlussmuster vom Backup ausgenommen
Backup-Pfadstruktur
Die vereinfachte Struktur des Export-Verzeichnisses ist wie folgt organisiert:
export_pfad/
├── charly.7z # Komprimiertes Archiv des charly-Ordners (Ablage)
├── database_backup/ # Aktuelles Datenbank-Backup
│ ├── globals.sql # Globale PostgreSQL-Objekte
│ ├── solutiodb.sql # Hauptdatenbank-Backup
│ ├── ncjs-ehealth-kim.sql # KIM-Datenbank-Backup
│ └── ... # Weitere Datenbankdateien
├── postgres/ # Archivierte Backups
│ ├── 2025-02-08-14-30.tar.gz # Archiv des täglichen Backups
│ ├── 2025-02-07-14-30.tar.gz # Archiv des Vortags-Backups
│ └── ... # Weitere archivierte Backups (max. 7 Tage)
├── logs/ # Export-Logs
├── config/ # Konfigurationsdateien
└── system_info.txt # Systeminformationen
Vorteile der vereinfachten Rotation
Diese optimierte Rotationsstrategie bietet mehrere Vorteile:
- Klarere Struktur: Durch die Trennung aktueller Backups und archivierter Backups wird die Struktur übersichtlicher
- Effizientere Speichernutzung: Die direkte Archivierung spart Speicherplatz
- Vereinfachte Handhabung: Nur ein aktives Backup-Set plus archivierte Versionen
- Automatische Bereinigung: Archive werden nach 7 Tagen automatisch entfernt
- Nahtlose Migration: Vorhandene Backup-Ordner werden automatisch ins neue Format überführt
Wiederherstellung aus Archiven
Falls eine Wiederherstellung aus einem älteren Backup erforderlich ist:
- Extrahieren Sie das gewünschte TAR.GZ-Archiv aus dem
postgres
-Verzeichnis - Verwenden Sie die extrahierten SQL-Dateien zur Wiederherstellung der Datenbanken
Für die tägliche Wiederherstellung reichen jedoch die im database_backup
-Verzeichnis enthaltenen Dateien aus, was den Prozess vereinfacht.
4.4 Backup-Verwaltung
Geplante Backups können über den Status-Befehl eingesehen werden:
charly-server export status
Bei einer Neukonfiguration von Backups mit dem backup-config
Befehl wird ein bestehendes geplantes Backup automatisch erkannt. Sie haben dann die Möglichkeit:
- Das bestehende Backup beizubehalten
- Das bestehende Backup zu entfernen und eine neue Konfiguration zu erstellen
Ein Backup zur Zeit
Das System unterstützt nur ein geplantes Backup zur gleichen Zeit. Bei der Konfiguration eines neuen Backups wird ein eventuell vorhandenes automatisch ersetzt.
Funktionen
- Anzeige des geplanten Backups im Status-Befehl
- Einsehen des Backup-Status und der nächsten Ausführung
WICHTIG
- Änderungen an bestehenden Backup-Zeitplänen sollten über eine Neukonfiguration mit
backup-config
erfolgen. - Backup-Konfigurationen sollten regelmäßig überprüft werden.
- Bei Änderungen am Backup-Pfad ist eine Neukonfiguration erforderlich.
Backup-Erinnerungen
Ab Version 2.1.6 des charly-Server-Skripts wird die Backup-Erinnerung im charly-Client automatisch deaktiviert, wenn ein erfolgreiches tägliches Backup als geplante Aufgabe eingerichtet wurde.
Voraussetzungen für das Ausblenden der Erinnerung - Mindestens ein erfolgreiches automatisches Backup muss bereits durchgeführt worden sein. - Die Backup-Aufgabe muss als tägliches Backup konfiguriert sein. - Der Status der Backup-Aufgabe muss "Bereit" sein.
Überprüfen des Erinnerungsstatus Sie können den Status der automatischen Backups überprüfen mit:
charly-server export status
Wenn ein tägliches Backup mit dem Status "Bereit" angezeigt wird, werden keine Backup-Erinnerungen mehr im charly-Client erscheinen.
Backup-Informationen im charly-Client Im charly-Client werden keine Informationen angezeigt, wann ein Backup über das charly-Server-Skript durchgeführt wurde. Diese Funktionalität ist nicht mehr in den Stammdaten verfügbar.
Es ist jedoch geplant, diese Informationen zukünftig in der charly-Web anzuzeigen, um Administratoren einen besseren Überblick über die Backup-Historie zu ermöglichen.
Beispiel: Backup-Status überprüfen
# Überprüfen, ob automatische Backups konfiguriert sind und korrekt funktionieren
charly-server export status
5. Überwachung und Status bei einem Export
5.1 Status-Überwachung
Der Export-Status kann jederzeit überprüft werden:
charly-server export status
Status-Informationen
- Zeitpunkt des letzten Exports
- Export-Typ und -Dauer
- Erfolg oder Fehler
- Betroffene Komponenten
- Speicherplatzbelegung
- ISO-Datei-Details (falls vorhanden)
Beispielausgabe Status-Überwachung
Beispielausgabe Backup-Status
PS C:\Users\malte> charly-server export status
Charly Server Version: 2.5.0
Charly Server Environment: release
Native Installation
Export Status vom 2025-06-05 03:34:08
Status: SUCCESSFUL (Erfolgreich)
Inhalt: Datenbank
Dauer: 245 Sekunden
Export Pfad: \\SOLUTIODEV\SolutioExport
Export Typ: Nur Datenbank
Verbleibender Speicherplatz: Unbekannt (UNC-Pfad)
Backup-Erinnerung: Deaktiviert
Details:
- Solutio-Pfad-Laufwerk hat weniger als 30GB freien Speicherplatz
Aktuelle geplante Backups:
CharlyBackup_backup-config_99166560
Status: Bereit
Backup-Typ: Vollstaendiges Backup
Konfiguration: backup-config.json
Export-Pfad: \\SOLUTIODEV\SolutioExport
Benutzername: True
Zeitplan: Taeglich um 03:30 Uhr
Die Statusausgabe bietet einen schnellen Überblick über:
- Zeitpunkt und Dauer des letzten Exports
- Art und Umfang der gesicherten Daten
- Speicherplatzinformationen
- Netzwerk-Share-Informationen für den Zugriff durch externe Backup-Software
- Details zur ISO-Datei (falls erstellt)
- Status der Backup-Erinnerungen im Client
- Aktuelle Backup-Planung
Im oberen Teil der Ausgabe werden detaillierte Netzwerkfreigabe-Informationen angezeigt:
- Lokaler Pfad und Freigabename
- UNC-Pfad für Netzwerkzugriff
- Anmeldeinformationen für den Zugriff
- Fertige Befehlszeile zum Mounten des Shares auf anderen Systemen
Wenn professionelle Backup-Software verwendet wird, sind besonders die Netzwerk-Share-Informationen wichtig. Diese zeigen, wo die Daten gesichert werden, damit die externe Backup-Software weiß, von welchem SMB-Share sie die Daten beziehen soll. Der angezeigte mount-smbshare
-Befehl kann direkt kopiert und auf dem Zielsystem verwendet werden, um die Freigabe einzubinden.
5.2 Logging und Protokollierung
Log-Dateien
Die wichtigste Log-Datei beim Export ist die Export-Log-Datei im Format:
export_[subcommand]_YYYYMMDD_HHMMSS.log
Beispiel: export_databaseonly_20250218_143022.log
Diese Datei wird im Verzeichnis %ProgramData%\CharlyServer\logs
gespeichert.
Log-Format
Jeder Logeintrag wird im JSON-Format gespeichert und enthält folgende Felder:
{
"timestamp": "2025-02-18 14:30:22.456",
"level": "INFO",
"message": "Export gestartet",
"environment": "release",
"command": "export",
"subCommand": "databaseonly"
}
Log-Level
Die Log-Datei enthält Einträge mit verschiedenen Prioritätsstufen:
Level | Beschreibung | Sichtbarkeit |
---|---|---|
INFO | Standardmäßige Informationen | Konsole & Log |
WARNING | Warnungen, die Aufmerksamkeit erfordern | Konsole & Log |
ERROR | Fehlermeldungen | Konsole & Log |
DEBUG | Detaillierte technische Informationen | Nur Log |
VERBOSE | Zusätzliche Prozessdetails | Nur Log |
OK | Erfolgsmeldungen | Konsole & Log |
Wichtige Debug-Informationen
Die Log-Datei enthält viele wichtige Informationen, die nicht in der Konsole angezeigt werden:
-
Speicherberechnungen
{ "timestamp": "2025-02-18 14:30:23.123", "level": "DEBUG", "message": "Berechne minimale Exportgroesse... DB: 50.2 GB, Charly: 30.1 GB" }
-
Service-Status
{ "timestamp": "2025-02-18 14:30:24.234", "level": "DEBUG", "message": "Service 'CharlyServer' Status: Running, StartType: Automatic" }
-
Datenbank-Operationen
{ "timestamp": "2025-02-18 14:30:25.345", "level": "DEBUG", "message": "SQL Query ausgefuehrt: SELECT COUNT(*) FROM information_schema.tables" }
-
Dateisystem-Operationen
{ "timestamp": "2025-02-18 14:30:26.456", "level": "DEBUG", "message": "7-Zip Kommando: a -mx0 -bb0 -r \"C:\\backup\\charly.7z\" \".\\*\"" }
Fehleranalyse
Bei Problemen sind besonders diese Log-Einträge relevant:
-
Vorprüfungen
{ "level": "DEBUG", "message": "Pruefe Voraussetzungen... Speicherplatz: 85%, Services: OK, DB: OK" }
-
Fehlgeschlagene Operationen
{ "level": "ERROR", "message": "Operation fehlgeschlagen: Backup-Archiv konnte nicht erstellt werden" }
-
Warnungen
{ "level": "WARNING", "message": "Weniger als 20% freier Speicherplatz verfügbar" }
Log-Analyse
Für die Analyse der Log-Dateien können PowerShell-Befehle verwendet werden:
# Alle Fehler anzeigen
Get-Content .\export_*.log | ConvertFrom-Json | Where-Object { /usr/bin/envsubst.level -eq "ERROR" }
# Zeitliche Abfolge bestimmter Operationen
Get-Content .\export_*.log | ConvertFrom-Json |
Where-Object { /usr/bin/envsubst.message -match "Service|Datenbank" } |
Select-Object timestamp, message
# Performance-Analyse
Get-Content .\export_*.log | ConvertFrom-Json |
Where-Object { /usr/bin/envsubst.level -eq "DEBUG" -and /usr/bin/envsubst.message -match "Dauer:" }
Best Practices
-
Log-Rotation
- Log-Dateien werden nach Datum im Dateinamen sortiert
- Keine automatische Löschung alter Log-Dateien
- Manuelle Bereinigung nach erfolgreicher Wiederherstellung empfohlen
-
Fehlersuche
- Immer zuerst DEBUG-Einträge prüfen
- Zeitstempel für Ablaufverfolgung nutzen
- Nach WARNING-Einträgen vor dem ersten ERROR-Einträgen suchen
-
Performance-Analyse
- DEBUG-Einträge enthalten detaillierte Zeitangaben
- Vergleich mehrerer Exports möglich
- Engpässe durch Zeitdifferenzen identifizierbar
-
Backup der Logs
- Log-Dateien zusammen mit Export sichern
- Bei Wiederherstellung relevant für Fehleranalyse
- Teil der Dokumentationspflicht
Für eine umfassende Übersicht über häufige Probleme und deren Lösung siehe Kapitel 7 "Häufige Probleme beim Export".
6. Wiederherstellung
6.1 Wiederherstellung auf einem neuen Server
Die Wiederherstellung auf einem neuen Server kann entweder über den Container-Update-Prozess oder über den nativen Wiederherstellungsprozess erfolgen.
Auf die Exportdaten zugreifen
Wenn der Export auf einer Netzwerkfreigabe oder einem anderen System erstellt wurde, müssen Sie zuerst auf diese Daten zugreifen:
# SMB-Freigabe einbinden, auf der die Exportdaten liegen
charly-server export mount-smbshare -UNCPath "\\server\share" -Username "domain\benutzer"
Weitere Informationen zum Einbinden von SMB-Freigaben finden Sie im Abschnitt 2.3 Netzwerkspeicher und Freigaben.
ISO-Datei vorbereiten
Wenn Sie einen direkten Export verwendet haben, können Sie eine ISO-Datei erstellen:
.\charly-server manage CreateIso -ExportPath "\Backups\charly_export" -ISOFilePath "\Backups\charly_backup_.iso"
Container-Update-Prozess (Empfohlen)
Dies ist der empfohlene und umfassend getestete Weg der Wiederherstellung.
Installation durchführen
- Kopieren Sie die ISO-Datei auf den neuen Server
- Führen Sie das Container Update durch (Container Update)
Serverumzug
Ein Serverumzug kann erfolgen, wenn eine Container-Installation nicht möglich ist.
Installation durchführen
- Kopieren Sie die ISO-Datei auf den neuen Server
- Führen Sie die Native Installation durch (Serverumzug)
6.2 Wiederherstellung auf dem selben System
charly-server-Skript unterstütze Herstellung
Der native Wiederherstellungsprozess kann verwendet werden, wenn eine Container-Installation auf einem neuen Server nicht möglich ist.
Voraussetzungen
- Frische Installation des charly-server-Skript
- PostgreSQL muss installiert und lauffähig sein
- Administratorrechte
Wiederherstellungsprozess
-
Vorbereitung
# Öffnen Sie eine PowerShell mit Administratorrechten charly-server export restore -ExportPath "D:\Backups\Solutio" # Pfad zum Backup-Ordner # ODER charly-server export restore -ISOFilePath "D:\Backups\backup.iso" # Pfad zur Backup-ISO
-
Ablauf des Wiederherstellungsprozesses
- Die ncjs-Services werden gestoppt
- Das charly.7z-Archiv wird extrahiert und im Charly-Client-Verzeichnis wiederhergestellt
- Die Datenbanken werden aus dem letzten Backup wiederhergestellt
- Die Konfigurationsdateien werden wiederhergestellt
- Die ncjs-Services werden neu gestartet
-
Systemstatus wird angezeigt
-
Nach der Wiederherstellung
- Überprüfen Sie den Systemstatus
- Führen Sie ggf. einen charly-Update durch
- Die nativen Installation ermöglicht auch die Optimierung der PostgreSQL-Konfiguration.
WICHTIG
- Vor der Wiederherstellung müssen Sie den korrekten Installationspfad Ihrer solutio-Installation kennen. Dies ist nicht immer C:\Solutio!
- Stellen Sie sicher, dass keine Benutzer während der Wiederherstellung aktiv sind.
- Erstellen Sie nach erfolgreicher Wiederherstellung ein Probebackup zur Validierung.
Manuelle Wiederherstellung
In Fällen, wo weder Container-Installation noch native Wiederherstellung möglich ist, kann eine manuelle Wiederherstellung durchgeführt werden. Dies erfordert tiefergehendes Systemverständnis und sollte nur von erfahrenen Administratoren durchgeführt werden.
WICHTIG
- Dies ist nur als Notfall-Option zu betrachten. Wir empfehlen dringend die Verwendung der nativen Wiederherstellung oder des Container-Updates.
Datenbank wiederherstellen
- PostgreSQL-Backup-Dateien aus dem Backup-Verzeichnis lokalisieren
- Datenbanken mit pg_restore wiederherstellen:
# Globale Objekte wiederherstellen psql.exe -U postgres -f globals.sql # Einzelne Datenbanken wiederherstellen pg_restore.exe -U postgres -d solutiodb solutiodb.sql pg_restore.exe -U postgres -d "ncjs-ehealth-kim" ncjs-ehealth-kim.sql
Dateisystem wiederherstellen
- charly.7z aus dem Backup-Verzeichnis extrahieren:
# Installationspfad ermitteln = (Get-ItemProperty -Path "HKLM:\SOFTWARE\Solutio\Charly\Charly_Server" -Name "InstallPath").InstallPath = Join-Path "Client\Charly" # 7-Zip Pfad ermitteln $7zPath = Join-Path ${env:ProgramFiles} "7-Zip\7z.exe" # Archiv extrahieren if (Test-Path $7zPath) { & $7zPath x ".\charly.7z" "-o" -y } else { Write-Error "7-Zip nicht gefunden. Bitte installieren Sie 7-Zip zuerst." }
System aktivieren
-
ncjs-Services überprüfen und starten:
charly-server manage start
-
Falls die Services erfolgreich starten, führen sie ein Update durch mittels charly-Update Installieren
6.3 Funktionsprüfung nach Wiederherstellung
Nach einer Wiederherstellung sollten folgende Tests durchgeführt werden:
- Anmeldung im System
- Patientendaten abrufen und bearbeiten
- Terminbuchungen vornehmen
- Abrechnungen erstellen
- Datenbankabfragen durchführen
- Probebackup erstellen und wiederherstellen
6.4 Wichtige Hinweise
- Bewahren Sie die ISO-Datei bzw. das Backup auch nach erfolgreicher Wiederherstellung auf.
- Dokumentieren Sie alle manuellen Schritte bei einer manuellen Wiederherstellung.
- Bei der manuellen Wiederherstellung ist besondere Sorgfalt bei der Reihenfolge der Datenbankwiederherstellung erforderlich.
- Der charly Updater sollte erst nach erfolgreicher Serviceaktivierung ausgeführt werden.
- Eine manuelle Wiederherstellung sollte nur durchgeführt werden, wenn Container-Installation oder native Wiederherstellung nicht möglich sind.
7. Häufige Probleme beim Export
7.1 Netzwerk-Probleme
Netzwerklaufwerk wird nach Neustart nicht wiederverbunden
Symptom: Der Export schlägt fehl, weil das Netzwerklaufwerk nicht verfügbar ist.
Ursache: Windows stellt die Netzwerkverbindung nicht automatisch wieder her.
Lösung:
- Verbindung als Systemkonto einrichten:
New-PSDrive -Name "BackupDrive" -PSProvider "FileSystem" -Root "\\server\share" -Persist -Scope Machine
- Backup-Skript mit Wiederverbindungslogik ausstatten
- GPO für automatische Netzwerklaufwerk-Wiederherstellung konfigurieren
Zeitüberschreitung bei großen Exporten
Symptom: Export bricht bei großen Datenmengen mit Timeout ab.
Ursache: Standard-Timeouts sind für große Datenmengen zu kurz.
Lösung:
- SMB Timeout erhöhen:
net config server /autodisconnect:-1
- TCP Keep-Alive optimieren:
HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters KeepAliveTime = 300000 KeepAliveInterval = 1000
7.2 Filesystem-Probleme
Antivirus-Blockierung
Symptom: Export extrem langsam oder bricht ab
Ursache: Echtzeitscanner blockiert Dateizugriffe
Lösung:
- Export-Pfad von Echtzeit-Scan ausnehmen
- Antivirus-Ausnahmen für Datenbank-Dateien einrichten
- VSS-Writer-Konflikte vermeiden
Beschädigte Symlinks
Symptom: Export schlägt bei bestimmten Ordnern fehl
Ursache: Ungültige oder gebrochene symbolische Links
Lösung:
- Symlinks vor Export validieren:
Get-ChildItem -Path -Recurse | Where-Object { /usr/bin/envsubst.LinkType -eq "SymbolicLink" } | ForEach-Object { if (-not (Test-Path /usr/bin/envsubst.Target)) { Write-Warning "Broken symlink: $(/usr/bin/envsubst.FullName) -> $(/usr/bin/envsubst.Target)" } }
- Reparatur oder Entfernung ungültiger Links
- Export-Exclusions für problematische Links einrichten
7.3 ncjs-Service-Probleme
ncjs-Services lassen sich nicht beenden
Symptom: Export kann ncjs-Services nicht stoppen
Ursache: Hängende Sitzungen oder Abhängigkeiten
Lösung:
- Stoppen mittels charly-Server-Skript
charly-server manage stop
- Falls nicht erfolgreich aktive Sitzungen identifizieren:
Get-Process | Where-Object {/usr/bin/envsubst.MainWindowTitle -match "charly"}
- Zwangsbeendigung nach Timeout
- ncjs-Service Abhängigkeiten überprüfen
Automatischer Neustart
Symptom: ncjs-Services starten während des Exports automatisch neu
Ursache: Windows Service Recovery oder externe Überwachung
Lösung:
- Stoppen mittels charly-server-Skript
charly-server manage stop
- Recovery-Einstellungen temporär deaktivieren
- Monitoring-Software während Export pausieren
- ncjs-Service Abhängigkeiten dokumentieren
Verbesserte ncjs-Service-Verwaltung
Symptom: ncjs-Services müssen einzeln gesteuert werden
Ursache: Komplexe Abhängigkeiten zwischen ncjs-Services
Lösung:
- Verwenden Sie den neuen Befehl für die gezielte Verwaltung:
# Spezifischen ncjs-Service neu starten charly-server service restart medication # Status aller ncjs-Services anzeigen charly-server service status # Spezifischen ncjs-Service stoppen charly-server service stop auth
7.4 Performance-Probleme
Langsame Netzwerk-Performance
Symptom: Export läuft deutlich langsamer als erwartet
Ursache: Netzwerk-Engpässe oder falsche Konfiguration
Lösung:
- Jumbo Frames aktivieren
- SMB Multichannel konfigurieren
- TCP Window Size optimieren
Ressourcen-Konflikte
Symptom: System wird während Export sehr langsam
Ursache: Ressourcen-Engpässe durch parallele Prozesse
Lösung:
- Prozess-Prioritäten anpassen
- I/O-Prioritäten optimieren
- Backup-Fenster außerhalb der Hauptlast planen
8. Best Practices
Vorbeugende Maßnahmen
- Regelmäßige Test-Wiederherstellungen durchführen
- Backup-Logs archivieren und analysieren
- Dokumentation aktuell halten
- Change Management für Backup-Konfiguration einführen
- Disaster Recovery Plan regelmäßig testen
Monitoring-Empfehlungen
- Backup-Erfolg/Fehler überwachen
- Speicherplatz-Trends analysieren
- Performance-Metriken erfassen
- ncjs-Services-Status protokollieren
- Sicherheitsrelevante Ereignisse überwachen
9. Addendum - Erweiterte Technische Details - Export Prozess
9.1 Ausführungssystem
Der Export-Prozess verwendet ein fortgeschrittenes Ausführungssystem, das weit über die grundlegende Funktionalität hinausgeht. Diese technischen Details sind primär für Systemadministratoren und zur Fehleranalyse relevant.
Kernfunktionen
-
Zustandsverfolgung
- Persistente Speicherung des Ausführungsstatus
- Automatische Wiederaufnahme nach Unterbrechungen
- Detaillierte Protokollierung jedes Schrittes
-
Schritt-Validierung
- Individuelle Gültigkeitsdauer für jeden Schritt
- Automatische Neuausführung nach Ablauf der Gültigkeit
- Bedingte Ausführung basierend auf Systemzustand
-
Fehlerbehandlung
- Automatische Fehlererfassung und -protokollierung
- Optionale Fortführung trotz Fehler (abhängig von der Konfiguration)
- Rollback-Mechanismen bei kritischen Fehlern
Detaillierter Prozessablauf
graph TD
Start[Start Export] --> ValidateEnv[Umgebungsprüfung]
ValidateEnv --> PreChecks{Pre-Checks nötig?}
PreChecks -->|Ja| RunPreChecks[Führe Pre-Checks aus]
RunPreChecks --> CheckResults{Pre-Checks OK?}
CheckResults -->|Nein| FixIssues[Behebe Probleme]
FixIssues --> RunPreChecks
CheckResults -->|Ja| SpaceCheck
PreChecks -->|Nein| SpaceCheck[Prüfe Speicherplatz]
SpaceCheck --> ValidateConfig[Validiere Konfiguration]
ValidateConfig --> PrepareExport[Bereite Export vor]
PrepareExport --> ExportType{Export Typ?}
ExportType -->|Standard| StandardFlow[Standard Export Flow]
ExportType -->|DatabaseOnly| DBFlow[Database Export Flow]
ExportType -->|DatabaseIso| ISOFlow[ISO Export Flow]
ExportType -->|Migration| MigrationFlow[Migration Flow]
StandardFlow --> StopServices[Stoppe ncjs-Services]
DBFlow --> StopServices
ISOFlow --> PrepareDB[Bereite Datenbank vor]
MigrationFlow --> MigrationPrep[Migration Vorbereitung]
StopServices --> ExportDB[Exportiere Datenbank]
PrepareDB --> ExportDB
MigrationPrep --> StopServices
ExportDB --> CreateArchive{Archiv erstellen?}
CreateArchive -->|Ja| Archive[Erstelle 7z Archiv]
CreateArchive -->|Nein| Verify
Archive --> Verify[Verifiziere Export]
Verify --> CreateISO{ISO-Datei erstellen?}
CreateISO -->|Ja| ISO[Erstelle ISO-Datei]
CreateISO -->|Nein| Cleanup
ISO --> VerifyISO[Verifiziere ISO-Datei]
VerifyISO --> Cleanup
Cleanup[Cleanup & Logs] --> RestartServices{ncjs-Services neustarten?}
RestartServices -->|Ja| Restart[Starte ncjs-Services]
RestartServices -->|Nein| End
Restart --> End[Ende]
style Start fill:#f9f,stroke:#333,stroke-width:2px
style End fill:#bfb,stroke:#333,stroke-width:2px
style PreChecks fill:#bbf,stroke:#333,stroke-width:2px
style ExportType fill:#bbf,stroke:#333,stroke-width:2px
Validierungssystem
Das System führt verschiedene Validierungen durch:
-
Vor dem Export
- Verfügbarer Speicherplatz
- Systemzustand
- ncjs-Services-Status
- Berechtigungen
-
Während des Exports
- Datenbankintegrität
- Archivierungsqualität
- Speicherverbrauch
- ncjs-Services-Reaktionen
-
Nach dem Export
- Datenvalidierung
- ISO-Dati-Integrität (falls erstellt)
- Backup-Rotation
- Log-Analyse
Schrittvalidierung
Jeder Ausführungsschritt besitzt spezifische Eigenschaften:
{
"Name": "StepName",
"ValidityDuration": "24h",
"Condition": "Bedingung für Ausführung",
"RequiredSteps": ["VoraussetzungsSchritt1", "VoraussetzungsSchritt2"],
"Status": {
"LastExecution": "Zeitstempel",
"Result": "Erfolg/Fehler",
"ErrorDetails": "Fehlerinformationen"
}
}
Fehlerbehandlung und Wiederaufnahme
Das System implementiert eine mehrstufige Fehlerbehandlung:
-
Sofortige Wiederholuung
- Bei temporären Fehlern
- Maximale Anzahl von Versuchen
- Exponentielles Backoff
-
Teilweise Wiederaufnahme
- Fortsetzung ab letztem erfolgreichen Schritt
- Zustandswiederherstellung
- Validierung des Systemzustands
-
Vollständiger Neustart
- Bei kritischen Fehlern
- Automatische Bereinigung
- Neue Validierung aller Voraussetzungen
Logging und Überwachung
Detaillierte Protokollierung auf mehreren Ebenen:
-
Prozessebene
- Ausführungsschritte
- Zeitstempel
- Dauer
- Ressourcenverbrauch
-
Systemebene
- Service-Status
- Systemressourcen
- Netzwerkverbindungen
- Speichernutzung
-
Datenbankebene
- Transaktionen
- Locks
- Performance-Metriken
- Integritätsprüfungen
Leistungsoptimierung
Das System beinhaltet verschiedene Optimierungen:
-
Ressourcenmanagement
- Dynamische Speicherzuweisung
- Prozess-Priorisierung
- I/O-Optimierung
-
Parallelisierung
- Gleichzeitige Verarbeitung wo möglich
- Lastverteilung
- Ressourcen-Pooling
-
Caching
- Zwischenspeicherung von Konfigurationen
- Statusverfolgung
- Temporäre Dateien
Diese erweiterten technischen Details bieten einen tieferen Einblick in die komplexe Funktionsweise des Export-Systems, sind aber für den normalen Betrieb nicht relevant. Sie dienen hauptsächlich der Fehlersuche und Systemoptimierung durch erfahrene Administratoren.
Version: 2.5.1 Datum der letzten Aktualisierung: 25.06.2025