Skip to content

Backing up and restoring data

El Laggron edited this page Feb 25, 2025 · 3 revisions

There are 4 places where data unique to your bot is stored:

  • config.yml contains your basic settings
  • admin_panel/media contains all the assets you have uploaded through the admin panel
  • All data is stored in a PostgreSQL database
  • Automatic backups of the database are available in pgbackups

Manual backups/transfers

This is if you want to proceed to a complete backup of everything, or transfer your bot to a different machine.

First, make sure your bot is fully turned off. Do docker compose down if you're running Docker.

  • The config.yml can simply be copied. Be careful not to share it as it contains your bot token!
  • Same for admin_panel/media, you can create a zip archive with all its contents
  • You can also transfer pgbackups if you wish to preserve backups too.

Then you must make a dump of the database.

Creating a database dump

  • With Docker: docker compose up -d postgres-db && docker compose exec pg_dump -U ballsdex ballsdex > data-dump.sql
  • Without Docker: pg_dump -U ballsdex ballsdex > data-dump.sql (replace username and database name where appropriate)

This will generate a file data-dump.sql which you need to preserve, containing all the data.

Importing a database dump

  • With Docker: docker compose up -d postgres-db && cat data-dump.sql | docker compose exec -T postgres-db psql -U ballsdex ballsdex
  • Without Docker: psql -U ballsdex ballsdex -f data-dump.sql

This will print a lot of lines such as INSERT or ALTER TABLE. Check the logs to ensure no errors were produced.

Warning

This only works if the database is completely empty!

If you messed up and wish to reset the database to redo the import, follow this.

Restoring a backup

If you accidentally deleted something important, or your database became corrupted, you can restore a backup. They are located in the pgbackups folder.

First, you must wipe the database. Then, locate the backup file you want to use (we will assume it's named ballsdex-latest.sql.gz and follow the instructions according to your OS.

macOS/Linux

  • With Docker: docker compose up -d postgres-db && zcat ballsdex-latest.sql.gz | docker compose exec -T postgres-db psql -U ballsdex ballsdex
  • Without Docker: zcat ballsdex-latest.sql.gz | psql -U ballsdex ballsdex

Windows

Open the ballsdex-latest.sql.gz using 7zip and extract the resulting .sql file. Move it to your bot's folder, then:

  • With Docker: docker compose up -d postgres-db && cat data-dump.sql | docker compose exec -T postgres-db psql -U ballsdex ballsdex
  • Without Docker: psql -U ballsdex ballsdex -f data-dump.sql

Wiping the database

If you need to reset the PostgreSQL database (importing data, restoring a backup), do this:

  • With Docker: docker compose down --volumes
  • Without Docker: psql -U ballsdex ballsdex -c "DROP SCHEMA public CASCADE; CREATE SCHEMA public;"

Caution

This is irreversible, be extra sure that your backups are there!

Clone this wiki locally