chore(deploy): leave database backups to external tools
The app no longer dumps Postgres, restores it, or checks copies in CI. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
1 parent
978f03b8f8
commit
dfc72b1d69
13 files changed
+16
-300
No files matched your search
@@ -25,7 +25,6 @@
|
||||
├── models/ # модели Essentia (скачиваются при первом старте analyzer)
|
||||
├── updates/ # кэш APK релизов
|
||||
├── uploads/ # staging очереди на добавление (размер ≈ лимит очереди, по умолчанию 10 ГБ)
|
||||
├── backups/
|
||||
└── caddy/ # сертификаты Let's Encrypt (если используется compose.tls.yaml)
|
||||
```
|
||||
|
||||
@@ -95,27 +94,6 @@
|
||||
|
||||
Пошаговая установка на домен — [install-guide.md](install-guide.md).
|
||||
|
||||
## Бэкапы
|
||||
|
||||
- Контейнер `backup` (`deploy/backup.sh loop`): каждый день в `BACKUP_HOUR`:30 UTC (по умолчанию 3:30) —
|
||||
`pg_dump -Fc` → `/srv/pipu/backups/daily/`, хранится `BACKUP_KEEP_DAILY` = 14 последних; первая копия за неделю
|
||||
копируется в `weekly/` (`BACKUP_KEEP_WEEKLY` = 8). Рядом с копией — `*.counts`: число строк в каждой таблице.
|
||||
- Раз в неделю копия **проверяется восстановлением**: разворачивается во временную базу `pipu_verify`, сверяются
|
||||
таблицы и число строк, база удаляется; время последней успешной проверки — `backups/.last-verify`, ошибки —
|
||||
в `docker compose logs backup` («ПРОВЕРКА НЕ ПРОЙДЕНА»). Тот же цикл копия → проверка → восстановление
|
||||
выполняется в CI (`ci / db`) на базе после сквозного сценария.
|
||||
- `update.sh` перед обновлением делает внеочередную копию.
|
||||
- Вручную: `docker compose run --rm backup once` — копия сейчас; `docker compose run --rm backup verify /backups/daily/<файл>`.
|
||||
- Восстановление: `./restore.sh` — список копий, `./restore.sh daily/pipu-….dump` — останавливает api, рекомендации и
|
||||
анализ, проверяет копию, переименовывает текущую базу в `pipu_before_restore_<время>` (страховка; удалить —
|
||||
`docker compose exec postgres dropdb -U pipu <имя>`), восстанавливает и запускает сервисы; поиск переиндексируется
|
||||
при старте api. Redis (сессии волны, очереди) не восстанавливается — пользователи просто начнут новую волну.
|
||||
- Копии лежат на том же сервере: для защиты от потери диска синхронизируйте `/srv/pipu/backups` на другую машину
|
||||
(например, `rclone sync` или `rsync` по cron).
|
||||
- Meilisearch, кэши и модели **не бэкапятся** — восстанавливаются (`reindex`, повторный транскод / анализ).
|
||||
- Признаки анализа хранятся в Postgres — после восстановления из бэкапа повторный многочасовой анализ не нужен.
|
||||
- Сама музыка — на NFS, вне зоны ответственности приложения.
|
||||
|
||||
## Обновление
|
||||
|
||||
```bash
|
||||
|
||||
Reference in new issue
Block a user