feat(ops): обязательный backup БД и файлов перед деплоем
This commit is contained in:
@@ -96,24 +96,38 @@ sudo certbot --nginx -d lms.our-place.ru --redirect -m admin@our-place.ru --agre
|
||||
```bash
|
||||
cd /opt/lms
|
||||
git pull
|
||||
./deploy/deploy.sh up # пересоберёт изменённые образы и перезапустит
|
||||
./deploy/deploy.sh up # backup → сборка → миграции → перезапуск
|
||||
```
|
||||
|
||||
Миграции БД (Flyway) применяются автоматически при старте сервисов.
|
||||
`deploy.sh up` **обязательно** делает backup перед обновлением. Если backup
|
||||
завершился ошибкой, деплой прерывается. Миграции БД (Flyway) применяются
|
||||
автоматически при старте сервисов.
|
||||
|
||||
## 8. Резервное копирование
|
||||
|
||||
```bash
|
||||
# БД
|
||||
docker compose -f docker-compose.prod.yml --env-file .env.prod exec -T postgres \
|
||||
pg_dump -U "$LMS_DB_USER" "$LMS_DB_NAME" | gzip > lms-$(date +%F).sql.gz
|
||||
Полная инструкция — [`BACKUP.md`](BACKUP.md). Кратко:
|
||||
|
||||
# Файлы (решения и материалы)
|
||||
docker run --rm -v lms_lms_submissions:/sub -v lms_lms_assets:/assets -v "$PWD":/backup alpine \
|
||||
tar czf /backup/lms-files-$(date +%F).tar.gz -C / sub assets
|
||||
```bash
|
||||
./deploy/backup.sh backup # БД + решения + материалы
|
||||
./deploy/backup.sh list
|
||||
./deploy/backup.sh verify <dir>
|
||||
./deploy/backup.sh restore <dir> # destructive, требует ввода RESTORE
|
||||
```
|
||||
|
||||
Восстановление БД: `gunzip -c backup.sql.gz | docker compose ... exec -T postgres psql -U lms lms`.
|
||||
Backup включает `pg_dump` БД, volume решений и volume материалов, контрольные
|
||||
суммы и manifest. По умолчанию хранится 14 дней (`LMS_BACKUP_KEEP_DAYS`),
|
||||
каталог — `/opt/lms/backups` (`LMS_BACKUP_DIR`).
|
||||
|
||||
Ежедневное расписание:
|
||||
|
||||
```bash
|
||||
sudo cp deploy/systemd/lms-backup.service deploy/systemd/lms-backup.timer /etc/systemd/system/
|
||||
sudo systemctl daemon-reload
|
||||
sudo systemctl enable --now lms-backup.timer
|
||||
```
|
||||
|
||||
Backup на том же сервере — не единственная защита: настройте выгрузку на
|
||||
отдельный хост и периодически проверяйте восстановление на staging.
|
||||
|
||||
## 9. Диагностика
|
||||
|
||||
|
||||
Reference in New Issue
Block a user