Replikowanie bazy danych BriefCam PostgreSQL
Ta sekcja zawiera szczegóły dotyczące usprawniania replikacji bazy danych PostgreSQL.
Wymagania wstępne, uwagi i konwencje
Uwaga
Podczas wklejania poleceń z przykładów zawartych w tym dokumencie należy używać programu Windows PowerShell, a nie wiersza polecenia (cmd).
Jeśli miejsce na serwerze głównym jest wystarczające, należy wykonać kopię zapasową bazy danych (przy użyciu narzędzia pg_dump) przed próbą utworzenia repliki.
Zanotuj adres IP serwera głównego. W dalszej części tego dokumentu będzie on określany jako <primaryIP>.
Zanotuj adres IP serwera pomocniczego. W dalszej części tego dokumentu będzie on określany jako <secondaryIP>.
W serwerze PGSQL poniższe trzy komponenty instalacji BriefCam muszą być ustawione na nazwę hosta lub adres IP. Upewnij się, że wszystkie używają tej samej metody (aby zapewnić spójność). Można to zrobić, szukając
connectionStringPostgreSQL w następujących plikach lub ustawieniach:Serwer VS:
C:\Program Files\BriefCam\BriefCam Server\VSServer.exe.configUsługi sieci Web:
C:\Program Files\BriefCam\WebServices\ProWebApi\Web.configQlik (RESEARCH): 64-bitowe wpisy ODBC (pole Server)

Zaleca się przetestowanie pełnej funkcjonalności systemów przed utworzeniem serwera pomocniczego. Pamiętaj, aby zanotować wszystkie oryginalne wartości zmienianych parametrów.
Na wszystkich serwerach, na których wdrożone są komponenty BriefCam Server, ustaw plik hosts na wskazywanie głównego serwera bazy danych PostgreSQL – spowoduje to nadpisanie DNS.
W BriefCam Administrator Consoleotwórz sekcję Ustawienia środowiska i ustaw ustawienia DB.LocalStorageAddress i VideoProductsPath tak, aby używane były nazwy hostów, a nie adresy IP.
Szybkość operacji PostgreSQL base_backup znacznie się różni w zależności od konfiguracji środowiska (szybkość dysku SSD/dysku twardego/karty sieciowej). Z reguły w przypadku pamięci masowej ISCSI (macierz dysków twardych z łączami 10 Gb/s) i sieciowej karty sieciowej 1 Gb/s (vmxnet3) w środowisku wirtualnym wykonanie podstawowej kopii zapasowej bazy danych PostgreSQL zawierającej 90 GB danych BriefCam zajmuje około 40 minut.
Rozważ przetestowanie prędkości w rzeczywistym środowisku, aby móc oszacować, ile czasu zajmie podstawowa kopia zapasowa, aby móc prawidłowo ustawić przedział czasu dla procesu tworzenia repliki.
Użyj rzeczywistej ścieżki katalogu
PostgreSQL_Data. Domyślna BriefCam toC:\PostgreSQL_Data. Może się to jednak różnić w zależności od konfiguracji (w dalszej części tego dokumentu zostanie użyta domyślna ścieżka BriefCam ).Użyj rzeczywistej ścieżki
pgsql.exe. Domyślna BriefCam jestC:\PostgreSQL\bin\psql.exe(w dalszej części tego tematu zostanie użyta domyślna BriefCam ścieżki).
Kroki na serwerze podstawowym
Połącz się z powłoką SQL głównego serwera PostgreSQL i sprawdź lokalizację plików config i hba, wykonując następujące polecenia:
C:\PostgreSQL\bin\psql.exe -U dbadmin postgres SHOW config_file; SHOW hba_file;Oto przykład oczekiwanego wyjścia (na podstawie lokalizacji folderu
PostgreSQL_Data):C:/PostgreSQL_Data/postgresql.conf C:/PostgreSQL_Data/pg_hba.confWykonanie kopii zapasowej oryginalnych plików
configihbaprzez wykonanie następujących poleceń w programie 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"))Sprawdź, czy pliki kopii zapasowej zostały utworzone, wykonując następujące polecenie:
dir C:/PostgreSQL_Data/*.conf.*Oczekiwane wyjście to:
PS C:\Users\Administrator> reż.: C/PostgreSQL_Data/*.conf.*
Katalog: C:\PostgreSQL_Data
Tryb LastWriteTime Length Name
---- ------------- ------ ----
a---- 11/10/2021 11:22 AM 4374 pg_hba.conf.20211117T100109Z
a---- 11/10/2021 11:25 AM 23798 postgresql.conf.20211117T100344Z
Dodaj parametry do pliku
postgres.conf. Można to zrobić, otwierając plik w edytorze tekstu i dodając następujące wiersze na końcu pliku (tuż poniżej sekcjiCustomized Options):wal_level = replica hot_standby = on hot_standby_feedback = on full_page_writes = on max_wal_senders = 6 max_replication_slots = 6Utwórz rolę/użytkownika do replikacji i ustaw jego hasło (nie używaj hasła określonego w przykładowych poleceniach).
Połączenie z powłoką SQL głównego serwera PostgreSQL za pośrednictwem konsoli PowerShell za pomocą polecenia:
C:\PostgreSQL\bin\psql.exe -U dbadmin postgresWykonaj następujące polecenie (w powłoce SQL otwartej w poprzednim kroku):
CREATE ROLE repl_user LOGIN REPLICATION PASSWORD 'replQwerty123';
Dodaj parametry do pliku
pg_hba.conf. Aby to zrobić, należy otworzyć plik w edytorze tekstu i dodać do niego następujące wiersze (pod wierszem#replication privilege):# replication privilege. host replication repl_user <secondaryIP>/32 md5Uruchom ponownie usługę BriefCamPostgreSQL na głównym serwerze PostgreSQL, otwierając program PowerShell jako administrator i wykonując następujące polecenia:
net stop "BriefCamPostgreSQL - PostgreSQL Server 10" net start "BriefCamPostgreSQL - PostgreSQL Server 10"Sprawdź, czy pliki konfiguracyjne zawierają zmiany wprowadzone w pliku
postgres.confw następujący sposób:Połączenie z powłoką SQL głównego serwera PostgreSQL za pośrednictwem konsoli PowerShell za pomocą polecenia:
C:\PostgreSQL\bin\psql.exe -U dbadmin postgresWydrukuj niestandardowe konfiguracje dodane do pliku konfiguracji PostgreSQL za pomocą poniższych poleceń za pomocą powłoki SQL:
\pset pager off SELECT pg_read_file('postgresql.conf');Sprawdź, czy widzisz teraz linie dodane do pliku
postgresql.confna dole wyjścia.
Sprawdź, czy pliki konfiguracyjne zawierają zmiany wprowadzone w pliku
pg_hba.confw następujący sposób:Połącz się z SQL Shell głównego serwera PostgreSQL, wykonując następujące polecenia:
Plakaty C:\PostgreSQL\bin\psql.exe -U dbadmin
\pset pager wył.
WYBIERZ pg_read_file('pg_hba.conf');
Sprawdź, czy widzisz teraz linie dodane do pliku
pg_hba.confna dole wyjścia.
Kroki na serwerze pomocniczym
Instalacja BriefCamPostgreSQL.
Na pomocniczym serwerze PostgreSQL zatrzymaj usługę BriefCamPostgreSQL, uruchamiając następujące funkcje w programie PowerShell jako administrator:
net stop "BriefCamPostgreSQL - PostgreSQL Server 10"Oczyść katalog danych w następujący sposób:
Zmień nazwę folderu
PostgreSQL_Data.Utwórz nowy folder o nazwie
PostgreSQL_Datai na karcie Uprawnienia folderu dodaj pełną kontrolę do opcji Wszyscy.
Wykonaj podstawową kopię zapasową PostgreSQL z serwera głównego do serwera pomocniczego w następujący sposób:
Wykonanie następującego polecenia w programie PowerShell jako administrator:
c:\PostgreSQL\bin\pg_basebackup -h <primaryIP> -U repl_user --checkpoint=fast -D C:\PostgreSQL_Data -R TBD #--slot=standby1Zaleca się zatrzymanie wszystkich usług BriefCam na wszystkich serwerach podczas potencjalnie długiego tworzenia kopii zapasowej bazy danych. W zależności od rozmiaru zestawu danych krok ten można wykonać bez zatrzymywania wszystkich usług.
Na pomocniczym serwerze PostgreSQL uruchom usługę BriefCamPostgreSQL, wykonując następujące polecenia w programie PowerShell jako administrator:
net start "BriefCamPostgreSQL - PostgreSQL Server 10"
Weryfikuj operację replikacji
Połączenie z powłoką SQL głównego serwera PostgreSQL za pośrednictwem konsoli PowerShell za pomocą polecenia:
C:\PostgreSQL\bin\psql.exe -U dbadmin postgresSprawdź wartość opóźnienia, uruchamiając następujące polecenie w powłoce SQL (wartość
write_lagmusi zaczynać się od 00:00:00):SELECT write_lag,client_addr FROM pg_stat_replication ;Oto przykład oczekiwanego wyniku:
POSTGRES=# SELECT write_lag, client_addr FROM pg_stat_replication ;
write_lag | client_addr
-----------------+-------------
00:00:00.003972 | 10.30.30.30
(1 wiersz)
Postgre=#
Uwaga
Kontrola ta powinna być wykonywana co najmniej raz dziennie.
Aktywacja serwera pomocniczego w celu działania jako serwer główny
W tej sekcji opisano procedurę aktywacji serwera pomocniczego jako głównej instancji bazy danych PostgreSQL w przypadkach, gdy serwer główny jest uszkodzony i wymagane jest przywrócenie/migracja.
Zmień plik hosts we wszystkich serwerach BC tak, aby odzwierciedlał <secondaryIP> zamiast <primaryIP>.
Sprawdź status i wypromuj serwer pomocniczy PGSQL, aby stał się serwerem głównym, uruchamiając następujące polecenia w konsoli PowerShell (upewnij się, że uruchomiłeś PowerShell w adminstratorze i odpowiednio wyedytuj ścieżki do pliku pg_ctl.exe i folderu PostgreSQL_Data):
c:\PostgreSQL\bin\pg_ctl.exe status -D ”C:\PostgreSQL_Data”
Wyjście próbki:
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”
Wyjście próbki:
waiting for server to promote.... done server promoted
Tworzenie okresowej kopii zapasowej na serwerze pomocniczym
PG_DUMP Skrypty w Harmonogramie zadań Windows
Utwórz plik
%APPDATA%\postgresql\pgpass.confzawierający poświadczenia bazy danych (to jest:*:5432:*:dbadmin:Qwerty123). Szczegółowe informacje można znaleźć pod adresami: https://www.postgresql.org/docs/10/libpq-pgpass.html i https://www.postgresql.org/docs/10/libpq-envars.html (linki zewnętrzne).Jeśli powyższe nie działa, hasło skryptów można określić na linii wykonania:
$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")).tarUtwórz folder na pliki kopii zapasowej, na przykład:
E:\PostgresBackups\.Utwórz folder dla plików skryptu kopii zapasowej, na przykład:
E:\PostgresBackupScripts\.Utwórz skrypt kopii zapasowej w:
E:\PostgresBackupScripts\backup.ps1z trzema poleceniami, jak pokazano poniżej: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 -fe:\PostgresBackups\db_briefcam-$(((get-date).ToUniversalTime()).ToString("yyyyMMddTHHmmssZ").tar
#ls -file E:\PostgresBackups\db*.tar | where {(get-date) - $_.creationtime -gt 15.} | Remove-Item –Verbose
*3. powyższe polecenie należy dostosować zgodnie z wymaganym okresem przechowywania kopii zapasowej poprzez usunięcie znaku "#" na początku linii i modyfikację liczby 15, ponieważ reprezentuje ona liczbę dni wstecz. Na przykład, jeśli chcesz skonfigurować skrypt tak, aby usuwał wszystkie pliki starsze niż 7 dni, musisz zmienić liczbę z 15 na 7.
Przetestuj tworzenie kopii zapasowej i usuwanie starych plików, ustawiając -gt na 0 i uruchamiając następujące polecenie w Windows cmd:
powershell.exe e:\PostgresBackupScripts\backup.ps1
Spowoduje to usunięcie wszystkich utworzonych plików.
Dostosowuje okres przechowywania kopii zapasowych, jak wspomniano na dole kroku 4 powyżej.
Dodaj skrypt kopii zapasowej do harmonogramu zadań systemu Windows w następujący sposób:
Ustaw następującą ścieżkę pola Program/skrypt:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
W polu Dodaj argumenty ustaw co następuje:
E:\PostgresBackupScripts\backup.ps1
Ustaw odpowiednio wyzwalacze i czas.

Ustaw zadanie do uruchamiania niezależnie od tego, czy użytkownik jest zalogowany, i zapisz hasło.

Na serwerze testowym sprawdź, czy pliki można przywrócić. Ten test powinien być częścią bieżącej rutyny.
Oto przykład polecenia restore:
C:\PostgreSQL\bin\pg_restore.exe -c -v -U dbadmin -d briefcam -F t e:\PostgresBackups\db_briefcam-20211122T122052Z.tar
Parametr -c wykonuje upuszczenie i utworzenie. Aby uzyskać informacje o dodatkowych opcjach, patrz:
“C:\PostgreSQL\bin\pg_restore.exe --help”
Po naprawieniu wróć do serwera głównego
W przypadku korzystania z serwera pomocniczego z powodu problemu z serwerem głównym w tej sekcji opisano sposób przywrócenia serwera głównego po rozwiązaniu problemu.
Uwaga
Poniższe szczegóły procesu mogą się różnić w zależności od rodzaju awarii serwera głównego. Aby rozważyć najpoważniejszy przypadek (absolutna awaria serwera głównego), poniższe kroki obejmują nową instalację.
Zainstaluj system operacyjny od zera.
Wykonaj kroki opisane w sekcji Serwer podstawowy na bieżącym serwerze podstawowym.
Należy wykonać wszystkie czynności opisane w poniższych sekcjach na serwerach, biorąc pod uwagę, że ponownie zainstalowany serwer jest teraz technicznie instancją "dodatkową":
Zatrzymaj usługę PostgreSQL na serwerze, który był używany jako serwer podstawowy.
Sprawdź, czy system BriefCam działa prawidłowo.
Należy wykonać kroki w celu utworzenia repliki na serwerze, który był używany jako serwer podstawowy.