Резервное копирование и восстановление событий в базах данных Macroscop с версии 4.6🔗

В Macroscop версии 4.7 в базах данных, содержащих события, вносятся следующие необратимые изменения: Изменены идентификаторы пользователей в тех событиях, инициаторами которых выступили пользователи, авторизовавшиеся через Active Directory (LDAP).

В связи с этим, в случае отката с версии 4.7 на 4.6, такие события не будут отображаться в клиентских приложениях и не попадут в выгружаемые отчёты. В то же время, после отката эти события сохранятся в базах данных. И после устранения причин, вызвавших откат, и следующего обновления до версии 4.7 — снова будут отображаться в клиентских приложениях и попадать в отчёты.

Если неприемлема ситуация, когда после отката на 4.6 не видны события пользователей Active Directory, зарегистрированные ещё до обновления, то можно перед обновлением сервера Macroscop сохранить резервные копии баз данных; и в случае отката — восстановить из этих резервных копий первоначальные данные. Но в таком случае все события (не только с пользователями Active Directory, а вообще все), зарегистрированные после обновления на версию 4.7, будут потеряны безвозвратно.

Ниже описаны процедуры резервного копирования и восстаноыления баз данных.

Основная информация и параметры подключения🔗

Наименования баз данных🔗

Для хранения данных системы видеонаблюдения Macroscop используется СУБД PostgreSQL 16.

На сервере могут размещаться базы данных, хранящие события, со следующими именами:

  • archive_event_xxxxxxx — база архивных событий.

    Здесь xxxxxxx — ID архивного диска. Для каждого диска создаётся собственная база данных.

    Пример:

    На архивном диске в папке MacroscopArchive в файле ArchiveLogicDrive.xml размещён идентификатор этого архивного диска:

    <?xml version="1.0" encoding="utf-8"?>
      <ArchiveLogicDriveConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
        <ArchiveLogicDriveId>5a5238b9-f1bf-460f-a5f4-b8a3e0cbf89b</ArchiveLogicDriveId>
        ...
        <ArchiveId>43679341-2c8d-4f87-a752-b43efc8b5d60</ArchiveId>
        ...
    

    База данных событий этого диска будет носить имя archive_event_5a5238b9f1bf460fa5f4b8a3e0cbf89b.

  • episodes_db_drive_xxxxxxx — база сервиса Архив эпизодов.

    Здесь xxxxxxx — ID архивного диска. Для каждого диска создаётся собственная база данных.

  • event_dbxxxxxxx — база сервиса Длительное хранение событий.

    Здесь xxxxxxx — ID архивного диска. Для каждого диска создаётся собственная база данных.

Параметры подключения к PostgreSQL🔗

Перед тем, как переносить базы данных, узнайте пароль, с которым серверное приложение Macroscop получает доступ к PostgreSQL (в примерах ниже на обоих серверах используется одинаковый пароль, но в реальности они могут различаться). Пароль от БД можно посмотреть в файле ArchiveSystem.xml: на Winduws он размещается в папке C:\ProgramData\MacroscopServerConfigs\, на Linux — в каталоге /opt/MacroscopServer/MacroscopServerConfigs/.

<?xml version="1.0" encoding="utf-8"?>
<ArchiveConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <ArchiveId>43679341-2c8d-4f87-a752-b43efc8b5d60</ArchiveId>
  ...
  <PostgreSqlConfig>
    <Ip>127.0.0.1</Ip>
    <Port>5432</Port>
    <User>postgres</User>
    <Password>masterkey</Password>
    ...

Список баз данных на сервере Windows🔗

Узнайте, какие базы данных размещены на сервере, выполнив следующие действия:

  1. Нажмите Win + R, введите cmd и откройте командную строку.

  2. Выполните последовательно следующие команды:

    cd "C:\Program Files\PostgreSQL\16\bin"
    psql.exe -h localhost -U postgres -W -l
    

    После запроса Password: введите в командной строке пароль и нажать Enter. Во время ввода в целях безопасности символы пароля на экран не выводятся.

После этого на экран будет выведен список всех баз данных.

Список баз данных на сервере Linux🔗

  1. Подключитесь к Linux-серверу по SSH:

    ssh имя_пользователя_linux@IP_СЕРВЕРА
    

Остановите на сервере службу сервера видеонаблюдения:

sudo systemctl stop macroscop.service
  1. Получите список всех имеющихся на сервере баз данных и табличных пространств:

    sudo -u postgres psql -l
    sudo -u postgres psql -c “\db”
    

Резервное копирование событий в базах данных Macroscop с версии 4.6🔗

Примечание

На примере базы archive_event_xxxxxxx

Резервное копирование на Windows🔗

  1. Остановите серверное приложение Macroscop на сервере (см. Как остановить сервер Macroscop?).

  2. Нажмите Win + R, введите cmd, нажмите Ctrl + Shift + Enter. Откроется командная строка в режиме администратора.

  3. Перейдите в папку с PostgreSQL^

    cd "C:\Program Files\PostgreSQL\16\bin"
    
  4. Создайте дамп базы данных:

    pg_dump.exe -h localhost -U postgres -W -Fc -b -v -f C:\db-backups\archive_event_xxxxxxx.dump archive_event_xxxxxxx
    

    После запроса Password: введите в командной строке пароль и нажать Enter. Во время ввода в целях безопасности символы пароля на экран не выводятся.

    В результате в папке C:\db-backups\ будет создан дамп *.dump*.

Резервное копирование на Linux🔗

  1. Остановите на сервере службу сервера видеонаблюдения:

sudo systemctl stop macroscop.service
  1. Создайте каталог для дампов и дайте ему права пользователю (на примере для пользователя postgres):

    sudo mkdir -p /db-backups
    
    sudo chown -R 750 /db-backups
    
  2. Создайте дамп базы данных:

    sudo -u postgres pg_dump -h localhost -U macroscop -W -Fc -b -v -f /db-backups/archive_event_xxxxxxx.dump archive_event_xxxxxxx
    

    В результате в каталоге /db-backups/ будет создан дамп.

Восстановление событий в базах данных Macroscop с версии 4.6🔗

Восстановление на Windows🔗

  1. Остановите серверное приложение Macroscop на сервере (см. Как остановить сервер Macroscop?).

  2. Очистите данные перед восстановлением базы данныхиз дампа:

    psql -d archive_event_xxxxxxx -c "DROP SCHEMA public CASCADE; CREATE SCHEMA public;"
    
  3. Восстановите данные из дампа:

    pg_restore.exe -h localhost -U postgres -W -d archive_event_xxxxxxx -v C:\db-backups\archive_event_xxxxxxx.dump
    
  4. Дождитесь завершения процесса восстановления, и только после этого запустите серверное приложение Macroscop.

  5. Подключитесь приложением Macroscop Клиент к системе с новым Linux-сервером и проверьте наличие импортированных данных.

Восстановление на Linux🔗

  1. Остановите на сервере службу сервера видеонаблюдения:

    sudo systemctl stop macroscop.service
    
  2. Очистите данные перед восстановлением базы данныхиз дампа:

    sudo -u postgres psql -d archive_event_xxxxxxx -c "DROP SCHEMA public CASCADE; CREATE SCHEMA public;"
    
  3. Восстановите данные из дампа базы данных:

    sudo -u postgres pg_restore -h localhost -U macroscop -W -d archive_event_xxxxxxx -v /db-backups/archive_event_xxxxxxx.dump
    
  1. Дождитесь завершения процесса восстановления, и только после этого запустите на сервере службу сервера видеонаблюдения:

    sudo systemctl start macroscop.service
    
  1. Подключитесь приложением Macroscop Клиент к системе с новым Linux-сервером и проверьте наличие импортированных данных.