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

3.8 KiB
Raw Permalink Blame History

DB_RESTORE — Як відновити базу daarion

1. Відновлення з останнього бекапу

Крок 1: Зупинити сервіси

docker compose -f docker-compose.db.yml stop db
docker compose -f docker-compose.web.yml stop city-service web

Крок 2: Відновити базу з бекапу

# Знайти останній бекап
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:

# Скопіювати бекап в контейнер
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: Перезапустити сервіси

docker compose -f docker-compose.db.yml up -d db
docker compose -f docker-compose.web.yml up -d city-service web

Крок 4: Верифікувати після аварійного відновлення

# Перевірити що база працює
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: Застосувати міграції

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-скрипт

python3 scripts/seed_full_city_reset.py

Крок 3: Відновити DAGI-агентів NODE2

python3 scripts/sync-node2-dagi-agents.py

Крок 4: Перевірити

# Перевірити 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. Перевірка бекапів

Список доступних бекапів

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 місяців)

Створити бекап вручну

docker exec daarion-postgres pg_dump -U postgres daarion > db_backups/manual_$(date +%F_%H-%M).sql

4. Troubleshooting

Проблема: "database does not exist"

# Створити базу
docker exec daarion-postgres psql -U postgres -d postgres -c "CREATE DATABASE daarion;"

Проблема: "connection refused"

# Перевірити статус контейнера
docker ps | grep postgres

# Перезапустити
docker compose -f docker-compose.db.yml restart db

Проблема: "permission denied" при відновленні

# Перевірити права на файл бекапу
chmod 644 db_backups/daarion_*.sql