PostgreSQL®-Datenbankwartung - DBAdmin-Managed Database

Schema aktualisieren

WinCC OA PostgreSQL® Schema-Upgrade-Skripte werden im WinCC OA-Installationsverzeichnis WinCC OA/data/NGA/PostgreSQL/sql/Migrations gespeichert. Jeder Name des Upgrade-Skripts enthält die Version des Zielschemas, auf die das WinCC OA -Datenbankschema aktualisiert werden soll, z.B.
PSQL_upgradeTo<version>.sql
aktualisiert das Schema auf die angegebene Version.
Note:
Stellen Sie sicher, dass Sie Ihre PostgreSQL®-Schema-Version auf die neueste verfügbare Version aktualisieren. Sie finden die verfügbaren Aktualisierungsskripte unter \data\NGA\PostgreSQL\sql\Migrations. Aktualisieren Sie das Schema in der richtigen Reihenfolge, d.h. von der niedrigsten zur höchsten (neuesten) Version.
Um das Upgrade-Skript auszuführen, rufen Sie einfach psql auf:
psql -f <upgrade_script.sql> [-U user] [-h database_host] [-p database_port] <database_name>

Um zum Beispiel das Schema auf die angegebene Version zu aktualisieren, wenn der Datenbankserver auf localhost mit dem Standardport (5432), mit dem Benutzer (etm) und mit dem Datenbanknamen (winccoa) installiert ist, führen Sie einfach folgenden Befehl aus:

psql -f PSQL_upgradeTo<version>.sql -U etm winccoa

Sie werden dann nach dem Passwort des Benutzers `etm` gefragt. Weitere Informationen über die Herstellung einer Verbindung zur PostgreSQL®-Datenbank finden Sie unter (https://www.postgresql.org/docs/current/app-psql.html).

Der Benutzer "etm" muss über Replikationsrechte verfügen, die standardmäßig nicht vergeben werden. Dies geschieht z.B. durch Ausführen des Befehls "ALTER ROLE etm REPLICATION;" in der Datenbank mit dem Benutzerkonto admin:
psql -U admin_user -h C:/Users/<username>/AppData/Local/.winccoa -p 15432 -c “ALTER ROLE etm REPLICATION;”

Sicherung erstellen

Um Ihre komplette PostgreSQL®-Datenbank zu sichern, gehen Sie wie folgt vor:

Voraussetzung: WinCC OA läuft und PostgreSQL®-Datenbank ist erreichbar.

  • Setzen Sie die folgenden Parameter in der entsprechenden Datei:

    Windows: <PG Installationspfad>/<PG-version>/postgres.conf

    oder Linux: /var/lib/pgsql/data/postgresql.conf

    , um sicherzustellen, dass die Größe der Logdatei im Dauerbetrieb begrenzt / konstant gehalten wird:
    logging_collector = on
    log_truncate_on_rotation = on
    log_rotation_age = 1d
    log_filename = '%A.log' # log file name pattern: creates a logfile with weekday name - will be overwritten after 7 days!
  • Öffnen Sie auf Windows die Kommandozeile bzw. auf Linux ein Terminalfenster.
  • Setzen Sie die nachfolgenden psql-Befehle ab.
    pg_basebackup -D <db_target_backup_directory> [-U admin_user] [-h database_host] [-p database_port] -Ft -z -c spread -R -P
    Sie werden aufgefordert sich zu authenfizieren (user = "etm" + ihr definiertes Passwort bei Standardprojekt-Erstellung bzw. das Default-Passwort bei "Legacy Projekt"). Bei erfolgreich ausgeführtem Befehl wird folgendes ausgegeben:
    <Größe/Größe> kB (100 %), 1/1 Tablespace
    Sie können auch die Unix-Socket-Verbindung verwenden, um eine Sicherung durchzuführen:
    pg_basebackup -D <db_target_backup_directory> -U admin_user -h C:/Users/<username>/AppData/Local/.winccoa -p 15432 -Ft -z -c spread -R -P

    Unter Linux ist der Pfad: $HOME/.winccoa.

    Note:
    Das <db_target_backup_directory> muss leer sein. Es empfiehlt sich im Verzeichnis einen "Datums+Zeit"-Ordner einzurichten.
    CAUTION:
    Die Backup-Dateien sind nicht verschlüsselt. Um unbefugten Zugriff zu verhindern, stellen Sie sicher, dass das Zielverzeichnis (db_target_backup_directory), insbesondere ein Remote-Verzeichnis, sicher ist. Verwenden Sie BitLocker (Windows) oder andere Verschlüsselungsprogramme, um die Backup-Dateien zu verschlüsseln.

Sicherung wiederherstellen

  • Wie Sie die Datenbank stoppen, hängt davon ab, wie die Datenbank installiert und gestartet wurde. Unter Windows sollte das Dienste-Panel (Windows-Startmenü -> Eingabe von "Dienste") verwendet werden, um die Datenbank zu stoppen.

    Auf Linux-Systemen sollte je nach Distribution entweder systemctl oder der Befehl service verwendet werden. Wenn Sie unsicher sind, fragen Sie Ihren Datenbankadministrator.

  • Benennen Sie das Datenbankkonfigurationsverzeichnis um oder entfernen Sie es. Der Speicherort hängt davon ab, wie die Datenbank installiert wurde. Wenn Sie unsicher sind, wenden Sie sich an Ihren Datenbankadministrator. Darüber hinaus müssen Archive mit Tablespace-Informationen in die richtigen Verzeichnisse entpackt werden: Gehen Sie für jeden Eintrag in der tablespace_map-Datei in das dort genannte Verzeichnis, verschieben oder entfernen Sie alle dort befindlichen PG_*-Unterverzeichnisse und entpacken Sie das Archiv mit dem entsprechenden Namen an diesen Ort.
    tar -xf <db_target_backup_directory>/base.tar.gz -C <database configuration directory> tar -xf <db_target_backup_directory>/pg_wal.tar.gz -C <database configuration directory>/pg_wal 
  • Erstellen Sie ein neues leeres pgdata-Verzeichnis.
  • Öffnen Sie auf Windows die Kommandozeile bzw. auf Linux ein Terminalfenster.
  • Starten Sie den Server mit einer für die Art der Installation geeigneten Methode.

    Unter Windows sollte das Dienste-Panel (Windows-Startmenü -> Eingabe von "Dienste") verwendet werden, um den Server zu starten.

    Auf Linux-Systemen sollte je nach Distribution entweder systemctl oder der Befehl service verwendet werden. Wenn Sie unsicher sind, fragen Sie Ihren Datenbankadministrator.
  • Führen Sie in jedem Fall den folgenden Befehl aus, um die Datenbank vom Standby-Modus in den Lese-/Schreibmodus zu versetzen:
    pg_ctl promote -D <database_directory>

Wenn eine Datenbank-Rücksicherung notwendig geworden ist und der NextGen Archiver die Daten aus dem Ausfall gepuffert hat, werden die Puffer automatisch in die Datenbank nachgeschrieben, nachdem eine neue DB-Verbindung hergestellt und die Puffer aufgelöst wurden.

Note:
Das Konzept der Datenbanksicherung sollte so ausgelegt sein, dass WinCC OA alle Daten für den Zeitraum zwischenspeichern kann, in dem wieder ein Wiederherstellungspunkt eingerichtet werden kann. Dies bedeutet, dass der verfügbare Platzbedarf für den Pufferzeitraum größer ist als das Sicherungsintervall.

Sie finden alle erforderlichen Befehle in der Readme-Datei <winccoa product directory>/<version>data/NGA/PostgreSQL/sql>/readme.md.

Note:
Wenn Sie die Standard-Systeminstallation von PostgreSQL® verwenden, dann benutzen Sie systemctl anstelle von pg_ctl start.
Note:
pg_ctl ist unter Debian nicht im bin-Pfad enthalten. Sie müssen den vollständigen Pfad /lib/postgresql/$version$/bin/pg_ctl verwenden.