[P0] Off-box бэкап tradein-postgres + restore-тест + hardening backup-скрипта #2203

Open
opened 2026-07-02 19:17:23 +00:00 by lekss361 · 2 comments
Owner

Эпик: #2200

Находка (Ops, CRITICAL, verified): все бэкапы локальные — /opt/gendesign/backups/tradein/ на том же /dev/vda1, что и /var/lib/docker. backup-tradein-db.sh:16-42 не имеет remote-upload; S3-путь в ops/backup.sh мёртв (нет /etc/default/gendesign-backup). Один сбой диска/компрометация/rm = БД (4.3ГБ корпуса за месяцы) + 7 дампов + Forgejo одновременно. Плюс backup-tradein-db.sh:27 pg_dump 2>/dev/null глотает stderr (тихий partial-дамп проходит), логи в /tmp (стёрты на reboot).

Acceptance:

  • Ежедневный off-box аплоад дампа (S3/rclone/rsync на другой хост) с ретеншеном.
  • Реальный restore-тест: развернуть последний дамп в чистую БД, сверить row-counts ключевых таблиц.
  • Hardening: MIN_DUMP_BYTES floor, stderr не глотать, алерт если cron не отработал.
  • Off-box копия .env.runtime (иначе pgp_sym_encrypted CIAN-cookie в дампах недекодируемы).

Scope: tradein-mvp/deploy/backup-tradein-db.sh, ops/. needs-human: внешнее хранилище/креды.

Эпик: #2200 **Находка (Ops, CRITICAL, verified):** все бэкапы локальные — `/opt/gendesign/backups/tradein/` на том же `/dev/vda1`, что и `/var/lib/docker`. `backup-tradein-db.sh:16-42` не имеет remote-upload; S3-путь в `ops/backup.sh` мёртв (нет `/etc/default/gendesign-backup`). Один сбой диска/компрометация/`rm` = БД (4.3ГБ корпуса за месяцы) + 7 дампов + Forgejo одновременно. Плюс `backup-tradein-db.sh:27` `pg_dump 2>/dev/null` глотает stderr (тихий partial-дамп проходит), логи в `/tmp` (стёрты на reboot). **Acceptance:** - [ ] Ежедневный off-box аплоад дампа (S3/rclone/rsync на другой хост) с ретеншеном. - [ ] Реальный restore-тест: развернуть последний дамп в чистую БД, сверить row-counts ключевых таблиц. - [ ] Hardening: `MIN_DUMP_BYTES` floor, stderr не глотать, алерт если cron не отработал. - [ ] Off-box копия `.env.runtime` (иначе pgp_sym_encrypted CIAN-cookie в дампах недекодируемы). Scope: `tradein-mvp/deploy/backup-tradein-db.sh`, `ops/`. _needs-human: внешнее хранилище/креды._
lekss361 added the
needs-human
observability
priority/p0
scope/devops
tradein
labels 2026-07-02 19:20:15 +00:00
Author
Owner

needs-human (night shift, 2026-07-03): off-box бэкап tradein-postgres требует внешнего хранилища и кредов вне коробки — провижининг за человеком. Что нужно: (1) выбрать хранилище (S3-совместимое / другой VPS / rclone-таргет), (2) создать креды и положить их на VPS вне git, (3) сказать боту — скрипт pg_dump+ротация+restore-тест в PR сделаем по готовому таргету (код-часть bot-doable, отмечено в issue). Без off-box копии единственный бэкап живёт на той же коробке, что и БД (single point of loss).

needs-human (night shift, 2026-07-03): off-box бэкап tradein-postgres требует внешнего хранилища и кредов вне коробки — провижининг за человеком. Что нужно: (1) выбрать хранилище (S3-совместимое / другой VPS / rclone-таргет), (2) создать креды и положить их на VPS вне git, (3) сказать боту — скрипт pg_dump+ротация+restore-тест в PR сделаем по готовому таргету (код-часть bot-doable, отмечено в issue). Без off-box копии единственный бэкап живёт на той же коробке, что и БД (single point of loss).
Author
Owner

По решению user (2026-07-03): оставляем открытым, приоритет понижен до минимального (p0 → p3). Off-box бэкап остаётся в бэклоге как tech-debt-страховка.

По решению user (2026-07-03): оставляем открытым, приоритет понижен до минимального (p0 → p3). Off-box бэкап остаётся в бэклоге как tech-debt-страховка.
lekss361 added
priority/p3
and removed
priority/p0
labels 2026-07-03 07:56:56 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: lekss361/gendesign#2203
No description provided.