How to restore a local backup

This is a guide for performing a basic restore (restoring a locally made backup).

To restore a backup that was made from the a different cluster, (i.e. cluster migration via restore), see How to migrate a cluster.

Prerequisites

List backups

To view the available backups to restore you can enter the command list-backups:

juju run mysql/leader list-backups

This should show your available backups

backups: |-
  backup-id             | backup-type  | backup-status
  ----------------------------------------------------
  YYYY-MM-DDTHH:MM:SSZ  | physical     | finished

Point-in-time recovery

Point-in-time recovery (PITR) is a MySQL feature that enables restorations to the database state at specific points in time. The feature is enabled by default when there’s a working relation with S3 storage.

Restore a backup

To restore a backup from that list, run the restore command and pass the backup-id to restore:

juju run mysql/leader restore backup-id=YYYY-MM-DDTHH:MM:SSZ

Your restore will then be in progress.

However, if the user needs to restore to a specific point in time between different backups (e.g. to restore only specific transactions made between those backups), they can use the restore-to-time parameter to pass a timestamp related to the moment they want to restore.

juju run mysql/leader restore restore-to-time="YYYY-MM-DD HH:MM:SS"

Your restore will then be in progress.

It’s also possible to restore to the latest point from a specific timeline by passing the ID of a backup taken on that timeline and restore-to-time=latest when requesting a restore:

juju run mysql/leader restore restore-to-time=latest