infra: add PostgreSQL daily backup via pg_dump with rotation #61

Closed
Toutsu wants to merge 0 commits from feature/issue-57-postgresql-backup into main
Owner

Summary

Реализует ежедневный backup PostgreSQL через сервис db-backup в Docker Compose, закрывая issue #57.

Changes

  • compose.yaml: добавлен сервис db-backup (postgres:17-alpine) с cron-задачей pg_dump в 03:00, volume pgbackups для хранения дампов, ротация по BACKUP_RETENTION_DAYS.
  • .env.example: добавлены BACKUP_RETENTION_DAYS (default: 7) и BACKUP_VOLUME_NAME.
  • scripts/restore.sh: bash-скрипт для восстановления из последнего (или указанного) дампа с подтверждением перезаписи БД.
  • README.md: раздел «💾 Backup и восстановление» с инструкциями.
  • Версия: bump 1.14.0 → 1.15.0 (синхронизировано в 4 файлах).

Test plan

  • dotnet build GM-Relay.slnx -c Release — 0 warnings, 0 errors
  • CI PR checks проходят
  • Deploy pipeline успешен
  • Release v1.15.0 опубликован

Workflow

  • CI passes
  • Code review approved
  • Deployed
  • Release published

Closes #57

## Summary Реализует ежедневный backup PostgreSQL через сервис `db-backup` в Docker Compose, закрывая issue #57. ## Changes - **`compose.yaml`**: добавлен сервис `db-backup` (postgres:17-alpine) с cron-задачей `pg_dump` в 03:00, volume `pgbackups` для хранения дампов, ротация по `BACKUP_RETENTION_DAYS`. - **`.env.example`**: добавлены `BACKUP_RETENTION_DAYS` (default: 7) и `BACKUP_VOLUME_NAME`. - **`scripts/restore.sh`**: bash-скрипт для восстановления из последнего (или указанного) дампа с подтверждением перезаписи БД. - **`README.md`**: раздел «💾 Backup и восстановление» с инструкциями. - **Версия**: bump 1.14.0 → 1.15.0 (синхронизировано в 4 файлах). ## Test plan - [x] `dotnet build GM-Relay.slnx -c Release` — 0 warnings, 0 errors - [ ] CI PR checks проходят - [ ] Deploy pipeline успешен - [ ] Release `v1.15.0` опубликован ## Workflow - [ ] CI passes - [ ] Code review approved - [ ] Deployed - [ ] Release published Closes #57
Toutsu added 1 commit 2026-05-12 13:37:40 +03:00
infra: add PostgreSQL daily backup via pg_dump with rotation
PR Checks / test-and-build (pull_request) Successful in 6m24s
121272fdfe
- Add db-backup service to compose.yaml (postgres:17-alpine + cron)
- Add pgbackups volume for backup storage
- Add scripts/restore.sh for manual restore from latest backup
- Update .env.example with BACKUP_RETENTION_DAYS and BACKUP_VOLUME_NAME
- Document backup/restore flow in README

Bump version -> 1.15.0

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Toutsu added 1 commit 2026-05-12 14:05:35 +03:00
fix: address review feedback for backup infrastructure
PR Checks / test-and-build (pull_request) Successful in 6m52s
5a18cacb2e
- compose.yaml: rewrite db-backup to use heredoc script instead of inline
cron command, fixing date escaping and adding temp-file pipeline for
reliable error detection
- compose.yaml: fix pipefail issue by writing pg_dump to tmp file before
compression and rotation
- restore.sh: pass PGPASSWORD explicitly via docker compose exec -e
- restore.sh: use ". .env" with set -a/+a instead of fragile xargs export

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Toutsu closed this pull request 2026-05-12 16:20:42 +03:00
Some checks are pending
PR Checks / test-and-build (pull_request) Successful in 6m52s

Pull request closed

Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Toutsu/GmRelayBot#61