Skip to main content

BriefCam Installationsanleitung

Replikation der BriefCam PostgreSQL-Datenbank

Last Updated: 8 minute read
Version2025r1
SpracheDeutsch

Dieser Abschnitt beschreibt, wie Sie die Replikation der PostgreSQL-Datenbank rationalisieren können.

Voraussetzungen, Hinweise und Konventionen

Anmerkung

Verwenden Sie Windows PowerShell und nicht die Eingabeaufforderung (cmd), wenn Sie Befehle aus den Beispielen in diesem Dokument einfügen.

  1. Wenn der Speicherplatz auf dem Primärserver ausreicht, führen Sie eine vollständige Sicherung der Datenbank durch (mit dem Tool pg_dump), bevor Sie versuchen, das Replikat zu erstellen.

  2. Notieren Sie sich die IP-Adresse des Primärservers. Im weiteren Verlauf dieses Dokuments wird sie als <primäreIP> bezeichnet.

  3. Notieren Sie sich die IP-Adresse des sekundären Servers. Im weiteren Verlauf dieses Dokuments wird sie als <secondaryIP> bezeichnet.

  4. Auf dem PGSQL-Server müssen die folgenden drei BriefCam Installationskomponenten alle entweder auf den Hostnamen oder die IP-Adresse eingestellt werden. Stellen Sie sicher, dass sie alle die gleiche Methode verwenden (um Konsistenz zu gewährleisten). Dazu suchen Sie die PostgreSQL- connectionString in den folgenden Dateien oder Einstellungen:

    • VS-Server: C:\Program Files\BriefCam\BriefCam Server\VSServer.exe.config

    • Web Services: C:\Program Files\BriefCam\WebServices\ProWebApi\Web.config

    • Qlik (RESEARCH): ODBC 64-bit Einträge (Server field)

      ODBC Driver Setup.png
  5. Es wird empfohlen, die volle Funktionalität der Systeme zu testen, bevor Sie den sekundären Server erstellen. Achten Sie darauf, dass Sie sich alle Originalwerte der geänderten Parameter notieren.

  6. Stellen Sie auf allen Servern, auf denen die BriefCam-Serverkomponenten eingesetzt werden, die Hosts-Datei so ein, dass sie auf den primären PostgreSQL-Datenbankserver verweist. Dadurch wird der DNS außer Kraft gesetzt.

  7. Öffnen Sie im BriefCam Administrator Consoleden Abschnitt Environment Settings und setzen Sie die Einstellungen DB.LocalStorageAddress und VideoProductsPath so, dass Hostnamen und nicht IP-Adressen verwendet werden.

  8. Die Geschwindigkeit von PostgreSQL base_backup hängt stark von der Umgebungskonfiguration (SSD/HDD/NIC-Geschwindigkeit) ab. Als Faustregel gilt, dass es bei ISCSI-Speicher (10 Gbit/s Links HDD-Array) und 1 Gbit/s Netzwerk-NIC (vmxnet3) in einer virtuellen Umgebung etwa 40 Minuten dauert, um eine Basissicherung der PostgreSQL-Datenbank mit 90 GB BriefCam Daten durchzuführen.

    Erwägen Sie, die Geschwindigkeit in der tatsächlichen Umgebung zu testen, um abschätzen zu können, wie lange die Basissicherung dauern wird, damit Sie das Zeitfenster für die Erstellung des Replikats richtig einstellen können.

  9. Verwenden Sie den tatsächlichen Pfad des PostgreSQL_Data -Verzeichnisses. Die BriefCam ist C:\PostgreSQL_Data. Dies kann jedoch bei verschiedenen Einrichtungen variieren (im weiteren Verlauf dieses Dokuments wird der Standard- BriefCam verwendet).

  10. Verwenden Sie den tatsächlichen pgsql.exe Pfad. Der BriefCam ist C:\PostgreSQL\bin\psql.exe (im weiteren Verlauf dieses Themas wird der standardmäßige BriefCam verwendet).

Schritte auf dem Primärserver

  1. Verbinden Sie sich mit der SQL-Shell des primären PostgreSQL-Servers und überprüfen Sie den Speicherort der config- und hba-Dateien, indem Sie die folgenden Befehle ausführen:

    C:\PostgreSQL\bin\psql.exe -U dbadmin postgres SHOW config_file; SHOW hba_file;

    Hier ist ein Beispiel für die erwartete Ausgabe (basierend auf dem Speicherort des PostgreSQL_Data Ordners):

    C:/PostgreSQL_Data/postgresql.conf C:/PostgreSQL_Data/pg_hba.conf

  2. Sichern Sie die ursprünglichen config - und hba , indem Sie die folgenden Befehle in PowerShell ausführen:

    copy C:/PostgreSQL_Data/postgresql.conf C:/PostgreSQL_Data/postgresql.conf.$(((get-date).ToUniversalTime()).ToString("yyyyMMddTHHmmssZ"))

    copy C:/PostgreSQL_Data/pg_hba.conf C:/PostgreSQL_Data/pg_hba.conf.$(((get-date).ToUniversalTime()).ToString("yyyyMMddTHHmmssZ"))

  3. Überprüfen Sie, ob die Sicherungsdateien erstellt wurden, indem Sie den folgenden Befehl ausführen:

    dir C:/PostgreSQL_Data/*.conf.*

    Die erwartete Ausgabe ist:

    PS C:\Users\Administrator> dir C:/PostgreSQL_Data/*.conf.*

    Directory: C:\PostgreSQL_Data

    Mode LastWriteTime Length Name

    ---- ------------- ------ ----

    -a---- 11/10/2021 11:22 AM 4374 pg_hba.conf.20211117T100109Z

    -a---- 11/10/2021 11:25 AM 23798 postgresql.conf.20211117T100344Z

  4. Fügen Sie der postgres.conf -Datei Parameter hinzu. Dazu öffnen Sie die Datei in einem Texteditor und fügen die folgenden Zeilen am Ende der Datei hinzu (direkt unter dem Customized Options Abschnitt):

    wal_level = replica hot_standby = on hot_standby_feedback = on full_page_writes = on max_wal_senders = 6 max_replication_slots = 6

  5. Erstellen Sie eine Rolle/einen Benutzer für die Replikation und legen Sie dessen Passwort fest (verwenden Sie nicht das in den Beispielbefehlen angegebene Passwort).

    1. Verbinden Sie sich über die PowerShell-Konsole mit der SQL-Shell des primären PostgreSQL-Servers, indem Sie den folgenden Befehl ausführen:

      C:\PostgreSQL\bin\psql.exe -U dbadmin postgres

    2. Führen Sie den folgenden Befehl aus (in der im vorherigen Schritt geöffneten SQL-Shell):

      CREATE ROLE repl_user LOGIN REPLICATION PASSWORD 'replQwerty123';

  6. Fügen Sie der pg_hba.conf -Datei Parameter hinzu. Dazu öffnen Sie die Datei in einem Texteditor und fügen die folgenden Zeilen in die Datei ein (unter der #replication privilege Zeile):

    # replication privilege. host replication repl_user <secondaryIP>/32 md5

  7. Starten Sie den BriefCamPostgreSQL-Dienst auf dem primären PostgreSQL-Server neu, indem Sie PowerShell als Administrator öffnen und die folgenden Befehle ausführen:

    net stop "BriefCamPostgreSQL - PostgreSQL Server 10" net start "BriefCamPostgreSQL - PostgreSQL Server 10"

  8. Überprüfen Sie, ob die Konfigurationsdateien die Änderungen enthalten, die Sie wie folgt an der postgres.conf vorgenommen haben:

    1. Verbinden Sie sich über die PowerShell-Konsole mit der SQL-Shell des primären PostgreSQL-Servers, indem Sie den folgenden Befehl ausführen:

      C:\PostgreSQL\bin\psql.exe -U dbadmin postgres

    2. Drucken Sie die benutzerdefinierten Konfigurationen, die der PostgreSQL-Konf-Datei hinzugefügt wurden, mit den folgenden Befehlen über die SQL-Shell aus:

      \pset pager off SELECT pg_read_file('postgresql.conf');

    3. Überprüfen Sie, ob Sie die Zeilen, die der postgresql.conf -Datei hinzugefügt wurden, am Ende der Ausgabe sehen können.

      Replicating postgresql conf.png
  9. Überprüfen Sie, ob die Konfigurationsdateien die Änderungen enthalten, die Sie wie folgt an der pg_hba.conf vorgenommen haben:

    1. Verbinden Sie sich mit der SQL Shell des primären PostgreSQL-Servers, indem Sie die folgenden Befehle ausführen:

      C:\PostgreSQL\bin\psql.exe -U dbadmin postgres

      \pset pager off

      WÄHLEN SIE pg_read_file('pg_hba.conf');

    2. Überprüfen Sie, ob Sie die Zeilen, die der pg_hba.conf -Datei hinzugefügt wurden, am Ende der Ausgabe sehen können.

      Replicating pg_hba conf.png

Schritte auf dem sekundären Server

  1. Installieren Sie BriefCamPostgreSQL.

  2. Stoppen Sie auf dem sekundären PostgreSQL-Server den BriefCamPostgreSQL-Dienst, indem Sie in PowerShell als Administrator Folgendes ausführen:

    net stop "BriefCamPostgreSQL - PostgreSQL Server 10"

  3. Bereinigen Sie das Datenverzeichnis wie folgt:

    1. Benennen Sie den PostgreSQL_Data Ordner um.

    2. Erstellen Sie einen neuen Ordner namens PostgreSQL_Data und fügen Sie auf der Registerkarte Berechtigungen des Ordners Everyone (Vollständige Kontrolle) hinzu.

      Replicating PostgreSQL properties.png
  4. Führen Sie ein PostgreSQL-Basis-Backup vom primären auf den sekundären Server wie folgt durch:

    1. Führen Sie den folgenden Befehl in PowerShell als Administrator aus:

      c:\PostgreSQL\bin\pg_basebackup -h <primaryIP> -U repl_user --checkpoint=fast -D C:\PostgreSQL_Data -R TBD #--slot=standby1

    2. Es wird empfohlen, alle BriefCam Dienste auf allen Servern während der potenziell langen Datenbanksicherung anzuhalten. Es ist möglich, diesen Schritt durchzuführen, ohne alle Dienste zu stoppen, abhängig von der Größe des Datensatzes.

  5. Starten Sie auf dem sekundären PostgreSQL-Server den BriefCamPostgreSQL-Dienst, indem Sie als Administrator die folgenden Befehle in PowerShell ausführen:

    net start "BriefCamPostgreSQL - PostgreSQL Server 10"

Überprüfen Sie den Replikationsvorgang

  1. Verbinden Sie sich über die PowerShell-Konsole mit der SQL-Shell des primären PostgreSQL-Servers, indem Sie den folgenden Befehl ausführen:

    C:\PostgreSQL\bin\psql.exe -U dbadmin postgres

  2. Überprüfen Sie den Verzögerungswert, indem Sie den folgenden Befehl in der SQL-Shell ausführen (der write_lag muss mit 00:00:00 beginnen):

    SELECT write_lag,client_addr FROM pg_stat_replication ;

    Dies ist ein Beispiel für den erwarteten Output:

    postgres=# SELECT write_lag,client_addr FROM pg_stat_replication ;

    write_lag | client_addr

    -----------------+-------------

    00:00:00.003972 | 10.30.30.30

    (1 Zeile)

    postgres=#

Anmerkung

Diese Prüfung muss mindestens einmal pro Tag durchgeführt werden.

Aktivieren Sie den sekundären Server als primären Server

Dieser Abschnitt beschreibt das Verfahren zur Aktivierung des sekundären Servers als primäre Instanz der PostgreSQL-Datenbank in Fällen, in denen der primäre Server gestört ist und eine Wiederherstellung/Migration erforderlich ist.

  1. Ändern Sie die Hosts-Datei auf allen BC-Servern so, dass die <secondaryIP> anstelle der <primaryIP> angezeigt wird.

  2. Überprüfen Sie den Status und stufen Sie den sekundären Server PGSQL zum primären Server herauf, indem Sie die folgenden Befehle in der PowerShell-Konsole ausführen (stellen Sie sicher, dass PowerShell als Administrator ausgeführt wird und die Pfade zur Datei pg_ctl.exe und zum Ordner PostgreSQL_Data entsprechend bearbeitet werden):

    • c:\PostgreSQL\bin\pg_ctl.exe status -D ”C:\PostgreSQL_Data”

    Beispielausgabe:

    pg_ctl: server is running (PID: 5672) C:\PostgreSQL\bin\postgres.exe "-D" "C:\PostgreSQL_Data"

    • c:\PostgreSQL\bin\pg_ctl.exe promote -D ”C:\PostgreSQL_Data”

    Beispielausgabe:

    waiting for server to promote.... done server promoted

Erstellen Sie regelmäßige Backups auf dem sekundären Server

PG_DUMP-Skripte im Windows Taskplaner
  1. Erstellen Sie die %APPDATA%\postgresql\pgpass.conf -Datei mit den db-Anmeldeinformationen (d.h.: *:5432:*:dbadmin:Qwerty123). Einzelheiten finden Sie unter: https://www.postgresql.org/docs/10/libpq-pgpass.html und https://www.postgresql.org/docs/10/libpq-envars.html (externe Links).

    Wenn die obige Vorgehensweise nicht funktioniert, kann das Passwort der Skripte in der Ausführungszeile angegeben werden:

    $env:PGPASSWORD='Qwerty123' ;& c:\PostgreSQL\bin\pg_dump.exe -F t -U dbadmin -d briefcam -f e:\PostgresBackups\db_briefcam-$(((get-date).ToUniversalTime()).ToString("yyyyMMddTHHmmssZ")).tar

  2. Erstellen Sie einen Ordner für die Sicherungsdateien, zum Beispiel: E:\PostgresBackups\.

  3. Erstellen Sie einen Ordner für die Sicherungsskriptdateien, z. B.: E:\PostgresBackupScripts\.

  4. Erstellen Sie das Sicherungsskript unter: E:\PostgresBackupScripts\backup.ps1 mit den drei unten gezeigten Befehlen:

    • c:\PostgreSQL\bin\pg_dump.exe -F t -U dbadmin -d postgres -f e:\PostgresBackups\db_postgres-$(((get-date).ToUniversalTime()).ToString("yyyyMMddTHHmmssZ")).tar

    • c:\PostgreSQL\bin\pg_dump.exe -F t -U dbadmin -d briefcam -f e:\PostgresBackups\db_briefcam-$(((get-date).ToUniversalTime()).ToString("yyyyMMddTHHmmssZ")).tar

    • #ls -file E:\PostgresBackups\db*.tar | where {(get-date) - $_.creationtime -gt 15.} | Remove-Item –Verbose

    *Der 3. Befehl oben sollte entsprechend der erforderlichen Aufbewahrungsfrist für Sicherungen angepasst werden, indem das "#"-Zeichen am Anfang der Zeile entfernt und die Zahl 15 geändert wird, da sie die Anzahl der Tage rückwärts darstellt. Wenn Sie das Skript beispielsweise so konfigurieren möchten, dass alle Dateien gelöscht werden, die älter als 7 Tage sind, müssen Sie die Zahl 15 in 7 ändern.

  5. Testen Sie die Erstellung des Backups und die Entfernung der alten Dateien, indem Sie -gt auf 0 setzen und den folgenden Befehl in Windows cmd ausführen:

    powershell.exe e:\PostgresBackupScripts\backup.ps1

    Replicating PostgresBackupScripts.png

    Dadurch werden alle erstellten Dateien entfernt.

  6. Passen Sie den Aufbewahrungszeitraum der Sicherungen an, wie am Ende von Schritt 4 oben erwähnt.

  7. Fügen Sie das Sicherungsskript wie folgt zum Windows-Taskplaner hinzu:

    1. Setzen Sie das Feld Program/script auf den folgenden Pfad:

      C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe

    2. Legen Sie im Feld Add Arguments Folgendes fest: E:\PostgresBackupScripts\backup.ps1

      Replicating add arguments.png
  8. Stellen Sie die Auslöser und das Timing entsprechend ein.

    Replicating set triggers.png
  9. Stellen Sie die Aufgabe so ein, dass sie unabhängig davon ausgeführt wird, ob der Benutzer angemeldet ist, und speichern Sie das Passwort.

    Replicating task scheduler.png
  10. Prüfen Sie auf einem Testserver, ob die Dateien wiederherstellbar sind. Dieser Test sollte Teil Ihrer laufenden Routine sein.

Hier ist ein Beispiel für den Wiederherstellungsbefehl:

C:\PostgreSQL\bin\pg_restore.exe -c -v -U dbadmin -d briefcam -F t e:\PostgresBackups\db_briefcam-20211122T122052Z.tar

Der Parameter führt -c das Löschen und Erstellen durch. Weitere Optionen finden Sie unter:

“C:\PostgreSQL\bin\pg_restore.exe --help” 

Kehren Sie zum Primärserver zurück, nachdem er repariert wurde

Wenn Sie einen sekundären Server verwendet haben, weil ein Problem mit dem primären Server aufgetreten ist, wird in diesem Abschnitt beschrieben, wie Sie zum primären Server zurückkehren, sobald das Problem behoben ist.

Anmerkung

Die Details des unten beschriebenen Vorgangs können je nach Art des Fehlers auf dem Primärserver variieren. Um den schwerwiegendsten Fall (einen absoluten Absturz des Primärservers) zu berücksichtigen, umfassen die folgenden Schritte eine Neuinstallation.

  1. Installieren Sie das Betriebssystem von Grund auf neu.

  2. Führen Sie die Schritte aus dem Abschnitt Schritte auf dem Primärserver auf dem aktuellen Primärserver durch.

  3. Führen Sie alle in den folgenden Abschnitten beschriebenen Aktionen auf den Servern durch, wobei der neu installierte Server nun technisch gesehen die "sekundäre" Instanz ist:

  4. Stoppen Sie den PostgreSQL-Dienst auf dem Server, der als primärer Server verwendet wurde.

  5. Überprüfen Sie, ob das BriefCam ordnungsgemäß funktioniert.

  6. Führen Sie die Schritte zum Erstellen eines Replikats auf dem Server durch, der als primärer Server verwendet wurde.