Replikace databáze BriefCam PostgreSQL
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).
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).
Poznamenejte si IP adresu primárního serveru. Později bude v tomto dokumentu označována jako <primaryIP>.
Poznamenejte si IP adresu sekundárního serveru. Později bude v tomto dokumentu označována jako <secondaryIP>.
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
connectionStringv následujících souborech nebo nastaveních:Server VS:
C:\Program Files\BriefCam\BriefCam Server\VSServer.exe.configWebové služby:
C:\Program Files\BriefCam\WebServices\ProWebApi\Web.configQlik (RESEARCH): 64bitové položky ODBC (pole Server)

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.
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.
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.
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.
Použijte skutečnou cestu
PostgreSQL_Dataadresáře. Výchozí BriefCam hodnota jeC:\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).Použijte skutečnou
pgsql.execestu. Výchozí BriefCam hodnota jeC:\PostgreSQL\bin\psql.exe(později v tomto tématu bude použita výchozí BriefCam cesta).
Kroky na primárním serveru
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_Datasložky):C:/PostgreSQL_Data/postgresql.conf C:/PostgreSQL_Data/pg_hba.confZálohujte
configpůvodní soubory ahbasoubory 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"))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
Přidat parametry do
postgres.confsouboru. 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ě podCustomized Optionsčástí):wal_level = replica hot_standby = on hot_standby_feedback = on full_page_writes = on max_wal_senders = 6 max_replication_slots = 6Vytvořte roli/uživatele pro replikaci a nastavte jeho heslo (nepoužívejte heslo zadané v ukázkových příkazech).
Připojte se k SQL shellu primárního PostgreSQL serveru pomocí konzoly PowerShell pomocí příkazu:
C:\PostgreSQL\bin\psql.exe -U dbadmin postgresProveď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';
Přidat parametry do
pg_hba.confsouboru. 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 md5Restartujte 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"Ověřte, zda konfigurační soubory obsahují změny, které jste v
postgres.confsouboru provedli, a to následovně:Připojte se k SQL shellu primárního PostgreSQL serveru pomocí konzoly PowerShell pomocí příkazu:
C:\PostgreSQL\bin\psql.exe -U dbadmin postgresVytiskně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');Ověřte, zda nyní vidíte řádky přidané do
postgresql.confsouboru v dolní části výstupu.
Ověřte, zda konfigurační soubory obsahují změny, které jste v
pg_hba.confsouboru provedli, a to následovně: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");
Ověřte, zda nyní vidíte řádky přidané do
pg_hba.confsouboru v dolní části výstupu.
Kroky na sekundárním serveru
Nainstalujte BriefCamPostgreSQL.
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"Vyčistěte datový adresář následujícím způsobem:
Přejmenujte
PostgreSQL_Datasložku.Vytvořte novou složku s názvem
PostgreSQL_Dataa na kartě Oprávnění složky přidejte úplnou kontrolu ke všem.
Proveďte zálohu základní báze PostgreSQL z primárního na sekundární server následujícím způsobem:
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=standby1Bě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.
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
Připojte se k SQL shellu primárního PostgreSQL serveru pomocí konzoly PowerShell pomocí příkazu:
C:\PostgreSQL\bin\psql.exe -U dbadmin postgresKontrola 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.
Změňte soubor hostitelů ve všech serverech BC tak, aby odrážel <secondaryIP> namísto <primaryIP>.
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
Vytvořte
%APPDATA%\postgresql\pgpass.confsoubor 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")).tarVytvořte složku pro záložní soubory, například:
E:\PostgresBackups\.Vytvořte složku pro záložní soubory skriptů, například
E:\PostgresBackupScripts\:Vytvořte záložní skript v:
E:\PostgresBackupScripts\backup.ps1se 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.
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
Tím se odstraní všechny vytvořené soubory.
Upravte dobu uchování záloh, jak je uvedeno výše v dolní části kroku 4.
Přidejte záložní skript do plánovače úloh systému Windows takto:
Nastavte pole Program/skript na následující cestu:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
V poli Přidat argumenty nastavte následující:
E:\PostgresBackupScripts\backup.ps1
Nastavte spouštěče a odpovídající časování.

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

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.
Nainstalujte operační systém od nuly.
Proveďte kroky z části Kroky na primárním serveru na aktuálním primárním serveru.
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í:
Zastavte službu PostgreSQL na serveru, který byl použit jako primární server.
Ověřte, zda BriefCam systém funguje správně.
Proveďte kroky k vytvoření repliky na serveru, který byl použit jako primární server.