Skip to content

Database

Clavis uses PostgreSQL as its relational database. Alembic manages database migrations.

Running migrations

Migrations are run automatically by deploy.sh. Manually:

bash
docker compose exec api alembic upgrade head

Always run migrations after deploying a new code version.

Rollback

bash
docker compose exec api alembic downgrade -1

Backup

The backup script creates a compressed pg_dump:

bash
deployment/scripts/backup.sh

Backups are stored in deployment/backups/. The script rotates automatically and keeps the last 14 daily backups.

Backup format

bash
clavis_backup_YYYY-MM-DD.dump.gz

Restore

bash
# Decompress
gunzip clavis_backup_YYYY-MM-DD.dump.gz

# Restore
docker compose exec -T db pg_restore -Fc -d clavis < clavis_backup_YYYY-MM-DD.dump

WARNING

A restore overwrites all existing data. Create a current backup first.

Backup automation

deploy.sh automatically creates a backup before each migration. For daily automatic backups, set up a cron job:

bash
# crontab -e
0 3 * * * /path/to/App/deployment/scripts/backup.sh >> /var/log/clavis-backup.log 2>&1