docs: Add database persistence summary
This commit is contained in:
70
docs/DB_PERSISTENCE_SUMMARY.md
Normal file
70
docs/DB_PERSISTENCE_SUMMARY.md
Normal file
@@ -0,0 +1,70 @@
|
|||||||
|
# Підсумок виправлення періодичної втрати даних PostgreSQL
|
||||||
|
|
||||||
|
## ✅ Виконано
|
||||||
|
|
||||||
|
### 1. Виявлено причини проблеми
|
||||||
|
- Міграції не застосовуються автоматично при перезапуску (тільки при першому створенні БД)
|
||||||
|
- Конфлікт між старим `dagi-postgres` та новим `daarion-postgres` контейнерами
|
||||||
|
- Відсутність автоматичної перевірки цілісності БД
|
||||||
|
|
||||||
|
### 2. Створено скрипти для автоматизації
|
||||||
|
- **`scripts/apply-migrations.sh`**: Застосовує всі міграції автоматично
|
||||||
|
- **`scripts/ensure-db-persistence.sh`**: Перевіряє цілісність БД та додає відсутні колонки
|
||||||
|
- **`scripts/db-health-check.sh`**: Періодична перевірка здоров'я БД (кожні 30 хвилин через cron)
|
||||||
|
|
||||||
|
### 3. Видалено конфліктуючі контейнери
|
||||||
|
- Видалено старий `dagi-postgres` контейнер
|
||||||
|
|
||||||
|
### 4. Налаштовано автоматичний моніторинг
|
||||||
|
- Додано cron job для автоматичної перевірки кожні 30 хвилин
|
||||||
|
- Логи зберігаються в `/var/log/db-health-check.log`
|
||||||
|
|
||||||
|
### 5. Оновлено конфігурацію
|
||||||
|
- Додано монтування скриптів в `docker-compose.db.yml`
|
||||||
|
- Створено документацію `docs/DB_PERSISTENCE_FIX.md`
|
||||||
|
|
||||||
|
## 📊 Поточний стан
|
||||||
|
|
||||||
|
- **MicroDAOs**: 9 (всі з логотипами, 1 з банером)
|
||||||
|
- **Volume size**: 74M
|
||||||
|
- **Health check**: Працює автоматично кожні 30 хвилин
|
||||||
|
- **Backups**: Автоматичні кожні 12 годин
|
||||||
|
|
||||||
|
## 🔍 Як перевірити
|
||||||
|
|
||||||
|
### Перевірити стан БД
|
||||||
|
```bash
|
||||||
|
cd /opt/microdao-daarion
|
||||||
|
bash scripts/db-health-check.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### Перевірити дані
|
||||||
|
```bash
|
||||||
|
docker exec daarion-postgres psql -U postgres -d daarion -c "SELECT COUNT(*) FROM microdaos;"
|
||||||
|
docker exec daarion-postgres psql -U postgres -d daarion -c "SELECT slug, logo_url IS NOT NULL as has_logo, banner_url IS NOT NULL as has_banner FROM microdaos;"
|
||||||
|
```
|
||||||
|
|
||||||
|
### Перевірити логи health check
|
||||||
|
```bash
|
||||||
|
tail -f /var/log/db-health-check.log
|
||||||
|
```
|
||||||
|
|
||||||
|
### Перевірити cron
|
||||||
|
```bash
|
||||||
|
crontab -l | grep db-health-check
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🚨 Що робити при втраті даних
|
||||||
|
|
||||||
|
1. Перевірити бекапи: `ls -lh /opt/microdao-daarion/db_backups/`
|
||||||
|
2. Відновити з бекапу (див. `docs/DB_PERSISTENCE_FIX.md`)
|
||||||
|
3. Застосувати міграції: `bash scripts/apply-migrations.sh`
|
||||||
|
4. Перевірити цілісність: `bash scripts/db-health-check.sh`
|
||||||
|
|
||||||
|
## 📝 Наступні кроки (рекомендації)
|
||||||
|
|
||||||
|
1. Розглянути використання PostgreSQL replication для високої доступності
|
||||||
|
2. Додати алерти при виявленні проблем (наприклад, через email або Telegram)
|
||||||
|
3. Налаштувати моніторинг розміру volume та попереджати при нестачі місця
|
||||||
|
4. Розглянути використання managed PostgreSQL (наприклад, AWS RDS) для production
|
||||||
|
|
||||||
Reference in New Issue
Block a user