Zum Inhalt

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

  1. Vollständiges Backup auf einen SMB Share (export oder export 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"
      
  2. 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:

  1. Verwendung des in der Konfiguration gespeicherten Pfads
  2. Vom Benutzer angegebener Pfad (über Parameter oder interaktive Eingabe)
  3. 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:

  1. Netzwerkpfade (UNC)

    • Format \\server\share\ordner
    • Direkte Verwendung mit optionaler Authentifizierung
    • Einmalige oder gespeicherte Anmeldedaten
  2. 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
  3. 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

  1. Dedizierter Netzwerkspeicher (NAS)

    • Zuverlässige, spezialisierte Backup-Lösung
    • Unterstützt RAID und andere Redundanzmaßnahmen
    • Einfache Einbindung über UNC-Pfade
  2. Netzwerkfreigabe auf Server

    • Nutzung vorhandener Server-Infrastruktur
    • Integration in bestehende Backup-Strategien
    • Zentrale Verwaltung von Zugriffsrechten
  3. 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:

  1. Anmeldedaten speichern

    • Sichere Speicherung von Benutzername und Passwort
    • Automatische Verwendung bei zukünftigen Backups
    • Verbessertes Benutzererlebnis ohne wiederholte Eingabeaufforderungen
  2. Anonymer Zugriff

    • Für Netzwerkfreigaben ohne Authentifizierung
    • Vereinfachter Zugriff in vertrauenswürdigen Umgebungen
    • Benötigt entsprechende Konfiguration der Zielfreigabe
  3. 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

  1. Pfadauswahl und Initialisierung

    • Durchführung des Pfadauswahl-Prozesses (siehe Abschnitt 3.0)
    • Validierung des ausgewählten Export-Pfads
    • Prüfung auf ausreichenden Speicherplatz
  2. Systemvorbereitung

    • Beenden aktiver Client-Verbindungen
    • Stoppen der ncjs-Services
    • Datenbanken in ReadOnly-Modus setzen
  3. Datenexport

    • Export aller PostgreSQL-Datenbanken
    • Erstellung von Datenbankbackups mit Zeitstempel
    • Automatische 7-Tage-Rotation der Backups
  4. Systemreaktivierung

    • Datenbanken in ReadWrite-Modus zurücksetzen
    • Neustart der ncjs-Services
  5. Anwendungsdaten

    • Erstellung/Aktualisierung des 7zip-Archivs
    • Selektive Komprimierung mit Ausschlusslisten
    • Integration externer Symlinks
  6. 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

  1. 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)
  2. Systemvorbereitung

    • Beenden aktiver Client-Verbindungen
    • Stoppen der ncjs-Services
    • Datenbanken in ReadOnly-Modus setzen
  3. Datenexport

    • Export aller PostgreSQL-Datenbanken
    • Erstellung von Datenbankbackups mit Zeitstempel
    • Automatische 7-Tage-Rotation der Backups
  4. 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:

  1. 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
  2. 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
  3. 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:

  1. Bestehende Backups prüfen: Falls bereits geplante Backups vorhanden sind, können Sie wählen, ob diese gelöscht oder beibehalten werden sollen
  2. Export-Pfad konfigurieren:
  3. Auswahl zwischen lokalem Pfad (z.B. C:\Backups\Solutio) oder Netzwerk-Pfad (UNC)
  4. Bei Netzwerk-Pfaden werden Sie nach Benutzername und Passwort gefragt
  5. Backup-Typ wählen: Vollständiges Backup (empfohlen) oder nur Datenbank-Backup
  6. 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:

  1. 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
  2. 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
  3. 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:

  1. Klarere Struktur: Durch die Trennung aktueller Backups und archivierter Backups wird die Struktur übersichtlicher
  2. Effizientere Speichernutzung: Die direkte Archivierung spart Speicherplatz
  3. Vereinfachte Handhabung: Nur ein aktives Backup-Set plus archivierte Versionen
  4. Automatische Bereinigung: Archive werden nach 7 Tagen automatisch entfernt
  5. Nahtlose Migration: Vorhandene Backup-Ordner werden automatisch ins neue Format überführt

Wiederherstellung aus Archiven

Falls eine Wiederherstellung aus einem älteren Backup erforderlich ist:

  1. Extrahieren Sie das gewünschte TAR.GZ-Archiv aus dem postgres-Verzeichnis
  2. 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:

  1. Speicherberechnungen

    {
      "timestamp": "2025-02-18 14:30:23.123",
      "level": "DEBUG",
      "message": "Berechne minimale Exportgroesse... DB: 50.2 GB, Charly: 30.1 GB"
    }
    

  2. Service-Status

    {
      "timestamp": "2025-02-18 14:30:24.234",
      "level": "DEBUG",
      "message": "Service 'CharlyServer' Status: Running, StartType: Automatic"
    }
    

  3. Datenbank-Operationen

    {
      "timestamp": "2025-02-18 14:30:25.345",
      "level": "DEBUG",
      "message": "SQL Query ausgefuehrt: SELECT COUNT(*) FROM information_schema.tables"
    }
    

  4. 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:

  1. Vorprüfungen

    {
      "level": "DEBUG",
      "message": "Pruefe Voraussetzungen... Speicherplatz: 85%, Services: OK, DB: OK"
    }
    

  2. Fehlgeschlagene Operationen

    {
      "level": "ERROR",
      "message": "Operation fehlgeschlagen: Backup-Archiv konnte nicht erstellt werden"
    }
    

  3. 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

  1. Log-Rotation

    • Log-Dateien werden nach Datum im Dateinamen sortiert
    • Keine automatische Löschung alter Log-Dateien
    • Manuelle Bereinigung nach erfolgreicher Wiederherstellung empfohlen
  2. Fehlersuche

    • Immer zuerst DEBUG-Einträge prüfen
    • Zeitstempel für Ablaufverfolgung nutzen
    • Nach WARNING-Einträgen vor dem ersten ERROR-Einträgen suchen
  3. Performance-Analyse

    • DEBUG-Einträge enthalten detaillierte Zeitangaben
    • Vergleich mehrerer Exports möglich
    • Engpässe durch Zeitdifferenzen identifizierbar
  4. 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

  1. Kopieren Sie die ISO-Datei auf den neuen Server
  2. 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

  1. Kopieren Sie die ISO-Datei auf den neuen Server
  2. 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

  1. 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
    

  2. Ablauf des Wiederherstellungsprozesses

  3. Die ncjs-Services werden gestoppt
  4. Das charly.7z-Archiv wird extrahiert und im Charly-Client-Verzeichnis wiederhergestellt
  5. Die Datenbanken werden aus dem letzten Backup wiederhergestellt
  6. Die Konfigurationsdateien werden wiederhergestellt
  7. Die ncjs-Services werden neu gestartet
  8. Systemstatus wird angezeigt

  9. Nach der Wiederherstellung

  10. Überprüfen Sie den Systemstatus
  11. Führen Sie ggf. einen charly-Update durch
  12. 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

  1. PostgreSQL-Backup-Dateien aus dem Backup-Verzeichnis lokalisieren
  2. 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

  1. 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

  1. ncjs-Services überprüfen und starten:

    charly-server manage start
    

  2. 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

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

  1. Regelmäßige Test-Wiederherstellungen durchführen
  2. Backup-Logs archivieren und analysieren
  3. Dokumentation aktuell halten
  4. Change Management für Backup-Konfiguration einführen
  5. Disaster Recovery Plan regelmäßig testen

Monitoring-Empfehlungen

  1. Backup-Erfolg/Fehler überwachen
  2. Speicherplatz-Trends analysieren
  3. Performance-Metriken erfassen
  4. ncjs-Services-Status protokollieren
  5. 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

  1. Zustandsverfolgung

    • Persistente Speicherung des Ausführungsstatus
    • Automatische Wiederaufnahme nach Unterbrechungen
    • Detaillierte Protokollierung jedes Schrittes
  2. Schritt-Validierung

    • Individuelle Gültigkeitsdauer für jeden Schritt
    • Automatische Neuausführung nach Ablauf der Gültigkeit
    • Bedingte Ausführung basierend auf Systemzustand
  3. 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:

  1. Vor dem Export

    • Verfügbarer Speicherplatz
    • Systemzustand
    • ncjs-Services-Status
    • Berechtigungen
  2. Während des Exports

    • Datenbankintegrität
    • Archivierungsqualität
    • Speicherverbrauch
    • ncjs-Services-Reaktionen
  3. 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:

  1. Sofortige Wiederholuung

    • Bei temporären Fehlern
    • Maximale Anzahl von Versuchen
    • Exponentielles Backoff
  2. Teilweise Wiederaufnahme

    • Fortsetzung ab letztem erfolgreichen Schritt
    • Zustandswiederherstellung
    • Validierung des Systemzustands
  3. Vollständiger Neustart

    • Bei kritischen Fehlern
    • Automatische Bereinigung
    • Neue Validierung aller Voraussetzungen

Logging und Überwachung

Detaillierte Protokollierung auf mehreren Ebenen:

  1. Prozessebene

    • Ausführungsschritte
    • Zeitstempel
    • Dauer
    • Ressourcenverbrauch
  2. Systemebene

    • Service-Status
    • Systemressourcen
    • Netzwerkverbindungen
    • Speichernutzung
  3. Datenbankebene

    • Transaktionen
    • Locks
    • Performance-Metriken
    • Integritätsprüfungen

Leistungsoptimierung

Das System beinhaltet verschiedene Optimierungen:

  1. Ressourcenmanagement

    • Dynamische Speicherzuweisung
    • Prozess-Priorisierung
    • I/O-Optimierung
  2. Parallelisierung

    • Gleichzeitige Verarbeitung wo möglich
    • Lastverteilung
    • Ressourcen-Pooling
  3. 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