71 lines
3.4 KiB
Markdown
71 lines
3.4 KiB
Markdown
# Підсумок виправлення періодичної втрати даних 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
|
||
|