Skip to main content
Version: Next

Backups

danger

Backups are only supported by SQLite databases!

If you're using other databases, script your own backup system.

TSCord use saveqlite to make incrementals backups of the SQLite database file.

Backing up a SQLite database file on a regular basis can quickly become really heavy. Indeed, the total weight of the backup will be (database_size * num_backups).

With an incremental backup system, only the difference since the last snapshot is saved!

So we end up with a lightweight save, including multiple snapshots to rollback to any state of the database.

Scheduled backups

A backup is scheduled per day, happening at 23:59:59 (or 11:59:59 pm). You can modify this time or the frequency in the src/services/Database.ts file at the backup() method.

Manual backups

You can either create a backup programmaticaly by calling this backup() method and by referencing a custom file name for the backup.

E.g:

// first, we import the Database service
const db = container.resolve(Database)

// then we chose a name for the backup snapshot
const snapshotName = `snapshot-${formatDate(new Date(), 'onlyDateFileName')}-manual-${Date.now()}`

// finaly, we generate the snapshot
const success = await db.backup(snapshotName)

API backups

Finaly, you can create a backup using the API by simply make a POST request on this endpoint:

http://localhost:3000/database/backup

The server will return a response containing the name of the backup.

Restore a backup

To restore a precise backup, you will have to either:

  • Use the restore() method of the Database service.
  • Make a POST request on the http://localhost:3000/database/restore endpoint and precising the snapshotName in the body.