Резервное копирование и миграция TVIP TMS

Для резервного копирования и восстановления используется команда tms_ctl. Она сохраняет в один архив все данные платформы: дампы PostgreSQL, архивы MongoDB и JWT-токены, необходимые для работы микросервисов.

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

Создание архива:

sudo tms_ctl backup /backup/tms-backup.tar.gz

Если путь не указан, архив будет сохранён в /var/backups/tms/tms-backup-<timestamp>.tar.gz.

В архив попадают:

  • дампы баз данных tvip-tms, tvip-tms-audit и tvip-tms-vod;

  • дампы баз MongoDB images и content;

  • значения JWT-токенов (access-token-secret, refresh-token-secret);

  • файл manifest.yaml с метаданными архива (дата создания, версия tms_ctl, перечень компонентов).

Параметры команды позволяют исключить отдельные компоненты из архива:

  • --no-postgres — не выполнять резервирование PostgreSQL;

  • --no-mongo — не выполнять резервирование MongoDB;

  • --no-tokens — не сохранять JWT-токены.

Автоматическое резервное копирование

Для регулярного резервного копирования установите задание cron:

sudo tms_ctl backup --install-cron --keep-days 30 /backup/tms-backup.tar.gz

Параметр --keep-days N задаёт срок хранения архивов: файлы старше N дней удаляются автоматически. Задание регистрируется в /etc/cron.d/tms_ctl-backup, вывод запусков пишется в /var/log/tms_ctl-backup.log.

По умолчанию задание выполняется ежедневно в 03:00. Расписание можно задать параметром --schedule, принимающим стандартную cron-строку из пяти полей:

sudo tms_ctl backup --install-cron --schedule "30 2 * * *" --keep-days 30 /backup/tms-backup.tar.gz

Удалить задание:

sudo tms_ctl backup --uninstall-cron

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

Предупреждение

Восстановление перезаписывает содержимое существующих баз данных и JWT-токены. Перед выполнением убедитесь, что архив относится именно к этой платформе.

sudo tms_ctl restore /backup/tms-backup.tar.gz

Команда автоматически:

  • завершает активные соединения с восстанавливаемыми базами PostgreSQL;

  • пересоздаёт базы и загружает в них данные из архива;

  • восстанавливает базы MongoDB;

  • возвращает JWT-токены в файлы конфигурации микросервисов.

Параметры --no-postgres, --no-mongo и --no-tokens позволяют восстановить только часть архива.

По умолчанию после восстановления базы tvip-tms значение device.authkey обнуляется — это нужно при переносе на другой сервер, чтобы клиентские устройства повторно прошли привязку. Если архив восстанавливается на тот же стенд и сохранение активаций обязательно, добавьте флаг --no-reset-authkeys:

sudo tms_ctl restore --no-reset-authkeys /backup/tms-backup.tar.gz

Миграция на другой сервер

  1. На новом сервере выполните установку TVIP TMS.

  2. Скопируйте архив со старого сервера:

    scp /backup/tms-backup.tar.gz username@host:/backup/
    
  3. На новом сервере примените архив:

    sudo tms_ctl restore /backup/tms-backup.tar.gz
    

Внимание

Для миграции устройств без запроса логина и пароля включите опцию Allow Quick Binding в настройках провайдера.

При необходимости измените IP-адрес сервера TVIP TMS или перенаправьте DNS на новый адрес.

Ручные процедуры

Команды ниже применяются в нестандартных сценариях или в качестве альтернативы tms_ctl backup / tms_ctl restore.

Создание резервной копии Базы данных PostgreSQL

Сделать резервную копию базы данных можно с помощью утилиты pg_dump:

pg_dump --no-owner  -U tvip-tms tvip-tms  >  /backup/tvip-tms.sql

Подсказка

C помощью параметра --exclude-table-data можно исключить таблицы, которые не требуют резервирования, для уменьшения размера файла резервной копии и ускорения процесса восстановления:

pg_dump --no-owner --exclude-table-data=device_stat_channel -U tvip-tms tvip-tms  >  /backup/tvip-tms.sql

При необходимости сделайте резервные копии дополнительных баз данных:

pg_dump --no-owner -U tvip-tms tvip-tms-audit >  /backup/tvip-tms-audit.sql
pg_dump --no-owner -U tvip-tms tvip-tms-vod >  /backup/tvip-tms-vod.sql

Скопируйте резервную копию базы данных помощью утилиты scp:

scp /backup/tvip-tms.sql username@host:/backup/

Восстановление из резервной копии Базы данных PostgreSQL

Убедитесь, что система соответствует минимальным требованиям TVIP TMS.

Перед установкой TVIP TMS необходимо установить базу данных и восстановить данные из резервной копии.

Установите и проверьте, что выбрана локаль: [*] en_US.UTF-8 UTF-8. При необходимости добавьте необходимые вам локали.

sudo apt -y install postgresql

Создайте базу данных с именем tvip-tms и пользователя tvip-tms:

su -c "createuser tvip-tms && createdb -O tvip-tms tvip-tms" postgres

При необходимости создайте дополнительные базы данных:

su -c "createdb -O tvip-tms tvip-tms-audit" postgres
su -c "createdb -O tvip-tms tvip-tms-vod" postgres

Измените параметры доступа к postgres:

sed -i /etc/postgresql/*/main/pg_hba.conf -e "s|local   all             all                                     peer|local   all             all                                     trust|"
sed -i /etc/postgresql/*/main/pg_hba.conf -e "s|host    all             all             127.0.0.1/32            md5|host    all             all             127.0.0.1/32            trust|"
sed -i /etc/postgresql/*/main/pg_hba.conf -e "s|host    all             all             127.0.0.1/32            scram-sha-256|host    all             all             127.0.0.1/32            trust|"
systemctl reload postgresql

Восстановление резервной копии базы данных:

psql -U tvip-tms tvip-tms  < /backup/tvip-tms.sql

При необходимости восстановите также дополнительные базы данных:

psql -U tvip-tms tvip-tms-vod  < /backup/tvip-tms-vod.sql
psql -U tvip-tms tvip-tms-audit  < /backup/tvip-tms-audit.sql

Сбросьте значение для auth key:

psql -U tvip-tms tvip-tms
update device set authkey = null;
\q

Установите TVIP TMS.

Внимание

Для миграции устройств без запроса логина и пароля включите опцию Allow Quick Binding в настройках провайдера.

При необходимости измените ip адрес вашего сервера TVIP TMS или перенаправьте DNS на новый TVIP TMS сервер.

Создание и восстановление резервной копии MongoDB

Предупреждение

Создание резервной копии базы данных MongoDB является обязательным в случае необходимости переноса или создания резервной копии базы данных VOD. В противном случае изображения связаннные с контентом из базы данных VOD (постеры фильмов, скриншоты серий и т.д.) будут отсутствовать в системе после её импорта.

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

mongodump --db images --gzip --archive > /mongoBackup/images.dump.gz

Установите базу данных MongoDB на новом сервере:

apt install mongodb-org
systemctl start mongod.service
systemctl enable mongod.service

Восстановите резервную копию MongoDB, с помощью утилиты mongorestore:

mongorestore --gzip --archive=/mongoBackup/images.dump.gz

Примечание

Если необходимо сохранить статистику, то сохраните и восстановите резервную копию для базы данных content:

mongodump --db content --gzip --archive > /mongoBackup/content.dump.gz
mongorestore --gzip --archive=/mongoBackup/content.dump.gz