Резервное копирование и восстановление FindFace Multi и всех данных

Этот раздел посвящен резервному копированию и восстановлению хранилищ данных FindFace Multi и вашей системы в целом.

В этом разделе:

Список хранилищ

FindFace Multi использует следующие хранилища данных:

  • База данных векторов признаков на основе Tarantool, в которой хранятся векторы признаков и события.

  • Основная база данных системы на основе PostgreSQL, в которой хранятся внутренние данные системы, карточки, учетные записи пользователей и настройки камер.

  • Каталог /var/lib/findface-security/uploads, в котором хранятся загруженные в карточки фотографии, видеофайлы, полные кадры событий и счетчиков, а также миниатюры объектов.

  • Каталог /var/lib/ffupload/, в котором хранятся такие артефакты событий, как нормализованные изображения объектов.

    Примечание

    В данном каталоге также хранятся видеофрагменты, если в системе активирована функция Видеомагнитофон.

  • (Только вместе с Видеомагнитофоном) База данных на основе MongoDB, в которой хранится метаинформация о видеофрагментах, включая их точное местоположение в хранилище /var/lib/ffupload/.

Резервное копирование и восстановление базы данных векторов признаков (Tarantool)

В базе данных векторов признаков на основе Tarantool есть следующие галереи:

  • ffsec_body_events: векторы признаков, извлеченные из обнаруженных на видео силуэтов.

  • ffsec_body_objects: векторы признаков, извлеченные из загруженных в картотеку изображений силуэтов.

  • ffsec_body_clusters: центроиды кластеров силуэтов.

  • ffsec_car_events: векторы признаков, извлеченные из обнаруженных на видео автомобилей.

  • ffsec_car_objects: векторы признаков, извлеченные из загруженных в картотеку изображений автомобилей.

  • ffsec_car_clusters: центроиды кластеров автомобилей.

  • ffsec_face_events: векторы признаков, извлеченные из обнаруженных на видео лиц.

  • ffsec_face_objects: векторы признаков, извлеченные из загруженных в картотеку изображений лиц.

  • ffsec_face_clusters: центроиды кластеров лиц.

  • ffsec_user_face: векторы признаков, извлеченные из фотографий пользователей FindFace Multi для аутентификации по лицу.

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

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

Резервную копию базы данных также нужно обязательно создать перед миграцией системы на другую модель нейронной сети.

Утилиты

Для резервного копирования и восстановления базы данных векторов признаков FindFace Multi необходимы следующие утилиты:

  1. резервное копирование: findface-storage-api-dump,

  2. восстановление: findface-storage-api-restore.

Данные утилиты автоматически устанавливаются вместе с компонентом findface-sf-api.

Резервное копирование базы данных

Для резервного копирования базы данных векторов признаков используйте утилиту findface-storage-api-dump следующим образом:

Важно

Сервисы findface-tarantool-server и findface-sf-api должны быть активны.

Примечание

Резервное копирование можно также применить к распределенной базе данных. В этом случае утилита findface-storage-api-dump создаст резервные копии всех шардов, указанных в /etc/findface-sf-api.ini.

  1. На сервере с установленным findface-sf-api создайте каталог для хранения резервных копий (/etc/findface_dump в примере ниже).

  2. Запустите утилиту findface-storage-api-dump следующей командой:

    sudo findface-storage-api-dump -output-dir=/etc/findface_dump -config /etc/findface-sf-api.ini
    

    Утилита создаст резервные копии всех галерей и запишет их в указанный каталог в виде файлов с соответствующими именами (ffsec_body_events.json, ffsec_face_events и т. д.) . Эти файлы содержат все данные, необходимые для полного восстановления галерей.

Восстановление базы данных

Для восстановления базы данных векторов признаков запустите утилиту findface-storage-api-restore для всех файлов в директории с резервными копиями:

sudo findface-storage-api-restore -config /etc/findface-sf-api.ini /etc/findface_dump/*.json

Процесс восстановления можно при необходимости прервать с сохранением выполненной работы. Для того чтобы продолжить процесс после прерывания, снова запустите утилиту findface-storage-api-restore.

Резервное копирование и восстановление основной базы данных (PostgreSQL)

Для резервного копирования основной базы данных ffsecurity на PostgreSQL выполните команду:

sudo -u postgres pg_dump ffsecurity > ffsecurity_postgres_backup.sql

Для того чтобы восстановить основную базу данных, выполните следующие действия:

  1. Остановите сервис findface-security.

    sudo systemctl stop findface-security.service
    
  2. Остановите сервис pgbouncer, чтобы удалить активные сессии с базой данных ffsecurity.

    sudo systemctl stop pgbouncer.service
    
  3. Откройте интерактивный терминал PostgreSQL.

    sudo -u postgres psql
    
  4. Удалите прежнюю базу данных ffsecurity.

    DROP DATABASE ffsecurity;
    
  5. Создайте новую базу ffsecurity. Выйдите из интерактивного терминала PostgreSQL.

    CREATE DATABASE ffsecurity WITH OWNER ntech ENCODING 'UTF-8' LC_COLLATE='C.UTF-8' LC_CTYPE='C.UTF-8' TEMPLATE template0;
    
  6. Запустите сервис pgbouncer.

    sudo systemctl start pgbouncer.service
    
  7. Восстановите содержимое базы данных из резервной копии.

    sudo -u postgres psql -d ffsecurity -f ffsecurity_postgres_backup.sql
    
  8. Перенесите схему базы данных из FindFace Multi в PostgreSQL, заново создайте группы пользователей с предустановленными правами и первого пользователя с правами администратора.

    sudo findface-security migrate
    sudo findface-security create_groups
    sudo findface-security create_default_user
    
  9. Запустите сервис findface-security.

    sudo systemctl start findface-security.service
    

Резервное копирование и восстановление артефактов (findface-upload)

Артефакты FindFace Multi, такие как загруженные фотографии, видеофайлы и артефакты событий (полные кадры, миниатюры объектов и нормализованные изображения объектов) хранятся в следующих каталогах:

  • /var/lib/findface-security/uploads

  • /var/lib/ffupload/

Примечание

Директория /var/lib/ffupload/ также хранит видеофрагменты, если в вашей системе есть работающий экземпляр Видеомагнитофона.

Примечание

Обе директории управляются компонентом findface-upload.

Для резервного копирования артефактов выполните команды:

sudo tar -cvzf /home/some_directory/var_lib_ffsecurity_uploads.tar.gz /var/lib/findface-security/uploads/
sudo tar -cvzf /home/some_directory/var_lib_ffupload.tar.gz /var/lib/ffupload/

Для того чтобы восстановить артефакты, перейдите в корневую директорию и выполните команды:

cd /
sudo tar -xvf /home/some_directory/var_lib_ffsecurity_uploads.tar.gz
sudo tar -xvf /home/some_directory/var_lib_ffupload.tar.gz

Резервное копирование и восстановление базы данных Видеомагнитофона (MongoDB)

MongoDB — это стороннее программное обеспечение, реализующее базу данных Видеомагнитофона. Эта база данных хранит метаинформацию о видеофрагментах, включая их точное местонахождение в хранилище /var/lib/ffupload/.

Для резервного копирования MongoDB выполните команду:

sudo mongodump -o=/home/some_directory/mongodb_backup

Для восстановления MongoDB выполните команду:

sudo mongorestore /home/some_directory/mongodb_backup

Резервное копирование и восстановление настроек

Полный набор файлов конфигурации FindFace Multi, включая структурную схему Tarantool, автоматически резервируется при удалении экземпляра продукта. Резервная копия хранится в директории ~/ffmulti_bak_${datetime}/etc/.

При переустановке FindFace Multi настройки должны быть восстановлены после завершения консольной установки или сразу после установки сервисов из APT-репозитория.

Полный набор резервных копий файлов следующий:

ls -R -p
.:
findface-counter.ini.bak         findface-liveness-api.ini.bak  findface-security/       findface-video-manager.conf.bak  findface-video-streamer-cpu.ini.bak  nginx/
findface-extraction-api.ini.bak  findface-ntls.cfg.bak          findface-sf-api.ini.bak  findface-video-storage.conf.bak  findface-video-worker-cpu(gpu).ini.bak

./findface-security:
config.py  tnt_schema.lua

./nginx:
sites-enabled/

./nginx/sites-enabled:
ffsecurity-nginx.conf

Для того чтобы восстановить настройки FindFace Multi, выполните следующие действия:

  1. Откройте файл конфигурации /etc/findface-security/config.py нового экземпляра FindFace Multi. Найдите параметр DATABASES -> default -> PASSWORD, в котором хранится пароль пользователя ntech от базы данных findface-security PostgreSQL. Скопируйте и вставьте его в резервную копию ~/ffmulti_bak_${datetime}/etc/findface-security/config.py.

    sudo vi /etc/findface-security/config.py
    
    DATABASES = {
       ‘default’:
         ‘PASSWORD’: ‘some_pass’
    
  2. В директории ~/ffmulti_bak_${datetime}/etc/ удалите из файлов расширение .bak любым доступным способом. Например, вы можете выполнить следующую команду.

    sudo rename 's/.ini.bak/.ini/' * && sudo rename 's/.conf.bak/.conf/' * && sudo rename 's/.cfg.bak/.cfg/' *
    

    Совет

    Если в вашей системе отсутствует команда rename, можно установить ее следующим образом:

    sudo apt install rename
    
  3. Рекурсивно скопируйте файлы резервных копий в каталог /etc.

    sudo cp -r * /etc
    
  4. Измените структуру базы данных с помощью исходного файла tnt_schema.lua.

    sudo findface-security make_tnt_schema | sudo tee /etc/findface-security/tnt_schema.lua
    
  5. Перезапустите сервисы.

    На CPU:

    sudo systemctl restart findface-counter findface-liveness-api findface-video-manager findface-extraction-api findface-ntls findface-sf-api findface-video-worker-cpu findface-security
    

    На GPU:

    sudo systemctl restart findface-counter findface-liveness-api findface-video-manager findface-extraction-api findface-ntls findface-sf-api findface-video-worker-gpu findface-security
    

    Сервисы Видеомагнитофона:

    sudo systemctl restart findface-video-streamer-cpu findface-video-storage
    

Резервное копирование и восстановление системы целиком

Если вы намерены создать резервную копию FindFace Multi перед его удалением, будет достаточно следовать пошаговым инструкциям в разделе Удаление экземпляра продукта. Предоставленный скрипт ffmulti_uninstall.sh может автоматически создать в директории ~/ffmulti_bak_${datetime}/ резервные копии файлов конфигурации FindFace Multi и всех хранилищ данных.

Для восстановления FindFace Multi после его удаления, используйте следующий алгоритм:

  1. Разверните FindFace Multi.

  2. Восстановите настройки из резервных копий файлов конфигурации.

  3. Восстановите Tarantool.

  4. Восстановите PostgreSQL.

  5. Восстановите артефакты системы.

  6. Восстановите MongoDB (если вы используете Видеомагнитофон).