Skip to main content

Instalační příručka systému BriefCam

Replikace databáze BriefCam PostgreSQL

Last Updated: 7 minute read
Verze2024r2
JazykČeština

V této části je popsáno, jak zefektivnit replikaci databáze PostgreSQL.

Požadavky, Poznámky A Konvence

Poznámka

Při vkládání příkazů ze vzorků v tomto dokumentu použijte prostředí Windows PowerShell a ne příkazový řádek (cmd).

  1. Pokud je na primárním serveru dostatek místa, proveďte před vytvořením repliky úplné zálohování databáze (pomocí nástroje pg_dump).

  2. Poznamenejte si IP adresu primárního serveru. Později bude v tomto dokumentu označována jako <primaryIP>.

  3. Poznamenejte si IP adresu sekundárního serveru. Později bude v tomto dokumentu označována jako <secondaryIP>.

  4. Na serveru PGSQL je třeba následující tři BriefCam instalační komponenty nastavit buď na název hostitele, nebo na IP adresu. Ujistěte se, že všechny používají stejnou metodu (pro zajištění konzistence). To provedete tak, že budete hledat PostgreSQL connectionString v následujících souborech nebo nastaveních:

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

    • Webové služby: C:\Program Files\BriefCam\WebServices\ProWebApi\Web.config

    • Qlik (RESEARCH): 64bitové položky ODBC (pole Server)

      ODBC Driver Setup.png
  5. Před vytvořením sekundárního serveru doporučujeme vyzkoušet plnou funkčnost systémů. Ujistěte se, že jste vzali na vědomí všechny původní hodnoty parametrů, které změníte.

  6. Na všech serverech, kde jsou nasazeny komponenty BriefCam Server, nastavte soubor hostitele tak, aby odkazoval na primární databázový server PostgreSQL – přepíše se tak DNS.

  7. V BriefCam Administrator Consoleokně otevřete část Nastavení prostředí a nastavte nastavení DB.LocalStorageAddress a VideoProductsPath tak, aby používaly názvy hostitelů a nikoli IP adresy.

  8. Rychlost zálohy PostgreSQL se výrazně liší v závislosti na nastavení prostředí (rychlost SSD/HDD/NIC). Zpravidla se jedná o úložiště ISCSI (10 Gbps odkazů na HDD pole) a síťovou síťovou kartu (vmxnet3) s rychlostí 1 Gbps ve virtuálním prostředí, které trvá asi 40 minut, než se provede základní zálohování databáze PostgreSQL, která obsahuje 90 GB BriefCam dat.

    Zvažte testování rychlosti na skutečném prostředí, abyste mohli odhadnout, kolik času bude trvat základní zálohování, abyste mohli správně nastavit časový slot pro proces vytvoření repliky.

  9. Použijte skutečnou cestu PostgreSQL_Data adresáře. Výchozí BriefCam hodnota je C:\PostgreSQL_Data. To se však může v různých nastaveních lišit (později v tomto dokumentu bude použita výchozí BriefCam cesta).

  10. Použijte skutečnou pgsql.exe cestu. Výchozí BriefCam hodnota je C:\PostgreSQL\bin\psql.exe (později v tomto tématu bude použita výchozí BriefCam cesta).

Kroky na primárním serveru

  1. Připojte se k primárnímu SQL serveru PostgreSQL a ověřte umístění konfiguračních a hba souborů pomocí následujících příkazů:

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

    Zde je příklad očekávaného výstupu (na základě umístění PostgreSQL_Data složky):

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

  2. Zálohujte config původní soubory a hba soubory spuštěním následujících příkazů v prostředí 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. Ověřte, zda byly záložní soubory vytvořeny provedením následujícího příkazu:

    dir C:/PostgreSQL_Data/*.conf.*

    Očekávaný výstup je:

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

    Adresář: C:\PostgreSQL_Data

    Název časové délky posledního zápisu

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

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

    -A---- 11/10/2021 11:25 AM 23798 Postgresql.conf.20211117T100344Z

  4. Přidat parametry do postgres.conf souboru. To provedete otevřením souboru v textovém editoru a přidáním následujících řádků na konec souboru (těsně pod Customized Options částí):

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

  5. Vytvořte roli/uživatele pro replikaci a nastavte jeho heslo (nepoužívejte heslo zadané v ukázkových příkazech).

    1. Připojte se k SQL shellu primárního PostgreSQL serveru pomocí konzoly PowerShell pomocí příkazu:

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

    2. Proveďte následující příkaz (v prostředí SQL otevřeném v předchozím kroku):

      CREATE ROLE repl_user LOGIN REPLICATION PASSWORD 'replQwerty123';

  6. Přidat parametry do pg_hba.conf souboru. To provedete otevřením souboru v textovém editoru a přidáním následujících řádků do souboru (pod #replication privilege řádkem):

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

  7. Restartujte službu BriefCamPostgreSQL na primárním serveru PostgreSQL otevřením prostředí PowerShell jako správce a spuštěním následujících příkazů:

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

  8. Ověřte, zda konfigurační soubory obsahují změny, které jste v postgres.conf souboru provedli, a to následovně:

    1. Připojte se k SQL shellu primárního PostgreSQL serveru pomocí konzoly PowerShell pomocí příkazu:

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

    2. Vytiskněte vlastní konfigurace přidané do souboru PostgreSQL conf pomocí níže uvedených příkazů prostřednictvím SQL shell:

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

    3. Ověřte, zda nyní vidíte řádky přidané do postgresql.conf souboru v dolní části výstupu.

      Replicating postgresql conf.png
  9. Ověřte, zda konfigurační soubory obsahují změny, které jste v pg_hba.conf souboru provedli, a to následovně:

    1. Připojte se k SQL Shell primárního PostgreSQL serveru pomocí následujících příkazů:

      C:\PostgreSQL\bin\psql.exe - Udbadmin postgres

      \pset pager vypnuto

      VYBERTE soubor pg_read_file("pg_hba.conf");

    2. Ověřte, zda nyní vidíte řádky přidané do pg_hba.conf souboru v dolní části výstupu.

      Replicating pg_hba conf.png

Kroky na sekundárním serveru

  1. Nainstalujte BriefCamPostgreSQL.

  2. Na sekundárním serveru PostgreSQL zastavte službu BriefCamPostgreSQL spuštěním následujících služeb v prostředí PowerShell jako správce:

    net stop "BriefCamPostgreSQL - PostgreSQL Server 10"

  3. Vyčistěte datový adresář následujícím způsobem:

    1. Přejmenujte PostgreSQL_Data složku.

    2. Vytvořte novou složku s názvem PostgreSQL_Data a na kartě Oprávnění složky přidejte úplnou kontrolu ke všem.

      Replicating PostgreSQL properties.png
  4. Proveďte zálohu základní báze PostgreSQL z primárního na sekundární server následujícím způsobem:

    1. Proveďte následující příkaz v prostředí PowerShell jako správce:

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

    2. Během potenciálně dlouhé zálohy databáze se doporučuje zastavit všechny BriefCam služby na všech serverech. Tento krok je možné provést bez zastavení všech služeb v závislosti na velikosti datové sady.

  5. Na sekundárním serveru PostgreSQL spusťte službu BriefCamPostgreSQL spuštěním následujících příkazů v prostředí PowerShell jako správce:

    net start "BriefCamPostgreSQL - PostgreSQL Server 10"

Ověřte operaci replikace

  1. Připojte se k SQL shellu primárního PostgreSQL serveru pomocí konzoly PowerShell pomocí příkazu:

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

  2. Kontrola hodnoty zpoždění spuštěním následujícího příkazu v prostředí SQL (write_laghodnota musí začínat 00:00:00):

    SELECT write_lag,client_addr FROM pg_stat_replication ;

    Toto je příklad očekávaného výstupu:

    Postgres=# VYBERTE Write_lag, Client_Addr Z PG_STAT_replication;

    write_lag | Client_Addr

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

    00:00:00.003972 | 10.30.30.30

    (1 řádek)

    Postgres=#

Poznámka

Tato kontrola musí být provedena alespoň jednou denně.

Aktivovat sekundární server tak, aby fungoval jako primární server

V této části je popsán postup aktivace sekundárního serveru jako primární instance databáze PostgreSQL v případech, kdy je primární server v selhání a je nutné obnovení/migrace.

  1. Změňte soubor hostitelů ve všech serverech BC tak, aby odrážel <secondaryIP> namísto <primaryIP>.

  2. Zkontrolujte stav a propagujte sekundární server PGSQL, aby se stal primárním serverem spuštěním následujících příkazů v konzole PowerShell (ujistěte se, že jste spustili PowerShell v administrátorovi a odpovídajícím způsobem upravili cesty k souboru pg_ctl.exe a složce PostgreSQL_Data):

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

    Výstup vzorku:

    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”

    Výstup vzorku:

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

Vytvoření pravidelné zálohy na sekundárním serveru

PG_DUMP Skripty v Windows Plánovač úloh
  1. Vytvořte %APPDATA%\postgresql\pgpass.conf soubor obsahující přihlašovací údaje databáze (tj. *:5432:*:dbadmin:Qwerty123). Podrobnosti viz: https://www.postgresql.org/docs/10/libpq-pgpass.html a https://www.postgresql.org/docs/10/libpq-envars.html (externí odkazy).

    Pokud výše uvedené nefunguje, heslo skriptů lze zadat na spouštěcím řádku:

    $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. Vytvořte složku pro záložní soubory, například: E:\PostgresBackups\.

  3. Vytvořte složku pro záložní soubory skriptů, napříkladE:\PostgresBackupScripts\:

  4. Vytvořte záložní skript v: E:\PostgresBackupScripts\backup.ps1 se třemi příkazy, jak je znázorněno níže:

    • 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 -Ft -U dbadmin -d briefcam -f e:\PostgresBackups\db_briefcam-$(((get-date).ToUniversalTime()).ToString("yyyyMddTHHmmssZ").tar

    • #ls -file E:\PostgresBackups\db*.tar | kde {get-date) - $_.creationtime -gt.15} | Odstranit-Item – Verbose

    * Výše uvedený 3. příkaz by měl být upraven podle požadované doby uchování zálohy odstraněním znaménka "#" na začátku řádku a úpravou čísla 15, protože představuje počet dnů vzad. Pokud chcete například nakonfigurovat skript tak, aby odstranil všechny soubory starší než 7 dnů, museli byste změnit číslo 15 na 7.

  5. Testujte vytvoření zálohy a odstranění starých souborů nastavením -gt na 0 a spusťte následující příkaz v systému Windows cmd:

    powershell.exe e:\PostgresBackupScripts\backup.ps1

    Replicating PostgresBackupScripts.png

    Tím se odstraní všechny vytvořené soubory.

  6. Upravte dobu uchování záloh, jak je uvedeno výše v dolní části kroku 4.

  7. Přidejte záložní skript do plánovače úloh systému Windows takto:

    1. Nastavte pole Program/skript na následující cestu:

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

    2. V poli Přidat argumenty nastavte následující: E:\PostgresBackupScripts\backup.ps1

      Replicating add arguments.png
  8. Nastavte spouštěče a odpovídající časování.

    Replicating set triggers.png
  9. Nastavte úlohu tak, aby se spustila bez ohledu na to, zda je uživatel přihlášen a uložil heslo.

    Replicating task scheduler.png
  10. Na testovacím serveru zkontrolujte, zda jsou soubory obnovitelné. Tento test by měl být součástí vaší běžné rutiny.

Zde je příklad příkazu obnovení:

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

Parametr -c provádí drop a create. Pro další možnosti viz:

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

Po Opravě Se Vrátit K Primárnímu Serveru

Pokud jste používali sekundární server, protože došlo k problému s primárním serverem, tato část popisuje, jak se po odstranění problému vrátit k primárnímu serveru.

Poznámka

Podrobnosti procesu níže se mohou lišit v závislosti na druhu selhání primárního serveru. Chcete-li zvážit nejzávažnější případ (absolutní selhání primárního serveru), níže uvedené kroky zahrnují novou instalaci.

  1. Nainstalujte operační systém od nuly.

  2. Proveďte kroky z části Kroky na primárním serveru na aktuálním primárním serveru.

  3. Proveďte všechny akce popsané v částech níže na serverech s ohledem na to, že přeinstalovaný server je nyní technicky "sekundární" instancí:

  4. Zastavte službu PostgreSQL na serveru, který byl použit jako primární server.

  5. Ověřte, zda BriefCam systém funguje správně.

  6. Proveďte kroky k vytvoření repliky na serveru, který byl použit jako primární server.