Replica del database BriefCam PostgreSQL
Questa sezione descrive in dettaglio come semplificare la replica del database PostgreSQL.
Prerequisiti, note e convenzioni
Nota
Utilizzare Windows PowerShell e non il Prompt dei comandi (cmd) durante l'incollamento dei comandi dagli esempi in questo documento.
Se lo spazio del server primario è sufficiente, eseguire un backup completo del database (utilizzando lo strumento pg_dump) prima di tentare di creare la replica.
Prendere nota dell'indirizzo IP del server primario. Più avanti in questo documento verrà indicato come <primaryIP>.
Prendere nota dell'indirizzo IP del server secondario. Più avanti in questo documento verrà indicato come <secondaryIP>.
Nel server PGSQL, i tre componenti di installazione seguenti BriefCam devono essere tutti impostati sul nome host o sull'indirizzo IP. Assicurarsi che utilizzino tutti lo stesso metodo (per garantire la coerenza). A tale scopo, cercare PostgreSQL
connectionStringnei seguenti file o impostazioni:Server VS:
C:\Program Files\BriefCam\BriefCam Server\VSServer.exe.configServizi Web:
C:\Program Files\BriefCam\WebServices\ProWebApi\Web.configQlik (RESEARCH): voci ODBC a 64 bit (campo Server)

Si consiglia di testare la piena funzionalità dei sistemi prima di creare il server secondario. Assicurati di prendere nota di tutti i valori originali dei parametri che hai modificato.
Su tutti i server in cui sono distribuiti i componenti di BriefCam Server, imposta il file host in modo che punti al server database PostgreSQL primario, questo sostituirà il DNS.
Nella BriefCam Administrator Console, aprire la sezione Impostazioni ambiente e impostare le impostazioni DB.LocalStorageAddress e VideoProductsPath in modo che utilizzino nomi host e non indirizzi IP.
La velocità di PostgreSQL base_backup varia significativamente a seconda della configurazione dell'ambiente (velocità SSD/HDD/NIC). Come regola generale, sull'archiviazione ISCSI (10 Gbps collega l'array HDD) e 1 NIC di rete Gbps (vmxnet3) in un ambiente virtuale, occorrono circa 40 minuti per eseguire un backup di base del database PostgreSQL che contiene 90 GB di BriefCam dati.
Considerare la possibilità di testare la velocità sull'ambiente effettivo per poter stimare quanto tempo impiegherà il backup di base per essere in grado di impostare correttamente l'intervallo di tempo per il processo di creazione della replica.
Utilizzare il percorso effettivo della
PostgreSQL_Datadirectory. L'impostazione BriefCam predefinita èC:\PostgreSQL_Data. Tuttavia, questo può variare in diverse impostazioni (più avanti nel presente documento verrà utilizzato il percorso predefinito BriefCam ).Utilizzare il
pgsql.exepercorso effettivo. L'impostazione BriefCam predefinita èC:\PostgreSQL\bin\psql.exe(più avanti in questo argomento verrà utilizzato il BriefCam percorso predefinito).
Operazioni sul server primario
Connettersi alla shell sql del server PostgreSQL primario e verificare la posizione dei file config e hba eseguendo i seguenti comandi:
C:\PostgreSQL\bin\psql.exe -U dbadmin postgres SHOW config_file; SHOW hba_file;Ecco un esempio dell'output previsto (basato sull'ubicazione della
PostgreSQL_Datacartella):C:/PostgreSQL_Data/postgresql.conf C:/PostgreSQL_Data/pg_hba.confEseguire il backup dei file originali
configehbaeseguendo i seguenti comandi in 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"))Verificare che i file di backup siano stati creati eseguendo il seguente comando:
dir C:/PostgreSQL_Data/*.conf.*L'output previsto è:
PS C:\Users\Administrator> dir C:/PostgreSQL_Data/*.conf.*
Directory: C:\PostgreSQL_Data
Nome lunghezza LastWriteTime modalità
---- ------------- ------ ----
-a---- 11/10/2021 11:22 AM 4374 pg_hba.conf.20211117T100109Z
-a---- 11/10/2021 11:25 AM 23798 postgresql.conf.20211117T100344Z
Aggiungere parametri al
postgres.conffile. A tale scopo, aprire il file in un editor di testo e aggiungere le seguenti righe alla fine del file (appena sotto laCustomized Optionssezione):wal_level = replica hot_standby = on hot_standby_feedback = on full_page_writes = on max_wal_senders = 6 max_replication_slots = 6Creare un ruolo/utente per la replica e impostarne la password (non utilizzare la password specificata nei comandi di esempio).
Connettersi alla shell SQL del server PostgreSQL primario tramite la console PowerShell utilizzando il comando:
C:\PostgreSQL\bin\psql.exe -U dbadmin postgresEseguire il seguente comando (nella shell di SQL aperta nel passaggio precedente):
CREATE ROLE repl_user LOGIN REPLICATION PASSWORD 'replQwerty123';
Aggiungere parametri al
pg_hba.conffile. A tale scopo, aprire il file in un editor di testo e aggiungere le seguenti righe al file (sotto la#replication privilegeriga):# replication privilege. host replication repl_user <secondaryIP>/32 md5Riavviare il servizio BriefCamPostgreSQL sul server PostgreSQL primario aprendo PowerShell come amministratore ed eseguendo i seguenti comandi:
net stop "BriefCamPostgreSQL - PostgreSQL Server 10" net start "BriefCamPostgreSQL - PostgreSQL Server 10"Verificare che i file di configurazione contengano le modifiche apportate al
postgres.conffile come segue:Connettersi alla shell SQL del server PostgreSQL primario tramite la console PowerShell utilizzando il comando:
C:\PostgreSQL\bin\psql.exe -U dbadmin postgresStampare le configurazioni personalizzate aggiunte al file di configurazione PostgreSQL utilizzando i comandi sottostanti tramite SQL shell:
\pset pager off SELECT pg_read_file('postgresql.conf');Verifica di poter vedere le righe aggiunte al
postgresql.conffile nella parte inferiore dell'output.
Verificare che i file di configurazione contengano le modifiche apportate al
pg_hba.conffile come segue:Connettersi alla SQL Shell del server PostgreSQL primario eseguendo i seguenti comandi:
C:\PostgreSQL\bin\psql.exe -U dbadmin postgres
\pset cercapersone disattivato
SELEZIONARE pg_read_file('pg_hba.conf');
Verifica di poter vedere le righe aggiunte al
pg_hba.conffile nella parte inferiore dell'output.
Operazioni sul server secondario
Installare BriefCamPostgreSQL.
Sul server PostgreSQL secondario, arrestare il servizio BriefCamPostgreSQL eseguendo quanto segue in PowerShell come amministratore:
net stop "BriefCamPostgreSQL - PostgreSQL Server 10"Pulire la directory dei dati come segue:
Rinominare la
PostgreSQL_Datacartella.Creare una nuova cartella denominata
PostgreSQL_Datae nella scheda Autorizzazioni della cartella aggiungere il controllo completo a Tutti.
Eseguire un backup di base PostgreSQL dal server primario a quello secondario come segue:
Eseguire il seguente comando in PowerShell come amministratore:
c:\PostgreSQL\bin\pg_basebackup -h <primaryIP> -U repl_user --checkpoint=fast -D C:\PostgreSQL_Data -R TBD #--slot=standby1Si consiglia di arrestare tutti i BriefCam servizi su tutti i server durante il backup potenzialmente lungo del database. È possibile eseguire questa fase senza arrestare tutti i servizi, a seconda delle dimensioni del set di dati.
Sul server PostgreSQL secondario, avviare il servizio BriefCamPostgreSQL eseguendo i seguenti comandi in PowerShell come amministratore:
net start "BriefCamPostgreSQL - PostgreSQL Server 10"
Verifica dell'operazione di replica
Connettersi alla shell SQL del server PostgreSQL primario tramite la console PowerShell utilizzando il comando:
C:\PostgreSQL\bin\psql.exe -U dbadmin postgresControllare il valore di ritardo eseguendo il seguente comando nella shell di SQL (il
write_lagvalore deve iniziare con 00:00:00):SELECT write_lag,client_addr FROM pg_stat_replication ;Questo è un esempio dell'output previsto:
postgres=# SELEZIONARE write_lag,client_addr DA pg_stat_replication ;
write_lag | client_addr
-----------------+-------------
00:00:00.003972 | 10.30.30.30
(1 riga)
postgres=#
Nota
Questo controllo deve essere eseguito almeno una volta al giorno.
Attiva il server secondario per fungere da server primario
Questa sezione descrive la procedura di attivazione del server secondario come istanza primaria del database PostgreSQL, nei casi in cui il server primario è in errore e occorre eseguire il ripristino/la migrazione.
Modificare il file host in tutti i server BC in modo che rifletta <secondaryIP> invece di <primaryIP>.
Controllare lo stato e promuovere il server secondario PGSQL a diventare il server primario eseguendo i seguenti comandi nella console PowerShell (assicurarsi di eseguire PowerShell in Administrator e di modificare di conseguenza i percorsi del file pg_ctl.exe e della cartella PostgreSQL_Data):
c:\PostgreSQL\bin\pg_ctl.exe status -D ”C:\PostgreSQL_Data”
Output di esempio:
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”
Output di esempio:
waiting for server to promote.... done server promoted
Creazione di backup periodici sul server secondario
Script PG_DUMP in Utilità di pianificazione di Windows
Creare il
%APPDATA%\postgresql\pgpass.conffile contenente le credenziali del database (ovvero:*:5432:*:dbadmin:Qwerty123). Per maggiori informazioni, consultare: https://www.postgresql.org/docs/10/libpq-pgpass.html e https://www.postgresql.org/docs/10/libpq-envars.html (link esterni).Se quanto sopra non funziona, la password degli script può essere specificata sulla riga di esecuzione:
$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")).tarCreare una cartella per i file di backup, ad esempio:
E:\PostgresBackups\.Creare una cartella per i file di script di backup, ad esempio:
E:\PostgresBackupScripts\.Creare lo script di backup in:
E:\PostgresBackupScripts\backup.ps1con i tre comandi come mostrato di seguito:c:\PostgreSQL\bin\pg_dump.exe -F t -U dbadmin -d postgres -f e:\PostgresBackups\db_postgres-$(((get-date).ToUniversalTime()).ToString("aaaaMMddTHHmmssZ")).tar
c:\PostgreSQL\bin\pg_dump.exe -F t -U dbadmin -d briefcam -f e:\PostgresBackups\db_briefcam-$(((get-date).ToUniversalTime()).ToString("yyyyMMddTHHmmmssZ")).tar
#ls -file E:\PostgresBackups\db*.tar | dove {(get-date) - $_.creationtime -gt 15.} | Remove-Item –Verbose
*Il terzo comando di cui sopra deve essere regolato in base al periodo di conservazione del backup richiesto, rimuovendo il segno "#" all'inizio della linea e modificando il numero 15 poiché rappresenta il numero di giorni all'indietro. Ad esempio, se si desidera configurare lo script per eliminare tutti i file più vecchi di 7 giorni, è necessario modificare il numero da 15 a 7.
Eseguire il test della creazione del backup e della rimozione dei file precedenti impostando -gt su 0 ed eseguire il seguente comando in Windows cmd:
powershell.exe e:\PostgresBackupScripts\backup.ps1
Verranno rimossi tutti i file creati.
Regolare il periodo di conservazione dei backup come indicato in fondo al passaggio 4 di cui sopra.
Aggiungere lo script di backup all'Utilità di pianificazione di Windows come segue:
Impostare il campo Programma/script sul seguente percorso:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
Nel campo Aggiungi argomenti impostare quanto segue:
E:\PostgresBackupScripts\backup.ps1
Impostare i trigger e i tempi di conseguenza.

Impostare l'attività in modo che venga eseguita indipendentemente dal fatto che l'utente sia connesso e che salvi la password.

Su un server di prova, verificare se i file sono ripristinabili. Questo test dovrebbe far parte della routine in corso.
Ecco un esempio del comando restore:
C:\PostgreSQL\bin\pg_restore.exe -c -v -U dbadmin -d briefcam -F t e:\PostgresBackups\db_briefcam-20211122T122052Z.tar
Il parametro -c esegue drop and create. Per ulteriori opzioni, vedere:
“C:\PostgreSQL\bin\pg_restore.exe --help”
Torna al Server Primario dopo La Correzione
Se si stava utilizzando un server secondario a causa di un problema con il server primario, questa sezione descrive come tornare al server primario una volta risolto il problema.
Nota
I dettagli del processo riportato di seguito possono variare a seconda del tipo di guasto subito dal server primario. Per considerare il caso più grave (un arresto anomalo assoluto del server primario), i passaggi seguenti includono una nuova installazione.
Installare il sistema operativo da zero.
Eseguire i passaggi indicati nella sezione Operazioni sul server primario del server primario corrente.
Eseguire tutte le azioni descritte nelle sezioni seguenti sui server, considerando che il server che è stato reinstallato è ora tecnicamente l'istanza "secondaria":
Arresta il servizio PostgreSQL sul server utilizzato come server primario.
Verificare che il BriefCam sistema funzioni correttamente.
Eseguire le operazioni per la creazione di una replica sul server utilizzato come server primario.