De BriefCam PostgreSQL-database repliceren
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.
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.
Noteer het IP-adres van de primaire server. Later in dit document wordt dit <primaryIP> genoemd.
Noteer het IP-adres van de secundaire server. Later in dit document wordt dit <secondIP> genoemd.
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-
connectionStringin de volgende bestanden of instellingen:VS-server:
C:\Program Files\BriefCam\BriefCam Server\VSServer.exe.configWebservices:
C:\Program Files\BriefCam\WebServices\ProWebApi\Web.configQlik (RESEARCH): ODBC 64-bits vermeldingen (serverveld)

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.
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.
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.
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.
Het werkelijke pad van de
PostgreSQL_Datamap gebruiken. De BriefCam isC:\PostgreSQL_Data. Dit kan echter verschillen in verschillende instellingen (later in dit document wordt het standaard BriefCam gebruikt).Het werkelijke
pgsql.exegebruiken. De BriefCam isC:\PostgreSQL\bin\psql.exe(later in dit onderwerp wordt het standaard BriefCam gebruikt).
Stappen op de primaire server
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_Datamap):C:/PostgreSQL_Data/postgresql.conf C:/PostgreSQL_Data/pg_hba.confMaak een back-up van de originele
config- enhbadoor 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"))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
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 hetCustomized Optionsgedeelte):wal_level = replica hot_standby = on hot_standby_feedback = on full_page_writes = on max_wal_senders = 6 max_replication_slots = 6Maak een rol/gebruiker voor replicatie en stel het wachtwoord in (gebruik niet het wachtwoord dat in de voorbeeldopdrachten is opgegeven).
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 postgresVoer de volgende opdracht uit (in de SQL-shell die in de vorige stap is geopend):
CREATE ROLE repl_user LOGIN REPLICATION PASSWORD 'replQwerty123';
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 privilegeregel):# replication privilege. host replication repl_user <secondaryIP>/32 md5Start 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"Controleer of de configuratiebestanden de wijzigingen bevatten die je in het
postgres.confhebt aangebracht, en wel als volgt: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 postgresDruk 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');Controleer of je nu de regels kunt zien die zijn toegevoegd aan het
postgresql.conf-bestand onderaan de uitvoer.
Controleer of de configuratiebestanden de wijzigingen bevatten die je in het
pg_hba.confhebt aangebracht, en wel als volgt: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');
Controleer of je nu de regels kunt zien die zijn toegevoegd aan het
pg_hba.conf-bestand onderaan de uitvoer.
Stappen op de secundaire server
BriefCam PostgreSQL installeren.
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"Reinig de gegevensmap als volgt:
Geef de
PostgreSQL_Dataeen andere naam.Maak een nieuwe map met de naam
PostgreSQL_Dataen voeg in het tabblad Machtigingen van de map volledige controle toe aan iedereen.
Voer als volgt een PostgreSQL-basisback-up uit van de primaire naar de secundaire server:
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=standby1Het 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.
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
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 postgresControleer de waarde van de vertraging door de volgende opdracht in de SQL-shell uit te voeren (de
write_lagmoet 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.
Wijzig het hostbestand in alle BC-servers om het <secundaire IP> weer te geven in plaats van <primaire IP>.
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
Maak het
%APPDATA%\postgresql\pgpass.confbestand 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")).tarMaak een map voor back-upbestanden, bijvoorbeeld:
E:\PostgresBackups\.Maak een map voor de bestanden met het back-upscript, bijvoorbeeld:
E:\PostgresBackupScripts\.Maak het back-upscript in:
E:\PostgresBackupScripts\backup.ps1met 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.
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
Hiermee worden alle aangemaakte bestanden verwijderd.
Pas de bewaarperiode van de back-ups aan zoals onderaan stap 4 hierboven wordt vermeld.
Voeg het back-upscript als volgt toe aan de Windows-taakplanner:
Stel het veld Programma/script in op het volgende pad:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
Stel in het veld Argumenten toevoegen het volgende in:
E:\PostgresBackupScripts\backup.ps1
Stel de activeringen en timing dienovereenkomstig in.

Stel in dat de taak wordt uitgevoerd, ongeacht of de gebruiker is aangemeld en sla het wachtwoord op.

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.
Installeer het besturingssysteem helemaal opnieuw.
Voer de stappen uit vanuit de stappen in het gedeelte Primaire server op de huidige primaire server.
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:
Stop de PostgreSQL-service op de server die als primaire server werd gebruikt.
Controleer of het BriefCam -systeem juist werkt.
Voer stappen uit voor het maken van een replica op de server die werd gebruikt als primaire server.