Files
microdao-daarion/docs/DB_PERSISTENCE_SUMMARY.md
2026-02-16 02:40:49 -08:00

70 lines
3.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Підсумок виправлення періодичної втрати даних 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