Anleitung Interne Datensicherung mit Backup-Skript für PostgreSQL 13 (macOS)

Über diese Anleitung

Hinweis: Diese Anleitung beschreibt die interne Datensicherung der solutio-Datenbanken von PostgreSQL13. Sie richtet sich an erfahrene Systembetreuer.
Hinweis: Bitte beachten Sie, dass wir trotz sorgfältiger Erstellung des hier verwendeten Skripts keine Verantwortung für die Funktionalität übernehmen können. Die Nutzung des Skripts erfolgt auf eigenes Risiko.

Datensicherung

Als Unternehmer sind Sie in Deutschland per Gesetz zu einem angemessenen Risikomanagement verpflichtet. Dazu gehört auch eine regelmäßige Datensicherung.

Hinweis: Die solutio GmbH & Co. KG kann nur Empfehlungen zur Datensicherung geben. Bitte erarbeiten Sie eine ausführliche Datensicherungsstrategie mit Ihrem Systembetreuer und setzen Sie diese gemeinsam mit Ihrem Systembetreuer um.

Wofür benötigen Sie eine Datensicherung?

Sieht man einmal von den gesetzlichen Anforderungen ab, sollten regelmäßige Datensicherungen alleine deswegen bei Ihnen an der Tagesordnung sein, weil kein Unternehmen vor Hardwareausfällen, Anwendungsfehlern, digitaler Schadsoftware etc. und dem damit verbundenen Datenverlust immun ist. Datenverlust kann zu Betriebsstörungen sowie Ausfallzeiten führen und im schlimmsten Fall sogar Ihre Existenz bedrohen. Daher liegen die Vorteile einer Datensicherungslösung auf der Hand:

Welche Datensicherungsstrategien gibt es?

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.

Interne Datensicherung mit Backup-Skript

Die interne Datensicherung über das Backup-Skript dient als Ergänzung zu Ihren bisherigen Datensicherungsstrategien. Sie vereinfacht insbesondere die Datensicherung der „ncjs“-Datenbanken. Sie ist ausdrücklich kein Ersatz für die interne Datensicherung über das Tool „DBBackup“.

Das Ergebnis der Datensicherung können erfahrene Datenbankadministratoren nutzen, um die Daten im Havariefall zurückzuspielen.

Für die interne Datensicherung mittels des Backup-Skripts haben Sie folgende Möglichkeiten:

Bei der Datensicherung über das Backup-Skript werden folgende Datenbanken gesichert:

Datensicherung auf dem charly-Server erstellen (Backup)

Hinweis: Für jede erfolgreich durchgeführte Datensicherung wird ein neues Verzeichnis „Archive_success_<Datum>_<Uhrzeit>“ erstellt, das die Datensicherungen der einzelnen Datenbanken enthält.
  • Im Fehlerfall lautet der Name des Verzeichnisses „Archive_fail_<Datum>_<Uhrzeit>“.
  • Im Laufe der Zeit werden sich durch die Datensicherungen eine Menge Daten ansammeln. Daher empfiehlt es sich, für Ihre Praxis ein Löschkonzept für ältere Datensicherungen zu erarbeiten.

Allgemeine Voraussetzungen

Zugriffsrechte für Backup-Datei “backupCharlyDb13.sh“ setzen (Backup-Skript)

Nachdem Sie das Backup-Skript „backupCharlyDb13.sh“ an ihrem Speicherort abgelegt haben, müssen Sie möglicherweise einmalig die Zugriffsrechte für das Backup-Skript setzen. Andernfalls erhalten Sie beim Ausführen des Backup-Skripts ggf. die Meldung „Permission denied“.

Voraussetzungen

Vorgehensweise

  1. Öffnen Sie das Terminal.
  2. Navigieren Sie zu dem Verzeichnis, in dem Sie das Backup-Skript „backupCharlyDb13.sh“ gespeichert haben.

    Beispiel: Sie haben das Backup-Skript „ backupCharlyDb13.sh “ in folgendem Verzeichnis abgelegt: /Applications/Solutio

    Der Befehl im Terminal lautet in diesem Fall:

    cd /Applications/Solutio
  3. Geben Sie die Zugriffsrechte auf das Backup-Skript backupCharlyDb13.sh über den folgenden Befehl frei.

    chmod +x backupCharlyDb13.sh

Automatische Datensicherung mit LaunchDaemons konfigurieren (Backup-Skript)

Der LaunchDaemons-Dienst von macOS erlaubt es Ihnen, Skripte und Programme automatisch zu starten. Ein Daemon ist ein Hintergrundprozess, der als root ausgeführt wird. Er läuft ganz unabhängig davon, ob ein oder mehrere Benutzer angemeldet sind.

Mit Hilfe des Daemons starten Sie auch die automatisierte interne Datensicherung. Damit die automatisierte Datensicherung durchgeführt wird, legen Sie eine .plist-Datei in das Verzeichnis /Library/LaunchDaemons.

Tipp: In der folgenden Schrittanleitung wird das Erstellen und Speichern der .plist-Datei am Beispiel einer automatisierten Datensicherung beschrieben, die jeden Tag um 23:30 Uhr auf dem charly-Server durchgeführt wird.

Passen Sie die Startzeit für die automatisierte Datensicherung an die Bedürfnisse Ihrer Praxis an.

Voraussetzungen

Vorgehensweise

  1. Öffnen Sie das Terminal.
  2. Tragen Sie die folgenden Informationen in die Datei ein

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
        <dict>
        <key>UserName</key>
        <string>root</string>
        <key>Label</key>
        <string>charlyBackupDb</string>
        <key>Program</key>
        <string>/Applications/Solutio/backupCharlyDb13.sh</string>
        <key>StartCalendarInterval</key>
            <dict>
            <key>Hour</key>
            <integer>23</integer>
            <key>Minute</key>
            <integer>30</integer>
            </dict>
        <key>WorkingDirectory</key>
        <string>/Applications/Solutio/backupCharlyDb</string>
        </dict>
    </plist>
    Hinweis: Die Informationen in der Datei müssen in korrekter XML-Schreibweise formatiert sein. Hierfür können Sie einen XML-Formatter zu Hilfe nehmen.
  3. Speichern Sie die Datei unter einem sprechenden Namen (in unserem Beispiel „charlyBackupDb“) mit der Dateiendung „.plist“.
  4. Legen Sie die Datei „charlyBackupDb.plist“ in das benutzerunabhängige Verzeichnis /Library/LaunchDaemons.
  5. Starten Sie den Server neu.

    • Jeden Tag um 23:30 führt der Server eine automatisierte Datensicherung durch.
    • Die Datensicherung wird unter dem folgenden Pfad gespeichert: /Applications/Solutio/backupCharlyDB
    • In dem Pfad wird ein neuer Ordner für die gerade durchgeführte Datensicherung (z.B. „Archive_success_20230307_151417“) angelegt. In diesem Ordner sind die Datensicherungen der Datenbanken gelistet.

Manuelle Datensicherung über das Terminal starten (Backup-Skript)

Voraussetzungen

Vorgehensweise

  1. Öffnen Sie das Terminal.
  2. Navigieren Sie zu dem Verzeichnis, in dem Sie das Backup-Skript „backupCharlyDb13.sh“ gespeichert haben.

    Beispiel: Sie haben das Backup-Skript „ backupCharlyDb13.sh “ in folgendem Verzeichnis abgelegt: /Applications/Solutio

    Der Befehl im Terminal lautet in diesem Fall:

    cd /Applications/Solutio
  3. Geben Sie die Zugriffsrechte auf das Backup-Skript backupCharlyDb13.sh über den folgenden Befehl frei.

    chmod +x backupCharlyDb13.sh
  4. Starten Sie die Datenbanksicherung mit folgendem Befehl:

    ./backupCharlyDb13.sh
    • Die Datensicherung wird unter dem folgenden Pfad gespeichert: /Applications/Solutio/backupCharlyDB
    • In dem Pfad wird ein neuer Ordner für die gerade durchgeführte Datensicherung (z.B. „Archive_success_20230307_151417“) angelegt. In diesem Ordner sind die Datensicherungen der Datenbanken gelistet.

Technische Informationen zum Backup-Skript

Die im Backup-Skript hinterlegten Speicherpfade sind Default-Pfade. Im Skript finden Sie diese im Abschnitt „initParams“.

# init default local variables
binPfad="/Library/solutio_PostgreSQL/13/bin"
host="localhost"
port="5432"
username="postgres"
archivePfad="/Applications/Solutio/backupCharlyDB"
deleteOld="NO"
isSuccess="YES"

Die Default-Parameter können Sie sowohl über die Kommandozeile als auch im Skript selbst ändern.

Beispiel: Sie möchten über die Kommandozeile den Port ändern.
backupCharlyDbPG13.sh --port 1234

In der folgenden Tabelle finden Sie eine Liste der möglichen Eingabeparameter:

--binPfad

[erforderlich]

(Default: /Library/solutio_PostgreSQL/13/bin)

Pfad zu PostgreSQL\bin, in dem pg_dump.exe und psql.exe liegen. Das Verzeichnis muss existieren.

--host

[optional]

(Default: localhost)

Hostname des Datenbankservers

--port

[optional]

(Default: 5432)

Port des Datenbankservers

--username

[erforderlich]

(Default: postgres)

Datenbankbenutzername

--archivePfad

[erforderlich]

(Default: /Applications/Solutio/backupCharlyDB)

Verzeichnis, in dem das Archiv der Datenbanken gespeichert werden soll. Bei Erfolg wird hier das Unterverzeichnis „Archive_YYYYMMDD_HHMMSS“ angelegt. In einem Fehlerfall wird das Unterverzeichnis „FAIL_Archive_YYYYMMDD_HHMMSS“ erstellt.

--deleteOld

[optional]

(Default: NO)

YES/NO. Wenn YES gesetzt wird, wird das bisherige - mit „Archive_success“ bezeichnete Verzeichnis - in „Old_Archive_success“ umbenannt. Wenn bereits ein „Old_Archive_success“ vorhanden ist, wird dieses überschrieben.

--help Hilfe anzeigen, dann beenden