Files
microdao-daarion/docs/DB_RESTORE.md
2026-02-16 04:32:13 -08:00

138 lines
3.8 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.
# DB_RESTORE — Як відновити базу daarion
## 1. Відновлення з останнього бекапу
### Крок 1: Зупинити сервіси
```bash
docker compose -f docker-compose.db.yml stop db
docker compose -f docker-compose.web.yml stop city-service web
```
### Крок 2: Відновити базу з бекапу
```bash
# Знайти останній бекап
ls -lt db_backups/ | head -5
# Відновити базу
docker compose -f docker-compose.db.yml exec db psql -U postgres -d postgres -c "DROP DATABASE IF EXISTS daarion;"
docker compose -f docker-compose.db.yml exec db psql -U postgres -d postgres -c "CREATE DATABASE daarion;"
docker compose -f docker-compose.db.yml exec -T db psql -U postgres -d daarion < db_backups/daarion_YYYY-MM-DD_HH-MM.sql
```
Або через docker exec:
```bash
# Скопіювати бекап в контейнер
docker cp db_backups/daarion_2025-12-02_09-00.sql daarion-postgres:/tmp/backup.sql
# Відновити
docker exec daarion-postgres psql -U postgres -d postgres -c "DROP DATABASE IF EXISTS daarion;"
docker exec daarion-postgres psql -U postgres -d postgres -c "CREATE DATABASE daarion;"
docker exec -i daarion-postgres psql -U postgres -d daarion < /tmp/backup.sql
```
### Крок 3: Перезапустити сервіси
```bash
docker compose -f docker-compose.db.yml up -d db
docker compose -f docker-compose.web.yml up -d city-service web
```
### Крок 4: Верифікувати після аварійного відновлення
```bash
# Перевірити що база працює
docker exec daarion-postgres psql -U postgres -d daarion -c "SELECT COUNT(*) FROM microdao;"
# Перевірити API
curl https://daarion.space/api/city/microdao?limit=1
```
---
## 2. Якщо бекапу немає (аварійне відновлення)
### Крок 1: Застосувати міграції
```bash
cd /opt/microdao-daarion
for f in migrations/*.sql; do
echo "Applying: $f"
docker exec -i daarion-postgres psql -U postgres -d daarion < "$f"
done
```
### Крок 2: Запустити seed-скрипт
```bash
python3 scripts/seed_full_city_reset.py
```
### Крок 3: Відновити DAGI-агентів NODE2
```bash
python3 scripts/sync-node2-dagi-agents.py
```
### Крок 4: Перевірити
```bash
# Перевірити MicroDAOs
docker exec daarion-postgres psql -U postgres -d daarion -c "SELECT slug, name FROM microdao;"
# Перевірити агентів
docker exec daarion-postgres psql -U postgres -d daarion -c "SELECT COUNT(*) FROM agents;"
```
---
## 3. Перевірка бекапів
### Список доступних бекапів
```bash
ls -lh db_backups/
```
### Структура бекапів
- `daarion_YYYY-MM-DD_HH-MM.sql` - щоденні бекапи (зберігаються 7 днів)
- `daarion_YYYY-MM-DD_HH-MM.sql` - тижневі бекапи (зберігаються 4 тижні)
- `daarion_YYYY-MM-DD_HH-MM.sql` - місячні бекапи (зберігаються 6 місяців)
### Створити бекап вручну
```bash
docker exec daarion-postgres pg_dump -U postgres daarion > db_backups/manual_$(date +%F_%H-%M).sql
```
---
## 4. Troubleshooting
### Проблема: "database does not exist"
```bash
# Створити базу
docker exec daarion-postgres psql -U postgres -d postgres -c "CREATE DATABASE daarion;"
```
### Проблема: "connection refused"
```bash
# Перевірити статус контейнера
docker ps | grep postgres
# Перезапустити
docker compose -f docker-compose.db.yml restart db
```
### Проблема: "permission denied" при відновленні
```bash
# Перевірити права на файл бекапу
chmod 644 db_backups/daarion_*.sql
```