Резервное копирование и восстановление событий в базах данных 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🔗
Узнайте, какие базы данных размещены на сервере, выполнив следующие действия:
Нажмите Win + R, введите cmd и откройте командную строку.
Выполните последовательно следующие команды:
cd "C:\Program Files\PostgreSQL\16\bin" psql.exe -h localhost -U postgres -W -l
После запроса Password: введите в командной строке пароль и нажать Enter. Во время ввода в целях безопасности символы пароля на экран не выводятся.
После этого на экран будет выведен список всех баз данных.
Список баз данных на сервере Linux🔗
Подключитесь к Linux-серверу по SSH:
ssh имя_пользователя_linux@IP_СЕРВЕРА
Остановите на сервере службу сервера видеонаблюдения:
sudo systemctl stop macroscop.service
Получите список всех имеющихся на сервере баз данных и табличных пространств:
sudo -u postgres psql -l sudo -u postgres psql -c “\db”
Резервное копирование событий в базах данных Macroscop с версии 4.6🔗
Примечание
На примере базы archive_event_xxxxxxx
Резервное копирование на Windows🔗
Остановите серверное приложение Macroscop на сервере (см. Как остановить сервер Macroscop?).
Нажмите Win + R, введите cmd, нажмите Ctrl + Shift + Enter. Откроется командная строка в режиме администратора.
Перейдите в папку с PostgreSQL^
cd "C:\Program Files\PostgreSQL\16\bin"
Создайте дамп базы данных:
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🔗
Остановите на сервере службу сервера видеонаблюдения:
sudo systemctl stop macroscop.service
Создайте каталог для дампов и дайте ему права пользователю (на примере для пользователя postgres):
sudo mkdir -p /db-backups sudo chown -R 750 /db-backups
Создайте дамп базы данных:
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🔗
Остановите серверное приложение Macroscop на сервере (см. Как остановить сервер Macroscop?).
Очистите данные перед восстановлением базы данныхиз дампа:
psql -d archive_event_xxxxxxx -c "DROP SCHEMA public CASCADE; CREATE SCHEMA public;"
Восстановите данные из дампа:
pg_restore.exe -h localhost -U postgres -W -d archive_event_xxxxxxx -v C:\db-backups\archive_event_xxxxxxx.dump
Дождитесь завершения процесса восстановления, и только после этого запустите серверное приложение Macroscop.
Подключитесь приложением Macroscop Клиент к системе с новым Linux-сервером и проверьте наличие импортированных данных.
Восстановление на Linux🔗
Остановите на сервере службу сервера видеонаблюдения:
sudo systemctl stop macroscop.service
Очистите данные перед восстановлением базы данныхиз дампа:
sudo -u postgres psql -d archive_event_xxxxxxx -c "DROP SCHEMA public CASCADE; CREATE SCHEMA public;"
Восстановите данные из дампа базы данных:
sudo -u postgres pg_restore -h localhost -U macroscop -W -d archive_event_xxxxxxx -v /db-backups/archive_event_xxxxxxx.dump
Дождитесь завершения процесса восстановления, и только после этого запустите на сервере службу сервера видеонаблюдения:
sudo systemctl start macroscop.service
Подключитесь приложением Macroscop Клиент к системе с новым Linux-сервером и проверьте наличие импортированных данных.