Настроить ежесуточный pg_dump → S3 (Selectel или Yandex Object Storage) #3

Closed
opened 2026-04-26 11:24:44 +00:00 by lekss361 · 1 comment
lekss361 commented 2026-04-26 11:24:44 +00:00 (Migrated from github.com)

Скрипт ops/backup.sh готов, поддерживает опциональный S3 upload. Осталось завести бакет и креды.

Что сделать:

  1. Создать аккаунт Selectel (или Yandex Cloud), bucket gendesign-backups
  2. Сгенерить S3 access key + secret
  3. На VM создать /etc/default/gendesign-backup с переменными:
    S3_ENDPOINT=https://s3.ru-1.storage.selcloud.ru
    S3_BUCKET=gendesign-backups
    S3_ACCESS_KEY=...
    S3_SECRET_KEY=...
    
  4. Установить скрипт + cron:
    sudo cp /opt/gendesign/ops/backup.sh /usr/local/bin/gendesign-backup
    sudo chmod +x /usr/local/bin/gendesign-backup
    echo "30 3 * * * /usr/local/bin/gendesign-backup >> /var/log/gendesign-backup.log 2>&1" | sudo crontab -
    
  5. Настроить lifecycle policy на бакете: удалять файлы старше 30 дней

Acceptance:

  • Первый дамп в S3 после ручного запуска gendesign-backup
  • Cron срабатывает (проверить через 24 ч в логах)
  • ops/restore.sh тестово восстанавливает дамп в локальный dev-postgres

Стоимость: Selectel S3 free tier 1 GB или ~5-10 ₽/мес для нашего масштаба.

Скрипт `ops/backup.sh` готов, поддерживает опциональный S3 upload. Осталось завести бакет и креды. **Что сделать:** 1. Создать аккаунт Selectel (или Yandex Cloud), bucket `gendesign-backups` 2. Сгенерить S3 access key + secret 3. На VM создать `/etc/default/gendesign-backup` с переменными: ``` S3_ENDPOINT=https://s3.ru-1.storage.selcloud.ru S3_BUCKET=gendesign-backups S3_ACCESS_KEY=... S3_SECRET_KEY=... ``` 4. Установить скрипт + cron: ```bash sudo cp /opt/gendesign/ops/backup.sh /usr/local/bin/gendesign-backup sudo chmod +x /usr/local/bin/gendesign-backup echo "30 3 * * * /usr/local/bin/gendesign-backup >> /var/log/gendesign-backup.log 2>&1" | sudo crontab - ``` 5. Настроить lifecycle policy на бакете: удалять файлы старше 30 дней **Acceptance:** - [ ] Первый дамп в S3 после ручного запуска `gendesign-backup` - [ ] Cron срабатывает (проверить через 24 ч в логах) - [ ] `ops/restore.sh` тестово восстанавливает дамп в локальный dev-postgres **Стоимость:** Selectel S3 free tier 1 GB или ~5-10 ₽/мес для нашего масштаба.
Owner

Closing as duplicate of #71 (B5-1: Backup cron + S3).

#71 — это superset с priority/critical, более детальным scope (Selectel S3 + retention + sanity checks) и привязкой к B5 серии. ops/backup.sh уже готов (73 строки), осталось только верифицировать cron на VPS — это будет делаться в рамках #71.

Audit reference: audits/issues_audit_2026_05_16.md (2026-05-17).

Closing as duplicate of #71 (B5-1: Backup cron + S3). `#71` — это superset с priority/critical, более детальным scope (Selectel S3 + retention + sanity checks) и привязкой к B5 серии. `ops/backup.sh` уже готов (73 строки), осталось только верифицировать cron на VPS — это будет делаться в рамках #71. Audit reference: `audits/issues_audit_2026_05_16.md` (2026-05-17).
Sign in to join this conversation.
No milestone
No project
No assignees
2 participants
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#3
No description provided.