Reproducerea bazei de date BriefCam PostgreSQL
Această secțiune detaliază modul de eficientizare a replicării bazei de date PostgreSQL.
Cerințe preliminare, note și convenții
Notă
Utilizați Windows PowerShell și nu Command Prompt (cmd) în timpul lipirii comenzilor din eșantioanele din acest document.
Dacă spațiul principal al serverului este suficient, efectuați o copie de rezervă completă a bazei de date (utilizând instrumentul pg_dump) înainte de a încerca să creați reproducerea.
Notați adresa IP a serverului principal. Mai târziu, în acest document, va fi denumit <primaryIP>.
Notați adresa IP a serverului secundar. Mai târziu, în acest document, va fi denumit <secondaryIP>.
În serverul PGSQL, următoarele trei BriefCam componente de instalare trebuie să fie setate la numele gazdei sau la adresa IP. Asigurați-vă că toate utilizează aceeași metodă (pentru a asigura coerența). Puteți face acest lucru căutând PostgreSQL
connectionStringîn următoarele fișiere sau setări:Server VS:
C:\Program Files\BriefCam\BriefCam Server\VSServer.exe.configServicii Web:
C:\Program Files\BriefCam\WebServices\ProWebApi\Web.configQlik (RESEARCH): înregistrări ODBC pe 64 de biți (câmpul Server)

Se recomandă testarea funcționalității complete a sistemelor înainte de crearea serverului secundar. Asigurați-vă că ați luat notă de toate valorile originale ale parametrilor pe care îi modificați.
Pe toate serverele pe care sunt implementate componentele BriefCam Server, setați fișierul gazdă să indice către serverul bază de date PostgreSQL principal - acest lucru va înlocui DNS.
În BriefCam Administrator Console, deschideți secțiunea Setări de mediu și setați setările DB.LocalStorageAddress și VideoProductsPath pentru a utiliza nume de gazdă și nu adrese IP.
Viteza PostgreSQL base_backup variază semnificativ în funcție de configurația mediului (viteza SSD/HDD/NIC). Ca regulă generală, pe o stocare ISCSI (matrice HDD cu legături de 10 Gbps) și o placă de rețea de 1 Gbps (vmxnet3) într-un mediu virtual, durează aproximativ 40 de minute să efectuați o copie de rezervă de bază a bazei de date PostgreSQL care conține 90 GB de BriefCam date.
Luați în considerare testarea vitezei pe mediul real pentru a putea estima cât timp va dura backupul de bază pentru a putea seta în mod corespunzător intervalul de timp pentru procesul de creare a replicilor.
Utilizați calea reală a
PostgreSQL_Datadirectorului. Valoarea BriefCam implicită esteC:\PostgreSQL_Data. Totuși, această opțiune poate varia în funcție de configurație (ulterior, în acest document, BriefCam va fi utilizată calea implicită).Utilizați
pgsql.execalea reală. Valoarea BriefCam implicită esteC:\PostgreSQL\bin\psql.exe(mai târziu în acest subiect, BriefCam va fi utilizată calea implicită).
Pași pe serverul principal
Conectați-vă la serverul SQL PostgreSQL shell principal și verificați locația fișierelor config și HBA executând următoarele comenzi:
C:\PostgreSQL\bin\psql.exe -U dbadmin postgres SHOW config_file; SHOW hba_file;Iată un exemplu de ieșire așteptată (pe baza locației
PostgreSQL_Datafolderului):C:/PostgreSQL_Data/postgresql.conf C:/PostgreSQL_Data/pg_hba.confEfectuați copii de rezervă ale
configfișierelor șihbafișierelor originale executând următoarele comenzi în 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"))Verificați dacă fișierele de backup au fost create prin executarea următoarei comenzi:
dir C:/PostgreSQL_Data/*.conf.*Ieșirea așteptată este:
PS C:\Users\Administrator> dir C:/PostgreSQL_Data/*.conf.*
Director: C:\PostgreSQL_Data
Nume lungime mod LastWriteTime
---- ------------- ------ ----
-a---- 11/10/2021 11:22 AM 4374 pg_hba.conf.20211117T100109Z
-a---- 11/10/2021 11:25 AM 23798 postgresql.conf.20211117T100344Z
Adăugați parametri la
postgres.conffișier. Puteți face acest lucru deschizând fișierul într-un editor de text și adăugând următoarele rânduri la sfârșitul fișierului (chiar subCustomized Optionssecțiune):wal_level = replica hot_standby = on hot_standby_feedback = on full_page_writes = on max_wal_senders = 6 max_replication_slots = 6Creați un rol/utilizator pentru reproducere și setați-i parola (nu utilizați parola specificată în comenzile eșantion).
Conectați-vă la shell-ul SQL al serverului PostgreSQL principal prin consola PowerShell utilizând comanda:
C:\PostgreSQL\bin\psql.exe -U dbadmin postgresExecutați următoarea comandă (în shell-ul SQL deschis în pasul precedent):
CREATE ROLE repl_user LOGIN REPLICATION PASSWORD 'replQwerty123';
Adăugați parametri la
pg_hba.conffișier. Puteți face acest lucru deschizând fișierul într-un editor de text și adăugând următoarele rânduri la fișier (sub#replication privilegelinie):# replication privilege. host replication repl_user <secondaryIP>/32 md5Reporniți serviciul BriefCamPostgreSQL pe serverul PostgreSQL principal, deschizând PowerShell ca administrator și rulând următoarele comenzi:
net stop "BriefCamPostgreSQL - PostgreSQL Server 10" net start "BriefCamPostgreSQL - PostgreSQL Server 10"Verificați dacă fișierele de configurare conțin modificările pe care le-ați efectuat în
postgres.conffișier, după cum urmează:Conectați-vă la shell-ul SQL al serverului PostgreSQL principal prin consola PowerShell utilizând comanda:
C:\PostgreSQL\bin\psql.exe -U dbadmin postgresImprimați configurațiile personalizate adăugate la fișierul de conf PostgreSQL utilizând comenzile de mai jos prin SQL shell:
\pset pager off SELECT pg_read_file('postgresql.conf');Verificați dacă puteți acum să vedeți liniile adăugate la
postgresql.conffișier în partea de jos a ieșirii.
Verificați dacă fișierele de configurare conțin modificările pe care le-ați efectuat în
pg_hba.conffișier, după cum urmează:Conectați-vă la SQL Shell-ul serverului PostgreSQL principal executând următoarele comenzi:
C:\PostgreSQL\bin\psql.exe -U badmin postere
\presetare pagină oprită
SELECTAȚI pg_read_file('pg_hba.conf');
Verificați dacă puteți acum să vedeți liniile adăugate la
pg_hba.conffișier în partea de jos a ieșirii.
Pași pe serverul secundar
Instalați BriefCamPostgreSQL.
Pe serverul PostgreSQL secundar, opriți serviciul BriefCamPostgreSQL rulând următoarele în PowerShell ca administrator:
net stop "BriefCamPostgreSQL - PostgreSQL Server 10"Curățați directorul de date după cum urmează:
Redenumiți
PostgreSQL_Datafolderul.Creați un folder nou
PostgreSQL_Datanumit și, în fila Permisiuni a folderului, adăugați control complet la Oricine.
Efectuați o copie de rezervă de bază PostgreSQL de la serverul principal la cel secundar, după cum urmează:
Executați următoarea comandă în PowerShell ca administrator:
c:\PostgreSQL\bin\pg_basebackup -h <primaryIP> -U repl_user --checkpoint=fast -D C:\PostgreSQL_Data -R TBD #--slot=standby1Se recomandă oprirea tuturor BriefCam serviciilor de pe toate serverele în timpul backupului potențial lung al bazei de date. Este posibil să efectuați acest pas fără a opri toate serviciile, în funcție de dimensiunea setului de date.
Pe serverul PostgreSQL secundar, porniți serviciul BriefCamPostgreSQL executând următoarele comenzi în PowerShell ca administrator:
net start "BriefCamPostgreSQL - PostgreSQL Server 10"
Verificați operațiunea de reproducere
Conectați-vă la shell-ul SQL al serverului PostgreSQL principal prin consola PowerShell utilizând comanda:
C:\PostgreSQL\bin\psql.exe -U dbadmin postgresVerificați valoarea de lag rulând următoarea comandă în SQL Shell (
write_lagvaloarea trebuie să înceapă cu 00:00:00):SELECT write_lag,client_addr FROM pg_stat_replication ;Acesta este un exemplu al ieșirii așteptate:
posters=# SELECTAȚI write_lag, client_addr DIN pg_stat_replication ;
write_lag | client_addr
-----------------+-------------
00:00:00.003972 | 10.30.30.30
(1 rând)
Postere=#
Notă
Această verificare trebuie efectuată cel puțin o dată pe zi.
Activați serverul secundar pentru a acționa ca server principal
Această secțiune descrie procedura de activare a serverului secundar ca instanță principală a bazei de date PostgreSQL, în cazurile în care serverul principal este defect și este necesară recuperarea/migrarea.
Schimbați fișierul hosts din toate serverele BC pentru a reflecta <secondaryIP> în loc de <primaryIP>.
Verificați starea și promovați serverul secundar PGSQL pentru a deveni serverul principal, rulând următoarele comenzi în consola PowerShell (asigurați-vă că rulați PowerShell în administrator și editați căile în fișierul pg_ctl.exe și folderul PostgreSQL_Data în consecință):
c:\PostgreSQL\bin\pg_ctl.exe status -D ”C:\PostgreSQL_Data”
Ieșire eșantion:
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”
Ieșire eșantion:
waiting for server to promote.... done server promoted
Creați o copie de rezervă periodică pe serverul secundar
Scripturi PG_DUMP în Windows Task Scheduler
Creați
%APPDATA%\postgresql\pgpass.conffișierul care conține datele de autentificare (adică:*:5432:*:dbadmin:Qwerty123). Pentru detalii, consultați: https://www.postgresql.org/docs/10/libpq-pgpass.html și https://www.postgresql.org/docs/10/libpq-envars.html (linkuri externe).Dacă cele de mai sus nu funcționează, parola scripturilor poate fi specificată pe linia de execuție:
$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")).tarCreați un folder pentru fișierele de backup, de exemplu:
E:\PostgresBackups\.Crearea unui folder pentru fișierele script de backup, de exemplu:
E:\PostgresBackupScripts\.Creați scriptul de backup la:
E:\PostgresBackupScripts\backup.ps1cu cele trei comenzi așa cum este prezentat mai jos:c:\PostgreSQL\bin\pg_dump.exe -F t -U dbadmin -d postgres -f e:\PostgresBackups\db_postgres-$(((get-date).ToUniversalTime()).ToString("yyyyddTHHmssZ")).tar
c:\PostgreSQL\bin\pg_dump.exe -Ft -U dbadmin -d briefcam -f e:\PostgresBackups\db_briefcam-$(((get-date).ToUniversalTime()).ToString("yyyyddTHHmssZ")).tar
#ls -file E:\PostgresBackups\db*.tar | unde {(get-date) - $_.creationtime -gt 15.} | Remove-Item –Verbose
*A 3-a comandă de mai sus trebuie ajustată în funcție de perioada de retenție de rezervă necesară prin eliminarea semnului "#" de la începutul liniei și modificarea numărului 15, deoarece reprezintă numărul de zile înapoi. De exemplu, dacă doriți să configurați scriptul pentru a șterge toate fișierele mai vechi de 7 zile, va trebui să schimbați numărul 15 la 7.
Testați crearea copiilor de siguranță și eliminarea fișierelor vechi prin setarea -gt la 0 și rularea următoarei comenzi în Windows cmd:
powershell.exe e:\PostgresBackupScripts\backup.ps1
Se vor elimina toate fișierele create.
Ajustați perioada de păstrare a backupurilor, așa cum este menționat în partea de jos a pasului 4 de mai sus.
Adăugați scriptul de backup la programatorul de activități Windows după cum urmează:
Setați câmpul Program/script la următoarea cale:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
În câmpul Adăugați argumente, setați următoarele:
E:\PostgresBackupScripts\backup.ps1
Setați declanșatoarele și sincronizarea în consecință.

Setați ca activitatea să ruleze indiferent dacă utilizatorul este conectat și salvați parola.

Pe un server de testare, verificați dacă fișierele pot fi restaurate. Acest test ar trebui să facă parte din rutina dvs. continuă.
Iată un exemplu de comandă de restaurare:
C:\PostgreSQL\bin\pg_restore.exe -c -v -U dbadmin -d briefcam -F t e:\PostgresBackups\db_briefcam-20211122T122052Z.tar
Parametrul -c efectuează fixarea și crearea. Pentru opțiuni suplimentare, consultați:
“C:\PostgreSQL\bin\pg_restore.exe --help”
Revenire La Serverul Principal După Ce Acesta Este Fix
Dacă ați utilizat un server secundar deoarece a existat o problemă cu serverul principal, această secțiune descrie cum să reveniți la serverul principal odată ce problema este remediată.
Notă
Detaliile procesului de mai jos pot varia în funcție de tipul de eroare suferit de serverul principal. Pentru a lua în considerare cel mai sever caz (o avarie absolută a serverului principal), pașii de mai jos includ o instalație nouă.
Instalați sistemul de operare de la zero.
Efectuați pașii din secțiunea Pași de pe serverul principal de pe serverul principal curent.
Efectuați toate acțiunile descrise în secțiunile de mai jos pe servere, având în vedere că serverul care a fost reinstalat este acum instanța "secundară" din punct de vedere tehnic:
Opriți serviciul PostgreSQL de pe serverul care a fost utilizat ca server principal.
Verificați dacă BriefCam sistemul funcționează corect.
Efectuați pașii pentru crearea unei reproduceri pe server care a fost utilizată ca server principal.