Преминете към основното съдържание

Наръчник: Бекъп и възстановяване на PostgreSQL

Azure Automatic Backups

Azure Database for PostgreSQL автоматично създава бекъпи:

  • Retention: 7 дни (по подразбиране за B1ms)
  • Тип: Full backup + WAL архивиране
  • Честота: Ежедневно

Възстановяване от Azure backup

az postgres flexible-server restore \
--resource-group dictaro-rg \
--name dictaro-db-restored \
--source-server dictaro-db-server \
--restore-point-in-time "2026-03-13T12:00:00Z"

Ръчен бекъп с pg_dump

Създаване на бекъп

# От машина с достъп до PostgreSQL
pg_dump "postgresql://dictaro:<PASSWORD>@dictaro-db-server.postgres.database.azure.com:5432/dictaro?sslmode=require" \
--format=custom \
--file=dictaro_backup_$(date +%Y%m%d_%H%M%S).dump

# Само schema (без данни)
pg_dump "postgresql://..." --schema-only --file=schema.sql

# Само данни
pg_dump "postgresql://..." --data-only --file=data.sql

Възстановяване от бекъп

# В съществуваща база
pg_restore --dbname="postgresql://..." --clean --if-exists dictaro_backup.dump

# В нова база
createdb -h dictaro-db-server.postgres.database.azure.com -U dictaro dictaro_new
pg_restore --dbname="postgresql://dictaro:...@.../dictaro_new?sslmode=require" dictaro_backup.dump

Миграции

Database миграциите са в licensing-go/internal/database/migrations/:

000001_initial.up.sql       — users, license_keys, usage_records, stats_aggregate
000002_device_accounts.up.sql — device_accounts таблица
000003_email_auth.up.sql — password_hash, email_verified, email_tokens

Миграциите се прилагат автоматично при стартиране на Licensing API.

Проверка на данни

-- Брой потребители
SELECT count(*) FROM users;

-- Последни регистрации
SELECT email, provider, plan, created_at FROM users ORDER BY created_at DESC LIMIT 10;

-- Usage статистика
SELECT * FROM stats_aggregate;