Skip to main content

Ръководство за инсталиране на BriefCam

Репликация на базата данни на BriefCam PostgreSQL

Last Updated: 8 minute read
Версия2024r2
ЕзикБългарски

Този раздел подробно описва как да рационализирате репликацията на базата данни на PostgreSQL.

Предпоставки, бележки и конвенции

Забележка

Използвайте Windows PowerShell, а не Command Prompt (cmd), докато поставяте команди от пробите в този документ.

  1. Ако основното пространство на сървъра е достатъчно, изпълнете пълно резервно копие на базата данни (използвайки инструмента pg_dump), преди да опитате да създадете репликата.

  2. Обърнете внимание на IP адреса на основния сървър. По-късно в този документ той ще бъде посочен като <primaryIP>.

  3. Обърнете внимание на IP адреса на вторичния сървър. По-късно в този документ той ще бъде посочен като <secondaryIP>.

  4. В PGSQL сървъра следните три BriefCam инсталационни компонента трябва да бъдат зададени като име на хост или IP адрес. Уверете се, че всички те използват един и същ метод (за да се гарантира последователност). Можете да направите това, като потърсите PostgreSQL connectionString в следните файлове или настройки:

    • VS сървър: C:\Program Files\BriefCam\BriefCam Server\VSServer.exe.config

    • Уеб услуги: C:\Program Files\BriefCam\WebServices\ProWebApi\Web.config

    • Qlik (RESEARCH): ODBC 64-битови записи (сървърно поле)

      ODBC Driver Setup.png
  5. Препоръчително е да тествате пълната функционалност на системите, преди да създадете вторичния сървър. Не забравяйте да вземете под внимание всички оригинални стойности на параметрите, които променяте.

  6. На всички сървъри, на които са инсталирани компонентите на BriefCam Server, задайте файлът за хостове да сочи към основния сървър за база данни на PostgreSQL – това ще отмени DNS.

  7. В BriefCam Administrator Consoleраздела Отворете Настройки на средата и задайте настройките на DB.LocalStorageAddress и VideoProductsPath да използват имена на хостове, а не IP адреси.

  8. Скоростта на PostgreSQL base_backup значително се променя в зависимост от настройката на средата (SSD/HDD/NIC скорост). Като правило, при ISCSI съхранение (10 Gbps HDD масив) и 1 Gbps мрежова NIC (vmxnet3) във виртуална среда, отнема около 40 минути, за да се извърши базово резервно копие на базата данни PostgreSQL, която съдържа 90 GB BriefCam данни.

    Помислете за тестване на скоростта на действителната среда, за да можете да прецените колко време ще отнеме базовото резервно копие, за да можете правилно да настроите времевия слот за процеса на създаване на реплика.

  9. Използвайте действителния път на PostgreSQL_Data директорията. По BriefCam подразбиране е C:\PostgreSQL_Data… Това обаче може да варира в различните настройки (по-късно в този документ ще се използва BriefCam пътят по подразбиране).

  10. Използвайте действителния pgsql.exe път. По BriefCam подразбиране е C:\PostgreSQL\bin\psql.exe (по-късно в тази тема ще се използва BriefCam пътят по подразбиране).

Стъпки върху основния сървър

  1. Свържете се с основната SQL обвивка на PostgreSQL сървъра и проверете местоположението на конфигурационните и Hba файловете, като изпълните следните команди:

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

    Ето един пример за очакваното изходящо събитие (въз основа на местоположението на PostgreSQL_Data папката):

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

  2. Архивиране на config оригинала и hba файловете чрез изпълнение на следните команди в 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. Проверете дали резервните файлове са създадени чрез изпълняване на следната команда:

    dir C:/PostgreSQL_Data/*.conf.*

    Очакваното изходящо събитие е:

    PS: C:\Users\Administrator> директория: C/PostgreSQL_Data/*.conf.*

    Директория: C:\PostgreSQL_Data

    Име на дължината на последния час на запис в режим

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

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

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

  4. Добавяне на параметри към postgres.conf файла. Можете да направите това, като отворите файла в текстов редактор и добавите следните редове в края на файла (точно под Customized Options раздела):

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

  5. Създайте роля/потребител за репликация и задайте неговата парола (не използвайте паролата, посочена в примерните команди).

    1. Свържете се с основната обвивка на SQL на PostgreSQL сървъра чрез PowerShell конзолата, като използвате командата:

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

    2. Изпълнете следната команда (в обвивката на SQL, отворена в предишната стъпка):

      CREATE ROLE repl_user LOGIN REPLICATION PASSWORD 'replQwerty123';

  6. Добавяне на параметри към pg_hba.conf файла. Можете да направите това, като отворите файла в текстов редактор и добавите следните редове към файла (под #replication privilege реда):

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

  7. Рестартирайте услугата BriefCamPostgreSQL на основния сървър PostgreSQL, като отворите PowerShell като администратор и изпълните следните команди:

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

  8. Проверете дали конфигурационните файлове съдържат промените, които сте направили във postgres.conf файла, както следва:

    1. Свържете се с основната обвивка на SQL на PostgreSQL сървъра чрез PowerShell конзолата, като използвате командата:

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

    2. Принтирайте конфигурациите по избор, добавени към конфигурационния файл на PostgreSQL, като използвате командите по-долу чрез обвивката на SQL:

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

    3. Проверете дали вече можете да видите редовете, добавени към postgresql.conf файла в долния край на изхода.

      Replicating postgresql conf.png
  9. Проверете дали конфигурационните файлове съдържат промените, които сте направили във pg_hba.conf файла, както следва:

    1. Свържете се с SQL Shell на основния PostgreSQL сървър, като изпълните следните команди:

      C:\PostgreSQL\bin\psql.exe - Администраторски постери

      \Pset пейджър изключен

      ИЗБЕРЕТЕ pg_read_file("pg_hba.conf");

    2. Проверете дали вече можете да видите редовете, добавени към pg_hba.conf файла в долния край на изхода.

      Replicating pg_hba conf.png

Стъпки на вторичния сървър

  1. Инсталиране на BriefCamPostgreSQL.

  2. На вторичния PostgreSQL сървър спрете услугата BriefCamPostgreSQL, като изпълните следното в PowerShell като администратор:

    net stop "BriefCamPostgreSQL - PostgreSQL Server 10"

  3. Почистете директорията с данни, както следва:

    1. Преименувайте PostgreSQL_Data папката.

    2. Създайте нова папка с име PostgreSQL_Data и в раздела "Разрешения" на папката добавете Пълен контрол за всички.

      Replicating PostgreSQL properties.png
  4. Извършете PostgreSQL basebackup от основния към вторичния сървър, както следва:

    1. Изпълняване на следната команда в PowerShell като администратор:

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

    2. Препоръчително е да спрете всички BriefCam услуги на всички сървъри по време на потенциално дългото резервно копие на базата данни. Възможно е да изпълните тази стъпка, без да спирате всички услуги, в зависимост от размера на набора от данни.

  5. На вторичния PostgreSQL сървър стартирайте услугата BriefCamPostgreSQL, като изпълните следните команди в PowerShell като администратор:

    net start "BriefCamPostgreSQL - PostgreSQL Server 10"

Проверка на операцията по репликация

  1. Свържете се с основната обвивка на SQL на PostgreSQL сървъра чрез PowerShell конзолата, като използвате командата:

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

  2. Проверете стойността на закъснението, като изпълните следната команда в обвивката на SQL (write_lagстойността трябва да започва с 00:00:00):

    SELECT write_lag,client_addr FROM pg_stat_replication ;

    Това е пример за очакваното изходящо събитие:

    Postgres#=# ИЗБЕРИ write_lag, client_addr ОТ pg_stat_replication ;

    write_lag | Client_addr

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

    00:00:00.003972 | 10.30.30.30

    (1 ред)

    Постижения=#

Забележка

Тази проверка трябва да се извършва поне веднъж на ден.

Активира вторичния сървър, за да действа като основен сървър

Този раздел описва процедурата за активиране на вторичния сървър като основен екземпляр на базата данни на PostgreSQL, в случаите, когато първичният сървър е повреден и е необходимо възстановяване/миграция.

  1. Променете хост файла във всички BC сървъри, за да отразите <secondaryIP> вместо <primaryIP>.

  2. Проверете състоянието и популяризирайте вторичния PGSQL сървър, за да станете основен сървър, като изпълните следните команди в PowerShell конзолата (не забравяйте да стартирате PowerShell в администратор и да редактирате пътищата към pg_ctl.exe файла и папката PostgreSQL_Data съответно):

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

    Примерно изходящо събитие:

    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”

    Примерно изходящо събитие:

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

Създайте периодично резервно копие на вторичния сървър

PG_DUMP Script в Windows Task Scheduler
  1. Създайте %APPDATA%\postgresql\pgpass.conf файла, съдържащ идентификационните данни за базата данни (т.е. *:5432:*:dbadmin:Qwerty123). За повече подробности вижте: https://www.postgresql.org/docs/10/libpq-pgpass.html и https://www.postgresql.org/docs/10/libpq-envars.html (външни връзки).

    Ако горното не работи, паролата на скриптовете може да бъде посочена на линията за изпълнение:

    $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. Създайте папка за резервни файлове, например: E:\PostgresBackups\..

  3. Създаване на папка за архивиране на скрипт файлове, например: E:\PostgresBackupScripts\.

  4. Създаване на скрипта за резервно копие в: E:\PostgresBackupScripts\backup.ps1 с трите команди, както е показано по-долу:

    • c:\PostgreSQL\bin\pg_dump.exe -Ft -U dbadmin -d postgres -f e:\PostgresBackups\db_postgres-$(((get-date).ToUniversalTime()).ToString ("yyyymDDhmssZ").tar

    • c:\PostgreSQL\bin\pg_dump.exe -Ft -U dbadmin -d BriefCam -f e:\PostgresBackups\db_BriefCam-$(((get-date).ToUniversalTime()).ToString ("yyyymDDhmssZ").tar

    • #ls -file E:\PostgresBackups\db*.tar | къде {(get-date) - $_.creationtime -gt 15.} | Remove-Item -Verbose

    *Третата команда по-горе трябва да се коригира според необходимия период на задържане на резервното копие, като се премахне знакът "#" в началото на линията и се промени числото 15, тъй като представлява броят на дните назад. Например, ако искате да конфигурирате скрипта за изтриване на всички файлове, по-стари от 7 дни, ще трябва да промените номера 15 на 7.

  5. Тествайте създаването на резервното копие и премахването на старите файлове, като настроите -gt на 0 и изпълните следната команда в Windows cmd:

    powershell.exe e:\PostgresBackupScripts\backup.ps1

    Replicating PostgresBackupScripts.png

    Това ще премахне всички създадени файлове.

  6. Регулирайте периода на съхранение на резервните копия, както е споменато в долния край на стъпка 4 по-горе.

  7. Добавете скрипта за резервно копие към графика на задачите на Windows, както следва:

    1. Настройте полето "Програма/скрипт" на следния път:

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

    2. В полето "Добави аргументи" задайте следното: E:\PostgresBackupScripts\backup.ps1

      Replicating add arguments.png
  8. Настройте спусъците и времето съответно.

    Replicating set triggers.png
  9. Задайте задачата да се изпълнява независимо дали потребителят е влязъл в профила си и запишете паролата.

    Replicating task scheduler.png
  10. На тестовия сървър проверете дали файловете са възстановими. Този тест трябва да бъде част от текущата ви рутина.

Ето един пример за командата за възстановяване:

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

Параметърът -c извършва пускане и създаване. За допълнителни варианти вж.:

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

Връщане Към Основния Сървър, След Като Е Поправен

Ако използвате вторичен сървър, защото има проблем с основния сървър, този раздел описва как да се върнете към основния сървър, след като проблемът е отстранен.

Забележка

Подробностите за процеса по-долу могат да варират в зависимост от това какъв вид повреда е претърпял основният сървър. За да разгледате най-тежкия случай (абсолютна катастрофа на първичния сървър), стъпките по-долу включват нова инсталация.

  1. Инсталирайте операционната система от нулата.

  2. Изпълнете стъпките от раздела "Стъпки" на основния сървър на текущия основен сървър.

  3. Изпълнете всички действия, описани в разделите по-долу, на сървърите, като се има предвид, че сървърът, който е преинсталиран, вече е технически "вторичен" екземпляр:

  4. Спри услугата PostgreSQL на сървъра, използван като основен сървър.

  5. Проверете дали BriefCam системата работи правилно.

  6. Изпълнете стъпки за създаване на реплика на сървъра, използван като основен сървър.