Replikera BriefCam PostgreSQL-databasen
I det här avsnittet beskrivs hur du effektiviserar replikeringen av PostgreSQL-databasen.
Förutsättningar, Anteckningar och Konventioner
Notera
Använd Windows PowerShell och inte kommandotolken (cmd) medan du klistrar in kommandon från exemplen i det här dokumentet.
Om det finns tillräckligt med utrymme på den primära servern bör du göra en fullständig säkerhetskopia av databasen (med hjälp av verktyget pg_dump) innan du försöker skapa repliken.
Notera den primära serverns IP-adress. Senare i detta dokument kommer det att kallas <primaryIP>.
Notera den sekundära serverns IP-adress. Senare i detta dokument kommer det att kallas <secondaryIP>.
I PGSQL-servern måste alla följande tre BriefCam installationskomponenter konfigureras som antingen värdnamn eller IP-adress. Se till att de alla använder samma metod (för att säkerställa enhetlighet). Du gör detta genom att söka efter PostgreSQL
connectionStringi följande filer eller inställningar:VS-server:
C:\Program Files\BriefCam\BriefCam Server\VSServer.exe.configWebbtjänster:
C:\Program Files\BriefCam\WebServices\ProWebApi\Web.configQlik (RESEARCH): ODBC 64-bitarsposter (serverfält)

Det rekommenderas att testa systemens fullständiga funktionalitet innan den sekundära servern skapas. Se till att notera alla originalvärden för de parametrar du ändrar.
På alla servrar där BriefCam Server-komponenterna är distribuerade, ställ in värdfilen att peka på den primära PostgreSQL-databasservern – detta kommer att åsidosätta DNS.
I BriefCam Administrator Console, öppna avsnittet Miljöinställningar och ställ in inställningarna DB.LocalStorageAddress och VideoProductsPath att använda värdnamn och inte IP-adresser.
Hastigheten på PostgreSQL base_backup varierar betydligt beroende på miljökonfigurationen (SSD-/HDD-/NIC-hastighet). Som tumregel, på en ISCSI-lagring (10 Gbps länkar hårddiskmatrisen) och 1 Gbps nätverkskort (vmxnet3) i en virtuell miljö tar det cirka 40 minuter att utföra en basbackup av PostgreSQL-databasen som innehåller 90 GB BriefCam data.
Överväg att testa hastigheten på den faktiska miljön för att kunna uppskatta hur lång tid bassäkerhetskopieringen kommer att ta för att kunna ställa in tidsluckan för replikeringsprocessen på rätt sätt.
Använd den faktiska sökvägen för
PostgreSQL_Datakatalogen. Som BriefCam standard ärC:\PostgreSQL_Data. Detta kan dock variera i olika inställningar (senare i detta dokument används BriefCam standardsökvägen).Använd den faktiska
pgsql.exesökvägen. Som BriefCam standard användsC:\PostgreSQL\bin\psql.exe(senare i detta avsnitt används BriefCam standardsökvägen).
Gör så här på den primära servern
Anslut till det primära PostgreSQL-serverns SQL-skal och verifiera platsen för config- och hba-filerna genom att köra följande kommandon:
C:\PostgreSQL\bin\psql.exe -U dbadmin postgres SHOW config_file; SHOW hba_file;Här är ett exempel på förväntad utdata (baserat på
PostgreSQL_Datamappens plats):C:/PostgreSQL_Data/postgresql.conf C:/PostgreSQL_Data/pg_hba.confSäkerhetskopiera original
configochhbafiler genom att köra följande kommandon i 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"))Verifiera att backup-filerna skapades genom att köra följande kommando:
dir C:/PostgreSQL_Data/*.conf.*Förväntad utdata är:
PS C:\Users\Administrator> dir C:/PostgreSQL_Data/*.conf.*
Katalog: C:\PostgreSQL_Data
Namn på LastWriteTime-längd för läge
---- ------------- ------ ----
-a---- 11/10/2021 11:22 AM 4374 pg_hba.conf.20211117T100109Z
-a---- 11/10/2021 11:25 AM 23798 postgresql.conf.20211117T100344Z
Lägg till parametrar till
postgres.conffilen. Du gör detta genom att öppna filen i en textredigerare och lägga till följande rader i slutet av filen (precis underCustomized Optionsavsnittet):wal_level = replica hot_standby = on hot_standby_feedback = on full_page_writes = on max_wal_senders = 6 max_replication_slots = 6Skapa en roll/användare för replikering och ange dess lösenord (använd inte lösenordet som angetts i exempelkommandona).
Anslut till den primära PostgreSQL-serverns SQL-skal via PowerShell-konsolen med kommandot:
C:\PostgreSQL\bin\psql.exe -U dbadmin postgresKör följande kommando (i SQL-skalet som öppnades i föregående steg):
CREATE ROLE repl_user LOGIN REPLICATION PASSWORD 'replQwerty123';
Lägg till parametrar till
pg_hba.conffilen. Du gör detta genom att öppna filen i en textredigerare och lägga till följande rader i filen (under#replication privilegeraden):# replication privilege. host replication repl_user <secondaryIP>/32 md5Starta om BriefCamPostgreSQL-tjänsten på den primära PostgreSQL-servern genom att öppna PowerShell som en administratör och köra följande kommandon:
net stop "BriefCamPostgreSQL - PostgreSQL Server 10" net start "BriefCamPostgreSQL - PostgreSQL Server 10"Verifiera att konfigurationsfilerna innehåller de ändringar du gjort i
postgres.conffilen enligt följande:Anslut till den primära PostgreSQL-serverns SQL-skal via PowerShell-konsolen med kommandot:
C:\PostgreSQL\bin\psql.exe -U dbadmin postgresSkriv ut anpassade konfigurationer tillagda i PostgreSQL conf-filen med kommandona nedan via SQL-gränssnittet:
\pset pager off SELECT pg_read_file('postgresql.conf');Verifiera att du nu kan se raderna tillagda i
postgresql.conffilen längst ner i utdatan.
Verifiera att konfigurationsfilerna innehåller de ändringar du gjort i
pg_hba.conffilen enligt följande:Anslut till den primära PostgreSQL-serverns SQL Shell genom att köra följande kommandon:
C:\PostgreSQL\bin\psql.exe -U dbadmin postgres
\pset pager av
VÄLJ pg_read_file('pg_hba.conf');
Verifiera att du nu kan se raderna tillagda i
pg_hba.conffilen längst ner i utdatan.
Gör så här på den sekundära servern
Installera BriefCamPostgreSQL.
På den sekundära PostgreSQL-servern, stoppa BriefCamPostgreSQL-tjänsten genom att köra följande i PowerShell som en administratör:
net stop "BriefCamPostgreSQL - PostgreSQL Server 10"Rengör datakatalogen så här:
Byt namn på
PostgreSQL_Datamappen.Skapa en ny mapp med namnet
PostgreSQL_Dataoch lägg till full kontroll till Alla på fliken Behörigheter i mappen.
Utför en PostgreSQL-bassäkerhetskopia från den primära till den sekundära servern så här:
Kör följande kommando i PowerShell som administratör:
c:\PostgreSQL\bin\pg_basebackup -h <primaryIP> -U repl_user --checkpoint=fast -D C:\PostgreSQL_Data -R TBD #--slot=standby1Det rekommenderas att stoppa alla BriefCam tjänster på alla servrar under den potentiellt långa säkerhetskopieringen av databasen. Det är möjligt att utföra detta steg utan att stoppa alla tjänster, beroende på datauppsättningens storlek.
På den sekundära PostgreSQL-servern, starta BriefCamPostgreSQL-tjänsten genom att köra följande kommandon i PowerShell som administratör:
net start "BriefCamPostgreSQL - PostgreSQL Server 10"
Verifiera replikeringsåtgärden
Anslut till den primära PostgreSQL-serverns SQL-skal via PowerShell-konsolen med kommandot:
C:\PostgreSQL\bin\psql.exe -U dbadmin postgresKontrollera fördröjningsvärdet genom att köra följande kommando i SQL-gränssnittet (
write_lagvärdet måste börja med 00:00:00):SELECT write_lag,client_addr FROM pg_stat_replication ;Detta är ett exempel på förväntad utdata:
postgres=# VÄLJ write_lag,client_addr FRÅN pg_stat_replication ;
write_lag | client_addr
-----------------+-------------
00:00:00.003972 | 10.30.30.30
(1 rad)
postgres=#
Notera
Denna kontroll måste utföras minst en gång per dag.
Aktivera den sekundära servern för att fungera som primär server
I det här avsnittet beskrivs proceduren för att aktivera den sekundära servern som primär instans av PostgreSQL-databasen i fall där den primära servern har fel och återställning/migrering krävs.
Ändra värdfilen i alla BC-servrar för att återspegla <sekundär IP> istället för <primär IP>.
Kontrollera status och befordra den sekundära servern PGSQL till primär server genom att köra följande kommandon i PowerShell-konsolen (se till att köra PowerShell i administratör och redigera sökvägarna till filen pg_ctl.exe och mappen PostgreSQL_Data i enlighet med detta):
c:\PostgreSQL\bin\pg_ctl.exe status -D ”C:\PostgreSQL_Data”
Exempelutdata:
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”
Exempelutdata:
waiting for server to promote.... done server promoted
Skapa periodisk säkerhetskopiering på den sekundära servern
PG_DUMP-skript i Windows Schemaläggare
Skapa
%APPDATA%\postgresql\pgpass.conffilen som innehåller db-autentiseringsuppgifterna (d.v.s.:*:5432:*:dbadmin:Qwerty123). För detaljer, se https://www.postgresql.org/docs/10/libpq-pgpass.html och https://www.postgresql.org/docs/10/libpq-envars.html (externa länkar).Om ovanstående inte fungerar kan lösenordet för skripten anges på körningsraden:
$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")).tarSkapa en mapp för backup-filer, till exempel:
E:\PostgresBackups\.Skapa en mapp för backup-skriptfilerna, till exempel:
E:\PostgresBackupScripts\.Skapa säkerhetskopieringsskriptet vid:
E:\PostgresBackupScripts\backup.ps1med de tre kommandona som visas nedan:c:\PostgreSQL\bin\pg_dump.exe -F t -U dbadmin -d postgres -f e:\PostgresBackups\db_postgres-$(((get-date).ToUniversalTime()).ToString(”yyyyMMddTHMSSZ”).tar
c:\PostgreSQL\bin\pg_dump.exe -F t -U dbadmin -d briefcam -f e:\PostgresBackups\db_briefcam-$(((get-date).ToUniversalTime()).ToString(”yyyyMMddTHMSSZ”).tar
#ls -file E:\PostgresBackups\db*.tar | where {(get-date) - $_.creationtime -gt 15.} | Remove-Item –Verbose
*Det tredje kommandot ovan bör justeras enligt önskad lagringsperiod för backup genom att ta bort ”#”-tecknet i början av raden och modifiera talet 15 som det representerar antalet dagar bakåt. Till exempel, om du vill konfigurera skriptet att radera alla filer som är äldre än 7 dagar, måste du ändra nummer 15 till 7.
Testa säkerhetskopieringen och borttagningen av de gamla filerna genom att sätta -gt till 0 och kör följande kommando i Windows cmd:
powershell.exe e:\PostgresBackupScripts\backup.ps1
Detta kommer att ta bort alla filer skapade.
Justera lagringsperioden för säkerhetskopiorna enligt beskrivningen i nederkant av steg 4 ovan.
Lägg till säkerhetskopieringsskriptet till Windows aktivitetsschemaläggare så här:
Ställ in fältet Program/skript till följande sökväg:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
I fältet Lägg till argument ställer du in följande:
E:\PostgresBackupScripts\backup.ps1
Ställ in utlösare och timing därefter.

Ställ in aktiviteten att köras oavsett om användaren är inloggad eller inte och spara lösenordet.

På en testserver, kontrollera om filerna går att återställa. Testet ska vara en del av din pågående rutin.
Här är ett exempel på återställningskommandot:
C:\PostgreSQL\bin\pg_restore.exe -c -v -U dbadmin -d briefcam -F t e:\PostgresBackups\db_briefcam-20211122T122052Z.tar
Parametern -c utför drop and create. För ytterligare alternativ, se:
“C:\PostgreSQL\bin\pg_restore.exe --help”
Återställ till Primär Server Efter att Den Har Åtgärdats
Om du använde en sekundär server för att det var problem med den primära servern, beskrivs i detta avsnitt hur du återgår till den primära servern när problemet är åtgärdat.
Notera
Detaljerna för processen nedan kan variera beroende på vilken typ av fel den primära servern drabbats av. För att överväga det allvarligaste fallet (en absolut krasch av den primära servern) inkluderar stegen nedan en ny installation.
Installera operativsystemet från början.
Utför stegen från stegen på avsnittet Primär server på den aktuella primära servern.
Utför alla åtgärder som beskrivs i avsnitten nedan på servrarna, med tanke på att servern som installerades om nu tekniskt sett är den ”sekundära” instansen:
Stoppa PostgreSQL-tjänsten på servern som användes som primär server.
Verifiera att BriefCam systemet fungerar som det ska.
Utför steg för att skapa en replik på servern som användes som primär server.