Резервное копирование и миграция 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
Миграция на другой сервер
На новом сервере выполните установку TVIP TMS.
Скопируйте архив со старого сервера:
scp /backup/tms-backup.tar.gz username@host:/backup/
На новом сервере примените архив:
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