Replikerer BriefCam PostgreSQL-databasen
Dette afsnit beskriver, hvordan man strømliner replikeringen af PostgreSQL-databasen.
Forudsætninger, noter og konventioner
Bemærk
Brug Windows PowerShell og ikke kommandoprompt (cmd), når du indsætter kommandoer fra prøverne i dette dokument.
Hvis der er tilstrækkelig plads på den primære server, skal du udføre en fuld sikkerhedskopiering af databasen (med værktøjet pg_dump), før du prøver at oprette replikaen.
Noter den primære servers IP-adresse. Senere i dette dokument vil det blive refereret til som <primaryIP>.
Noter den sekundære servers IP-adresse. Senere i dette dokument vil det blive kaldt <secondaryIP>.
I PGSQL-serveren skal de følgende tre BriefCam installationskomponenter alle indstilles til enten værtsnavnet eller IP-adressen. Sørg for at de alle bruger den samme metode (for at sikre konsistens). Det gør du ved at lede efter PostgreSQL
connectionStringi følgende filer eller indstillinger:VS-server:
C:\Program Files\BriefCam\BriefCam Server\VSServer.exe.configWebtjenester:
C:\Program Files\BriefCam\WebServices\ProWebApi\Web.configQlik (RESEARCH): ODBC 64-bit-poster (Server-felt)

Det anbefales at teste systemernes fulde funktionalitet, før du opretter den sekundære server. Sørg for at være opmærksom på alle de oprindelige værdier for de parametre, du ændrer.
På alle de servere, hvor BriefCam Server-komponenterne er installeret, skal du indstille værtsfilen til at pege på den primære PostgreSQL-databaseserver – dette vil tilsidesætte DNS.
I sektionen BriefCam Administrator ConsoleÅbn Miljøindstillinger, og indstil DB.LocalStorageAddress- og VideoProductsPath-indstillingerne til at bruge værtsnavne og ikke IP-adresser.
Hastigheden af PostgreSQL base_backup varierer betydeligt afhængigt af opsætningen af miljøet (SSD/HDD/NIC hastighed). Som en tommelfingerregel tager det på ISCSI-storage (10 Gbps links HDD array) og 1 Gbps netværkskort (vmxnet3) i et virtuelt miljø ca. 40 minutter at udføre en grundlæggende sikkerhedskopiering af PostgreSQL-databasen, der indeholder 90 GB BriefCam data.
Overvej at teste hastigheden på det faktiske miljø for at kunne estimere, hvor lang tid basissikkerhedskopien vil tage for at kunne indstille tidsrummet for processen med at oprette replikaen korrekt.
Brug den faktiske sti til
PostgreSQL_Datamappen. Standard BriefCam erC:\PostgreSQL_Data. Dette kan imidlertid variere i forskellige opsætninger (senere i dette dokument vil standardstien BriefCam blive brugt).Brug den faktiske
pgsql.exesti. Standardstien BriefCam erC:\PostgreSQL\bin\psql.exe(senere i dette afsnit bruges standardstienBriefCam).
Trin på den primære server
Opret forbindelse til den primære PostgreSQL server sql shell og kontroller placeringen af konfigurations- og hba-filer ved at udføre følgende kommandoer:
C:\PostgreSQL\bin\psql.exe -U dbadmin postgres SHOW config_file; SHOW hba_file;Her er et eksempel på det forventede output (baseret på placeringen af
PostgreSQL_Datamappen):C:/PostgreSQL_Data/postgresql.conf C:/PostgreSQL_Data/pg_hba.confSikkerhedskopier de oprindelige
configfiler oghbafilerne ved at udføre følgende kommandoer 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"))Kontroller, at sikkerhedskopifilerne blev oprettet ved at udføre følgende kommando:
dir C:/PostgreSQL_Data/*.conf.*Det forventede output er:
PS C:\Users\Administrator> mappe C:/PostgreSQL_Data/*.conf.*
Mappe: C:\PostgreSQL_Data
Navn på LastWriteTime-længde for tilstand
---- ------------- ------ ----
-a---- 11/10/2021 11:22 AM 4374 pg_hba.conf.20211117T100109Z
-a---- 11/10/2021 11:25 AM 23798 postgresql.conf.20211117T100344Z
Føj parametre til
postgres.conffilen. Det gør du ved at åbne filen i et tekstredigeringsprogram og tilføje følgende linjer i slutningen af filen (lige underCustomized Optionssektionen):wal_level = replica hot_standby = on hot_standby_feedback = on full_page_writes = on max_wal_senders = 6 max_replication_slots = 6Opret en rolle/bruger til replikering og indstil dens adgangskode (brug ikke adgangskoden, der er angivet i eksempelkommandoerne).
Opret forbindelse til den primære PostgreSQL-servers SQL shell via PowerShell-konsollen ved hjælp af kommandoen:
C:\PostgreSQL\bin\psql.exe -U dbadmin postgresUdfør følgende kommando (i den SQL-shell, der blev åbnet i det forrige trin):
CREATE ROLE repl_user LOGIN REPLICATION PASSWORD 'replQwerty123';
Føj parametre til
pg_hba.conffilen. Det gør du ved at åbne filen i et tekstredigeringsprogram og føje følgende linjer til filen (under#replication privilegelinjen):# replication privilege. host replication repl_user <secondaryIP>/32 md5Genstart BriefCamPostgreSQL-tjenesten på den primære PostgreSQL-server ved at åbne PowerShell som administrator og køre følgende kommandoer:
net stop "BriefCamPostgreSQL - PostgreSQL Server 10" net start "BriefCamPostgreSQL - PostgreSQL Server 10"Kontroller, at konfigurationsfilerne indeholder de ændringer, du foretog i
postgres.conffilen, på følgende måde:Opret forbindelse til den primære PostgreSQL-servers SQL shell via PowerShell-konsollen ved hjælp af kommandoen:
C:\PostgreSQL\bin\psql.exe -U dbadmin postgresUdskriv de brugerdefinerede konfigurationer, der er føjet til PostgreSQL conf-filen ved hjælp af kommandoerne nedenfor via SQL shell:
\pset pager off SELECT pg_read_file('postgresql.conf');Kontroller, at du nu kan se de linjer, der er føjet til
postgresql.conffilen nederst i outputtet.
Kontroller, at konfigurationsfilerne indeholder de ændringer, du foretog i
pg_hba.conffilen, på følgende måde:Opret forbindelse til den primære PostgreSQL-servers SQL Shell ved at udføre følgende kommandoer:
C:\PostgreSQL\bin\psql.exe -U dbadmin postgres
\pset personsøger fra
VÆLG pg_read_file('pg_hba.conf');
Kontroller, at du nu kan se de linjer, der er føjet til
pg_hba.conffilen nederst i outputtet.
Trin på den sekundære server
Installer BriefCamPostgreSQL.
På den sekundære PostgreSQL-server skal du stoppe BriefCamPostgreSQL-tjenesten ved at køre følgende i PowerShell som administrator:
net stop "BriefCamPostgreSQL - PostgreSQL Server 10"Rens datamappen på følgende måde:
Omdøb
PostgreSQL_Datamappen.Opret en ny mappe med navnet
PostgreSQL_Dataog tilføj Fuld kontrol til Alle på fanen Tilladelser.
Udfør en PostgreSQL-basissikkerhedskopi fra den primære til den sekundære server på følgende måde:
Udfør følgende kommando i PowerShell som administrator:
c:\PostgreSQL\bin\pg_basebackup -h <primaryIP> -U repl_user --checkpoint=fast -D C:\PostgreSQL_Data -R TBD #--slot=standby1Det anbefales at stoppe alle BriefCam tjenester på alle serverne under den potentielt lange sikkerhedskopiering af databasen. Det er muligt at udføre dette trin uden at stoppe alle tjenester, afhængigt af datasættets størrelse.
På den sekundære PostgreSQL-server skal du starte BriefCamPostgreSQL-tjenesten ved at udføre følgende kommandoer i PowerShell som administrator:
net start "BriefCamPostgreSQL - PostgreSQL Server 10"
Bekræft replikeringshandlingen
Opret forbindelse til den primære PostgreSQL-servers SQL shell via PowerShell-konsollen ved hjælp af kommandoen:
C:\PostgreSQL\bin\psql.exe -U dbadmin postgresKontroller lag-værdien ved at køre følgende kommando i SQL shell (
write_lagværdien skal begynde med 00:00:00):SELECT write_lag,client_addr FROM pg_stat_replication ;Dette er et eksempel på det forventede output:
postgres=# VÆLG write_lag,client_addr FRA pg_stat_replication ;
write_lag | client_addr
-----------------+-------------
00:00:00.003972 | 10.30.30.30
(1 række)
postgres=#
Bemærk
Denne kontrol skal udføres mindst en gang om dagen.
Aktiver den sekundære server for at fungere som primær server
Dette afsnit beskriver proceduren for aktivering af den sekundære server som den primære instans af PostgreSQL-databasen i tilfælde, hvor den primære er defekt og gendannelse/migrering er nødvendig.
Skift værtsfilen i alle BC-servere, så den afspejler <secondaryIP> i stedet for <primaryIP>.
Kontroller status og forfremme den sekundære server PGSQL til at blive den primære server ved at køre følgende kommandoer i PowerShell-konsollen (sørg for at køre PowerShell i administrator, og at redigere stierne til pg_ctl.exe-filen og mappen PostgreSQL_Data i overensstemmelse hermed):
c:\PostgreSQL\bin\pg_ctl.exe status -D ”C:\PostgreSQL_Data”
Eksempeloutput:
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”
Eksempeloutput:
waiting for server to promote.... done server promoted
Opret periodisk sikkerhedskopi på den sekundære server
PG_DUMP-scripts i Windows Opgavestyring
Opret
%APPDATA%\postgresql\pgpass.conffilen, der indeholder legitimationsoplysningerne til databasekontrollen (dvs.:*:5432:*:dbadmin:Qwerty123). For flere oplysninger, se: https://www.postgresql.org/docs/10/libpq-pgpass.html og https://www.postgresql.org/docs/10/libpq-envars.html (eksterne links).Hvis ovenstående ikke virker, kan scriptenes adgangskode angives på eksekveringslinjen:
$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")).tarOpret en mappe til sikkerhedskopifiler, for eksempel:
E:\PostgresBackups\.Opret en mappe til scriptfilerne til sikkerhedskopiering, for eksempel:
E:\PostgresBackupScripts\.Opret sikkerhedskopi-scriptet på:
E:\PostgresBackupScripts\backup.ps1med de tre kommandoer, som vist nedenfor: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("yyyMMddTHHmssZ").tar
#ls -file E:\PostgresBackups\db*.tar | hvor {(get-date) - $_.creationtime -gt 15.} | Remove-Item –Verbose
*Den 3. kommando herover skal justeres i henhold til den krævede opbevaringsperiode for sikkerhedskopiering ved at fjerne "#"-tegnet i starten af linjen og ændre tallet 15, da det repræsenterer antallet af dage bagud. Eksempel: Hvis du ønsker at konfigurere scriptet til at slette alle filer, der er ældre end 7 dage, skal du ændre tallet 15 til 7.
Test oprettelsen af sikkerhedskopien og fjernelsen af de gamle filer ved at indstille -gt til 0 og kør følgende kommando i Windows cmd:
powershell.exe e:\PostgresBackupScripts\backup.ps1
Dette vil fjerne alle de oprettede filer.
Tilpas opbevaringstiden for sikkerhedskopieringerne som nævnt nederst i trin 4 ovenfor.
Føj sikkerhedskopieringsscriptet til Windows Opgavestyring på følgende måde:
Indstil feltet Program/script til følgende sti:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
I feltet Tilføj argumenter skal du indstille følgende:
E:\PostgresBackupScripts\backup.ps1
Indstil udløserne og timingen derefter.

Indstil opgaven til at køre, uanset om brugeren er logget på og gem adgangskoden.

På en testserver skal du kontrollere, om filerne kan gendannes. Denne test bør være en del af din igangværende rutine.
Her er et eksempel på gendannelseskommandoen:
C:\PostgreSQL\bin\pg_restore.exe -c -v -U dbadmin -d briefcam -F t e:\PostgresBackups\db_briefcam-20211122T122052Z.tar
Parameteren -c udfører slip og opret. For yderligere indstillinger, se:
“C:\PostgreSQL\bin\pg_restore.exe --help”
Gendan Den Primære Server, Når Den Er Fast
Hvis du brugte en sekundær server, fordi der var et problem med den primære server, beskriver dette afsnit, hvordan du vender tilbage til den primære server, når problemet er løst.
Bemærk
Detaljerne om processen herunder kan variere afhængigt af, hvilken type fejl den primære server har været udsat for. For at tage højde for det alvorligste tilfælde (et absolut nedbrud på den primære server), inkluderer trinnene nedenfor en ny installation.
Installer operativsystemet fra bunden.
Udfør trinene fra Trin på den primære server-sektionen på den aktuelle primære server.
Udfør alle de handlinger, der er beskrevet i afsnittene nedenfor, på serverne i betragtning af, at serveren, der blev geninstalleret, nu teknisk set er den "sekundære" instans:
Stop PostgreSQL-tjenesten på den server, der blev brugt som den primære server.
Kontroller, at BriefCam systemet fungerer korrekt.
Udfør trin til oprettelse af en replika på den server, der blev brugt som den primære server.