Skip to main content

Руководство по установке BriefCam

Репликация базы данных PostgreSQLBriefCam

Последнее обновление: 7 минут чтения
Версия2025r1
ЯзыкРусский

В этом разделе подробно описывается, как оптимизировать репликацию базы данных PostgreSQL.

Предварительные условия, примечания и соглашения

Примечание

При вставке команд из примеров в этом документе используйте Windows PowerShell, а не командную строку (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): 64-разрядные записи ODBC (поле "Сервер" )

      ODBC Driver Setup.png
  5. Рекомендуется протестировать все функции систем перед созданием дополнительного сервера. Обратите внимание на все исходные значения изменяемых параметров.

  6. На всех серверах, где развернуты компоненты сервера BriefCam, настройте файл hosts так, чтобы он указывал на основной сервер базы данных PostgreSQL — это переопределит DNS.

  7. В откройте раздел " Параметры среды" и настройте параметрыDB. LocalStorageAddress и VideoProductsPath такBriefCam Administrator Console, чтобы они использовали имена хостов, а не IP-адреса.

  8. Скорость PostgreSQL base_backup значительно варьируется в зависимости от настроек среды (скорость SSD/HDD/NIC). Как правило, на хранилище ISCSI (10 Гбит/с связывает HDD-массив) и сетевом адаптере 1 Гбит/с (vmxnet3) в виртуальной среде требуется около 40 минут для резервного копирования базы данных PostgreSQL, содержащей 90 ГБ BriefCamданных.

    Проверьте скорость в реальной среде, чтобы оценить, сколько времени потребуется для резервного копирования базы, чтобы правильно задать интервал времени для процесса создания реплики.

  9. Используйте фактический путь к PostgreSQL_Dataкаталогу. Значение по BriefCamумолчанию ― C:\PostgreSQL_Data. Однако это может отличаться в разных настройках (в дальнейшем в этом документе будет использоваться BriefCamпуть по умолчанию).

  10. Используйте фактический pgsql.exeпуть к файлу. По BriefCamумолчанию используется путь C:\PostgreSQL\bin\psql.exe(далее в этом разделе будет использоваться BriefCamпуть по умолчанию).

Действия на основном сервере

  1. Подключитесь к основной оболочке SQL сервера PostgreSQL и проверьте местонахождение файлов конфигурации и адаптера главной шины, выполнив следующие команды:

    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. Создайте резервные копии исходных hbaфайлов configи, выполнив следующие команды в 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> dir: C/PostgreSQL_Data/*.conf.*

    Каталог: C:\PostgreSQL_Data

    Имя длины режима LastWriteTime

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

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

    -a---- 11/10/2021 11:25 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 основного сервера PostgreSQL, выполнив следующие команды:

      C:\PostgreSQL\bin\psql.exe -Адбадмин postgres

      \pset pager выкл.

      SELECT_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папку <ph>.

    2. Создайте новую папку с именем PostgreSQL_Dataи на вкладке Разрешения папки добавьте Полное управление в Everyone.

      Replicating PostgreSQL properties.png
  4. Выполните резервное копирование базы данных PostgreSQL с основного на вспомогательный сервер следующим образом:

    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 строка)

    postgres=#

Примечание

Эту проверку необходимо выполнять не реже одного раза в день.

Активация дополнительного сервера в качестве основного сервера

В этом разделе описана процедура активации вспомогательного сервера в качестве основного экземпляра базы данных PostgreSQL в случаях, когда основной сервер неисправен и требуется восстановление/миграция.

  1. Измените файл hosts на всех серверах 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 в планировщике задач Windows
  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 -Udbadmin -d postgres -f:\PostgresРезервные копии\db_postgres-$(((get-date).ToUniversalTime()).ToString("ггггМдМдТНммссЗ").tar

    • c:\PostgreSQL\bin\pg_dump.exe -Ft -Udbadmin -d briefcam -f e:\PostgresBackups\db_briefcam-$(((get-date).ToUniversalTime()).ToString("ггггМдТГММССз").tar

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

    *Третью команду выше следует скорректировать в соответствии с требуемым периодом хранения резервной копии, удалив знак "#" в начале строки и изменив число 15, поскольку оно представляет количество дней назад. Например, если вы хотите настроить сценарий на удаление всех файлов старше 7 дней, вам нужно будет изменить номер с 15 на 7.

  5. Проверьте создание резервной копии и удаление старых файлов, установив -gt в 0 и выполните следующую команду в командной строке Windows:

    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. Выполните действия по созданию реплики на сервере, который использовался в качестве основного сервера.