Skip to main content

Installationsguide för BriefCam

Replikera BriefCam PostgreSQL-databasen

Last Updated: 7 minute read
Version2024r2
SpråkSvenska

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.

  1. 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.

  2. Notera den primära serverns IP-adress. Senare i detta dokument kommer det att kallas <primaryIP>.

  3. Notera den sekundära serverns IP-adress. Senare i detta dokument kommer det att kallas <secondaryIP>.

  4. 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 connectionString i följande filer eller inställningar:

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

    • Webbtjänster: C:\Program Files\BriefCam\WebServices\ProWebApi\Web.config

    • Qlik (RESEARCH): ODBC 64-bitarsposter (serverfält)

      ODBC Driver Setup.png
  5. 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.

  6. 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.

  7. 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.

  8. 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.

  9. Använd den faktiska sökvägen för PostgreSQL_Data katalogen. Som BriefCam standard är C:\PostgreSQL_Data. Detta kan dock variera i olika inställningar (senare i detta dokument används BriefCam standardsökvägen).

  10. Använd den faktiska pgsql.exe sökvägen. Som BriefCam standard används C:\PostgreSQL\bin\psql.exe (senare i detta avsnitt används BriefCam standardsökvägen).

Gör så här på den primära servern

  1. 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_Data mappens plats):

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

  2. Säkerhetskopiera original config och hba filer 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"))

  3. 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

  4. Lägg till parametrar till postgres.conf filen. Du gör detta genom att öppna filen i en textredigerare och lägga till följande rader i slutet av filen (precis under Customized Options avsnittet):

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

  5. Skapa en roll/användare för replikering och ange dess lösenord (använd inte lösenordet som angetts i exempelkommandona).

    1. Anslut till den primära PostgreSQL-serverns SQL-skal via PowerShell-konsolen med kommandot:

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

    2. Kör följande kommando (i SQL-skalet som öppnades i föregående steg):

      CREATE ROLE repl_user LOGIN REPLICATION PASSWORD 'replQwerty123';

  6. Lägg till parametrar till pg_hba.conf filen. Du gör detta genom att öppna filen i en textredigerare och lägga till följande rader i filen (under #replication privilege raden):

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

  7. Starta 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"

  8. Verifiera att konfigurationsfilerna innehåller de ändringar du gjort i postgres.conf filen enligt följande:

    1. Anslut till den primära PostgreSQL-serverns SQL-skal via PowerShell-konsolen med kommandot:

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

    2. Skriv ut anpassade konfigurationer tillagda i PostgreSQL conf-filen med kommandona nedan via SQL-gränssnittet:

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

    3. Verifiera att du nu kan se raderna tillagda i postgresql.conf filen längst ner i utdatan.

      Replicating postgresql conf.png
  9. Verifiera att konfigurationsfilerna innehåller de ändringar du gjort i pg_hba.conf filen enligt följande:

    1. 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');

    2. Verifiera att du nu kan se raderna tillagda i pg_hba.conf filen längst ner i utdatan.

      Replicating pg_hba conf.png

Gör så här på den sekundära servern

  1. Installera BriefCamPostgreSQL.

  2. 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"

  3. Rengör datakatalogen så här:

    1. Byt namn på PostgreSQL_Data mappen.

    2. Skapa en ny mapp med namnet PostgreSQL_Data och lägg till full kontroll till Alla på fliken Behörigheter i mappen.

      Replicating PostgreSQL properties.png
  4. Utför en PostgreSQL-bassäkerhetskopia från den primära till den sekundära servern så här:

    1. 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=standby1

    2. Det 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.

  5. 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

  1. Anslut till den primära PostgreSQL-serverns SQL-skal via PowerShell-konsolen med kommandot:

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

  2. Kontrollera 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.

  1. Ändra värdfilen i alla BC-servrar för att återspegla <sekundär IP> istället för <primär IP>.

  2. 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
  1. Skapa %APPDATA%\postgresql\pgpass.conf filen 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")).tar

  2. Skapa en mapp för backup-filer, till exempel: E:\PostgresBackups\.

  3. Skapa en mapp för backup-skriptfilerna, till exempel: E:\PostgresBackupScripts\.

  4. Skapa säkerhetskopieringsskriptet vid: E:\PostgresBackupScripts\backup.ps1 med 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.

  5. 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

    Replicating PostgresBackupScripts.png

    Detta kommer att ta bort alla filer skapade.

  6. Justera lagringsperioden för säkerhetskopiorna enligt beskrivningen i nederkant av steg 4 ovan.

  7. Lägg till säkerhetskopieringsskriptet till Windows aktivitetsschemaläggare så här:

    1. Ställ in fältet Program/skript till följande sökväg:

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

    2. I fältet Lägg till argument ställer du in följande: E:\PostgresBackupScripts\backup.ps1

      Replicating add arguments.png
  8. Ställ in utlösare och timing därefter.

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

    Replicating task scheduler.png
  10. 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.

  1. Installera operativsystemet från början.

  2. Utför stegen från stegen på avsnittet Primär server på den aktuella primära servern.

  3. 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:

  4. Stoppa PostgreSQL-tjänsten på servern som användes som primär server.

  5. Verifiera att BriefCam systemet fungerar som det ska.

  6. Utför steg för att skapa en replik på servern som användes som primär server.