docs: Add database persistence summary

This commit is contained in:
Apple
2025-12-02 13:43:16 -08:00
parent 2bc00b99a8
commit 8c801c1dab

View 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