Бэкап и восстановление¶
У central один носитель состояния — PostgreSQL. Значит, весь бэкап инсталляции — это регулярный дамп одной базы; ни state-каталоги стримеров, ни архив в него не входят и не нужны для восстановления управляющего контура.
Снимайте дамп¶
pg_dump -U catena catena > catena-$(date +%F).sql
Учётные данные — в DATABASE_URL из /etc/catena/secrets.env. Ставьте на таймер и увозите копии с машины: дамп маленький (конфигурация и учёт, не медиа), снимать его можно хоть ежечасно без оглядки на нагрузку.
Сам файл /etc/catena/secrets.env сохраните один раз при установке: в дампе его нет, а восстановленной инсталляции понадобятся те же пароли.
Восстановление¶
Порядок проверен целиком — от дампа до ожившего кластера:
- Остановите central:
systemctl stop catena. - Пересоздайте базу и залейте дамп:
psql -U catena -d postgres -c 'DROP DATABASE catena WITH (FORCE);' -c 'CREATE DATABASE catena OWNER catena;'
psql -U catena -d catena < catena-2026-07-21.sql
- Запустите central:
systemctl start catena.
Дальше ничего делать не нужно: каналы, реестр и настройки вернулись вместе с дампом, а стримеры — они всё это время вещали сами по себе — переподключаются автоматически, в пределах минутной паузы ретрая. Если дамп оказался старше того, что стримеры успели применить, они получат от central явный сигнал и заберут его состояние как истину — откат версий кластер не рвёт.
Полное разрушение central — без остановки вещания¶
Это главная гарантия архитектуры Catena: гибель central-машины целиком — диск, база, всё — не прерывает эфир. Стримеры вещают автономно, зрители продолжают смотреть, и пока вы строите новый central, никто из них этого не замечает.
- Поставьте Catena на новую машину (установка), не заходя в консоль.
- Верните сохранённый
/etc/catena/secrets.env(или впишите в новый прежнийDATABASE_URL, если база внешняя и уцелела). - Восстановите базу из дампа, как выше, и запустите сервис.
Стримеры находят нового central по прежнему адресу и переподключаются — их ключи приехали в дампе вместе с реестром. Управляющий контур погиб и отстроен заново, а вещание этого не заметило: эфир не прерывался ни на секунду.
Если дампа нет — управляющий контур строится заново: пустой central, каналы заводятся с нуля, а каждый осиротевший стример переподцепляется сбросом state-каталога и новым join-токеном. Эфир на стримерах идёт и в этом сценарии — но конфигурацию каналов придётся восстанавливать руками. Один регулярный pg_dump избавляет от проблем с перебалансировкой всего кластера.
Что бэкапить не нужно¶
- State-каталоги стримеров — это идентичность конкретной машины; при её гибели машину просто присоединяют заново.
- Архив DVR — медиаданные на дисках стримеров; их сохранность — вопрос дисков и репликации, не дампа базы.
- Хранилище метрик — в памяти, история накапливается заново.