PostgreSQL®-Datenbank-Cluster
Redundanz - Datenbank-Cluster
Die folgende Abbildung zeigt die PostgreSQL®-Redundanzstruktur.
Die Konfiguration umfasst die folgenden Elemente:
- Ein redundantes WinCC OA Projektserver-Paar: beide WinCC OA-Servers hosten eine PostgreSQL® Backend-Instanz.
- Ein redundantes Datenbankserver-Paar: Jeder Datenbankserver hostet eine PostgreSQL®-Application-Server-Instanz und ein pgClusterMonitor Python -Skript. pgClusterMonitor ist ein Service, der einen Cluster der PostgreSQL®-Datenbank über WAL (Write-Ahead-Logging) Streaming Replication überwacht.
Server-Details:
- Einer der PostgreSQL® Application-Servern arbeitet im Master-Modus. Der Master-Datenbankknoten akzeptiert Lese-und Schreib-Anfragen und veröffentlicht den Abgleich (replication) für den Standby PostgreSQL® Application-Server. Master- und Standby-Databankknoten synchronisieren die Information.
- Alle Anfragen von PostgreSQL®-Backends werden nur im Master-Modus an PostgreSQL® Application-Server geroutet Daher hat jede Instanz des PostgreSQL®-Backends eine Konfiguration mit zwei Connection-Strings, welche auf die beide PostgreSQL® Application-Server referenzieren. PostgreSQL®-Backend verwendet den ersten Verbindungsstring (connection string), der im Master-Modus erfolgreich eine Verbindung zum PostgreSQL® Application -Server aufbaute.
- PostgreSQL®-Backend überwacht Verbindungsfehler und versucht auf einen anderen Verbindungsstring zu wechseln, um eine Verbindung aufzubauen.
Aufsetzen eines Datenbankclusters
Das PostgreSQL®-Backend kann mit einem PostgreSQL®-Cluster arbeiten. Ein PostgreSQL®-Cluster mit WinCC OAbesteht aus zwei Knoten, die Datenbank-Redundanz anbieten. Für einen PostgreSQL®-Cluster verwenden Sie nicht die gleichen Knoten auf den WinCC OA läuft, sondern unterschiedliche Hosts für jede Datenbank des Clusters.
Um einen Cluster aufzusetzen, gehen Sie, wie unterhalb beschrieben, vor. Es wird angenommen, dass die Master-Datenbank die IP-Adresse "192.168.0.101" hat und die Standby-Datenbank die Adresse "192.168.0.102".
Auf dem Master-Datenbankknoten
- Führen Sie ein SQL-Skript aus (für mehr Information über diese Einstellungen, siehe https://www.postgresql.org/docs/13/config-setting.html):
ALTER SYSTEM SET listen_addresses TO '*'; ALTER SYSTEM SET synchronous_commit TO 'remote_apply'; SELECT * FROM pg_create_physical_replication_slot('__slot'); ALTER SYSTEM SET synchronous_standby_names TO '*'; ALTER SYSTEM SET wal_level TO 'replica'; ALTER SYSTEM SET wal_log_hints TO 'on'; ALTER SYSTEM SET max_wal_senders TO '10'; ALTER SYSTEM SET wal_keep_size TO '16MB'; ALTER SYSTEM SET hot_standby TO 'on';
- Öffnen Sie die Datei
pg_hba.conf C:\Program Files\PostgreSQL\16\data\pg_hba.conf
und fügen Sie Ihre Serveradressen hinzu: - Fügen Sie Authentifizierungseinstellungen zu der
pg_hba.conf-Datei
hinzu (siehe https://www.postgresql.org/docs/13/auth-pg-hba-conf.html), um den Client-Applikationen den Zugriff auf die Datenbank und die Arbeit mit Replika zu ermöglichen. - Starten Sie den PostgreSQL®-Dienst neu:
Windows Taskmanager/services/postgresql-x64-16.
Auf dem Standby-Datenbankknoten
- Stoppen Sie den PostgreSQL®-Server.
- Löschen Sie den Inhalt des PG_DATA-Verzeichnisses.
- Erstellen Sie die Verzeichnisse db, events, alerts, backups für Tablespaces. Die Verzeichnisse müssen mit dem gleichen Pfad wie auf dem Primärserver erstellt werden. Siehe Kapitel NGA - PostgreSQL Server-Installation .
- Führen Sie das folgende Kommando aus:
pg_basebackup -D "PG_DATA" -h ip_master -p port_master -X stream -c fast -U username -W -R
Die verschiedenen Teile des Befehls werden im Folgenden beschrieben:
-
- PG_DATA - PostgreSQL® Data-Verzeichnis.
- ip_master - die IP-Adresse oder der Hostname wo die Master-Datenbank liegt.
- port_master - Port der Master-Datenbank.
- username - Benutzername mit Replica-Rolle. Dieser Benutzer muss Zugriff auf die Master-Datenbank haben.
- Starten Sie den PostgreSQL®-Server. Starten Sie den Server über:
Windows Taskmanager/services/postgresql-x64-16.
PostgeSQL Cluster mit zwei Netzwerkadaptern
Wenn Sie zwei Netzwerkadapter auf beiden der Cluster verwenden, gehen Sie wie folgt vor:
- Fügen Sie die IP-Adresse des zweiten Netzwerkadapters zu der pg_hba.conf-Datei hinzu. Beide Netzwerkadapter müssen in der config.ini-Datei angegeben werden - siehe den
Schritt unterhalb):
Windows: C:/Program Files/PostgreSQL/16/data/pg_hda.conf Linux: /var/lib/pgsql/data/pg_hda.conf
- Auf dem sekundären Server, führen Sie "pg_basebackup" aus indem Sie die verfügbaren IP-Adressen getrennt durch Kommas auflisten. Die "pg_basebackup"-Datei liegt in der
PostgreSQL®-Installation: PostgreSQL/<version>/bin:
pg_basebackup -D "PG_DATA" -h ip_master1,ipmaster2 -p port_master -X stream -c fast -U username
- Listen Sie die geforderten IP-Adressen in der [cluster]-Sektion der Konfigurationsdatei des Monitoring Utilitys (
wincc_oa/data/NGA/PostgreSQL/sql/Cluster Monitor Tool/config.ini
) getrennt durch Kommas auf, z.B.:[cluster] p1 = host=host1,host2 port=1111 dbname=winccoa user=postgres password=postgres sslmode=prefer sslcompression=1 krbsrvname=postgres target_session_attrs=any