Skip to main content

BriefCam-installatiehandleiding

De BriefCam PostgreSQL-database repliceren

Last Updated: 9 minute read
Versie2025r1
TaalNederlands

In dit gedeelte wordt uitgelegd hoe u de replicatie van de PostgreSQL-database kunt stroomlijnen.

Vereisten, notities en conventies

Opmerking

Gebruik Windows PowerShell in plaats van de opdrachtprompt (cmd) tijdens het plakken van opdrachten uit de voorbeelden in dit document.

  1. Als de primaire serverruimte voldoende is, maakt u een volledige back-up van de database (met het pg_dump-hulpmiddel) voordat u probeert een replica te maken.

  2. Noteer het IP-adres van de primaire server. Later in dit document wordt dit <primaryIP> genoemd.

  3. Noteer het IP-adres van de secundaire server. Later in dit document wordt dit <secondIP> genoemd.

  4. In de PGSQL-server moeten de volgende drie BriefCam installatiecomponenten allemaal worden ingesteld op de hostnaam of het IP-adres. Zorg ervoor dat ze allemaal dezelfde methode gebruiken (om consistentie te garanderen). Dit doe je door te zoeken naar de PostgreSQL- connectionString in de volgende bestanden of instellingen:

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

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

    • Qlik (RESEARCH): ODBC 64-bits vermeldingen (serverveld)

      ODBC Driver Setup.png
  5. Het wordt aanbevolen om de volledige functionaliteit van de systemen te testen voordat u de secundaire server maakt. Let op alle oorspronkelijke waarden van de parameters die je wijzigt.

  6. Stel op alle servers waar de BriefCam Server-componenten zijn geïmplementeerd, het hostbestand in om te wijzen naar de primaire PostgreSQL-databaseserver. Dit overschrijft de DNS.

  7. Open in het BriefCam Administrator Consolehet gedeelte Omgevingsinstellingen en stel de instellingen DB.LocalStorageAddress en VideoProductsPath in om hostnamen te gebruiken in plaats van IP-adressen.

  8. De snelheid van PostgreSQL base_backup hangt sterk af van de omgevingsinstellingen (SSD/HDD/NIC-snelheid). Als vuistregel geldt dat het op ISCSI-opslag (10 Gbps links naar HDD-array) en 1 Gbps netwerk-NIC (vmxnet3) in een virtuele omgeving ongeveer 40 minuten duurt om een basisback-up van de PostgreSQL-database uit te voeren die 90 GB aan BriefCam gegevens bevat.

    Overweeg om de snelheid op de werkelijke omgeving te testen om te kunnen inschatten hoeveel tijd de basisback-up in beslag neemt om de tijdsspanne voor het maken van de replica goed in te stellen.

  9. Het werkelijke pad van de PostgreSQL_Data map gebruiken. De BriefCam is C:\PostgreSQL_Data. Dit kan echter verschillen in verschillende instellingen (later in dit document wordt het standaard BriefCam gebruikt).

  10. Het werkelijke pgsql.exe gebruiken. De BriefCam is C:\PostgreSQL\bin\psql.exe (later in dit onderwerp wordt het standaard BriefCam gebruikt).

Stappen op de primaire server

  1. Maak verbinding met de primaire SQL-shell van de PostgreSQL-server en controleer de locatie van de config- en hba-bestanden door de volgende opdrachten uit te voeren:

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

    Hier is een voorbeeld van de verwachte uitvoer (op basis van de locatie van de PostgreSQL_Data map):

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

  2. Maak een back-up van de originele config - en hba door de volgende opdrachten uit te voeren in PowerShell:

    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. Controleer of de back-upbestanden zijn gemaakt door de volgende opdracht uit te voeren:

    dir C:/PostgreSQL_Data/*.conf.*

    De verwachte uitvoer is:

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

    Directory: C:\PostgreSQL_Data

    Naam laatste schrijftijd modus

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

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

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

  4. Voeg parameters toe aan het postgres.conf -bestand. Dit doe je door het bestand te openen in een teksteditor en de volgende regels toe te voegen aan het einde van het bestand (net onder het Customized Options gedeelte):

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

  5. Maak een rol/gebruiker voor replicatie en stel het wachtwoord in (gebruik niet het wachtwoord dat in de voorbeeldopdrachten is opgegeven).

    1. Verbinding maken met de SQL-shell van de primaire PostgreSQL-server via de PowerShell-console met de opdracht:

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

    2. Voer de volgende opdracht uit (in de SQL-shell die in de vorige stap is geopend):

      CREATE ROLE repl_user LOGIN REPLICATION PASSWORD 'replQwerty123';

  6. Voeg parameters toe aan het pg_hba.conf -bestand. Dit doe je door het bestand te openen in een teksteditor en de volgende regels aan het bestand toe te voegen (onder de #replication privilege regel):

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

  7. Start de BriefCam PostgreSQL-service opnieuw op de primaire PostgreSQL-server door PowerShell te openen als een beheerder en de volgende opdrachten uit te voeren:

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

  8. Controleer of de configuratiebestanden de wijzigingen bevatten die je in het postgres.conf hebt aangebracht, en wel als volgt:

    1. Verbinding maken met de SQL-shell van de primaire PostgreSQL-server via de PowerShell-console met de opdracht:

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

    2. Druk de aangepaste configuraties af die aan het PostgreSQL-configuratiebestand zijn toegevoegd met behulp van de onderstaande opdrachten via de SQL-shell:

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

    3. Controleer of je nu de regels kunt zien die zijn toegevoegd aan het postgresql.conf -bestand onderaan de uitvoer.

      Replicating postgresql conf.png
  9. Controleer of de configuratiebestanden de wijzigingen bevatten die je in het pg_hba.conf hebt aangebracht, en wel als volgt:

    1. Maak verbinding met de SQL Shell van de primaire PostgreSQL-server door de volgende opdrachten uit te voeren:

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

      Pager \pset uit

      SELECTEER pg_read_file('pg_hba.conf');

    2. Controleer of je nu de regels kunt zien die zijn toegevoegd aan het pg_hba.conf -bestand onderaan de uitvoer.

      Replicating pg_hba conf.png

Stappen op de secundaire server

  1. BriefCam PostgreSQL installeren.

  2. Op de secundaire PostgreSQL-server moet u de BriefCamPostgreSQL-service stoppen door in PowerShell als beheerder het volgende uit te voeren:

    net stop "BriefCamPostgreSQL - PostgreSQL Server 10"

  3. Reinig de gegevensmap als volgt:

    1. Geef de PostgreSQL_Data een andere naam.

    2. Maak een nieuwe map met de naam PostgreSQL_Data en voeg in het tabblad Machtigingen van de map volledige controle toe aan iedereen.

      Replicating PostgreSQL properties.png
  4. Voer als volgt een PostgreSQL-basisback-up uit van de primaire naar de secundaire server:

    1. Voer de volgende opdracht uit in PowerShell als beheerder:

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

    2. Het wordt aanbevolen om alle BriefCam op alle servers te stoppen tijdens de mogelijk lange back-up van de database. Het is mogelijk om deze stap uit te voeren zonder alle services te stoppen, afhankelijk van de grootte van de dataset.

  5. Start op de secundaire PostgreSQL-server de BriefCamPostgreSQL-service door als beheerder de volgende opdrachten uit te voeren in PowerShell:

    net start "BriefCamPostgreSQL - PostgreSQL Server 10"

Verifieer de replicatiebewerking

  1. Verbinding maken met de SQL-shell van de primaire PostgreSQL-server via de PowerShell-console met de opdracht:

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

  2. Controleer de waarde van de vertraging door de volgende opdracht in de SQL-shell uit te voeren (de write_lag moet beginnen met 00:00:00):

    SELECT write_lag,client_addr FROM pg_stat_replication ;

    Dit is een voorbeeld van de verwachte uitvoer:

    Postgres=# SELECTEER write_lag, client_addr VAN pg_stat_replication;

    Write_lag | Client_Addr

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

    00:00:00.003972 | 10.30.30.30

    (1 rij)

    Postgres=#

Opmerking

Deze controle moet ten minste eenmaal per dag worden uitgevoerd.

Activeer de secundaire server om op te treden als primaire server

Deze sectie beschrijft de procedure voor het activeren van de secundaire server als de primaire instantie van de PostgreSQL-database, in gevallen waarin de primaire server in gebreke is en herstel/migratie nodig is.

  1. Wijzig het hostbestand in alle BC-servers om het <secundaire IP> weer te geven in plaats van <primaire IP>.

  2. Controleer de status en promoot de secundaire PGSQL-server om de primaire server te worden door de volgende opdrachten uit te voeren in de PowerShell-console (zorg ervoor dat u PowerShell uitvoert in de beheerder en dat u de paden naar het bestand pg_ctl.exe en de map PostgreSQL_Data dienovereenkomstig bewerkt):

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

    Voorbeeld van uitvoer:

    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”

    Voorbeeld van uitvoer:

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

Periodieke back-up maken op de secundaire server

PG_DUMP-scripts in Windows-taakplanner
  1. Maak het %APPDATA%\postgresql\pgpass.conf bestand met de db-referenties (dat wil zeggen: *:5432:*:dbadmin:Qwerty123). Raadpleeg voor meer informatie: https://www.postgresql.org/docs/10/libpq-pgpass.html en https://www.postgresql.org/docs/10/libpq-envars.html (externe links).

    Als het bovenstaande niet werkt, kan het wachtwoord van de scripts worden opgegeven op de executieregel:

    $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. Maak een map voor back-upbestanden, bijvoorbeeld: E:\PostgresBackups\.

  3. Maak een map voor de bestanden met het back-upscript, bijvoorbeeld: E:\PostgresBackupScripts\.

  4. Maak het back-upscript in: E:\PostgresBackupScripts\backup.ps1 met de drie opdrachten zoals hieronder weergegeven:

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

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

    • #ls-bestand E:\PostgresBackups\db*.tar | waar {get-date} - $_.creationtime -gt 15.} | Verwijder-Item –Verbose

    *De 3e opdracht hierboven moet worden aangepast aan de gewenste bewaarperiode voor back-ups door het teken '#' aan het begin van de regel te verwijderen en het getal 15 aan te passen omdat dit het aantal dagen achteruit vertegenwoordigt. Als je bijvoorbeeld het script wilt configureren om alle bestanden ouder dan 7 dagen te verwijderen, moet je het nummer 15 wijzigen in 7.

  5. Test het maken van de back-up en het verwijderen van de oude bestanden door de -gt in te stellen op 0 en de volgende opdracht uit te voeren in Windows cmd:

    powershell.exe e:\PostgresBackupScripts\backup.ps1

    Replicating PostgresBackupScripts.png

    Hiermee worden alle aangemaakte bestanden verwijderd.

  6. Pas de bewaarperiode van de back-ups aan zoals onderaan stap 4 hierboven wordt vermeld.

  7. Voeg het back-upscript als volgt toe aan de Windows-taakplanner:

    1. Stel het veld Programma/script in op het volgende pad:

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

    2. Stel in het veld Argumenten toevoegen het volgende in: E:\PostgresBackupScripts\backup.ps1

      Replicating add arguments.png
  8. Stel de activeringen en timing dienovereenkomstig in.

    Replicating set triggers.png
  9. Stel in dat de taak wordt uitgevoerd, ongeacht of de gebruiker is aangemeld en sla het wachtwoord op.

    Replicating task scheduler.png
  10. Controleer op een testserver of de bestanden herstelbaar zijn. Deze test moet deel uitmaken van je dagelijkse routine.

Hier is een voorbeeld van de herstelopdracht:

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

De parameter -c wordt uitgevoerd door neerzetten en maken. Raadpleeg voor aanvullende opties:

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

Terugkeren naar primaire server nadat deze is opgelost

Als je een secundaire server gebruikt omdat er een probleem is met de primaire server, wordt in dit gedeelte beschreven hoe je kunt terugkeren naar de primaire server zodra het probleem is opgelost.

Opmerking

De details van het onderstaande proces kunnen afhankelijk zijn van het soort fout dat de primaire server heeft opgelopen. Als je het ernstigste geval wilt overwegen (een absolute crash van de primaire server), volgen hieronder de stappen voor een nieuwe installatie.

  1. Installeer het besturingssysteem helemaal opnieuw.

  2. Voer de stappen uit vanuit de stappen in het gedeelte Primaire server op de huidige primaire server.

  3. Voer alle acties uit die in de onderstaande secties op de servers worden beschreven, aangezien de server die opnieuw is geïnstalleerd nu technisch gezien de "secundaire" instantie is:

  4. Stop de PostgreSQL-service op de server die als primaire server werd gebruikt.

  5. Controleer of het BriefCam -systeem juist werkt.

  6. Voer stappen uit voor het maken van een replica op de server die werd gebruikt als primaire server.