Restore a Backup

Restore operation will create a new PostgreSQL instance with new credentials
Backups are tied to instances

Restorations can only be triggered from an instance in the same namespace. If the old instance has already been deleted the backups are deleted as well.

  1. Get the ID of the backup you want to restore by listing all available backups.

    kubectl -n <your-namespace> get vshnpostgresbackups
    BACKUP NAME                                 DATABASE INSTANCE   STORED TIME               STATUS     AGE
    
    pgsql-app1-prod-pk8k4-2023-03-05-13-05-00   pgsql-app1-prod     2023-03-05T13:05:15.755Z  Completed  38s
    pgsql-app1-dev-pk8k4-2023-03-01-16-52-11    pgsql-app1-dev                                Failed     28s

    This list will show all backups from all instances in this namespace. In the example above there are two database instances with one backup each.

  2. Apply the following object on your namespace, as specified by its YAML description.

    Example to restore a PostgreSQL instance. Update the namespace!
    apiVersion: vshn.appcat.vshn.io/v1
    kind: VSHNPostgreSQL
    metadata:
      name: pgsql-app1-restore
      namespace: <your-namespace>
    spec:
      parameters:
        restore:
          claimName: pgsql-app1-prod (1)
          backupName: pgsql-app1-prod-pk8k4-2023-03-01-16-52-02 (2)
        backup:
          schedule: '0 22 * * *'
        service:
          majorVersion: "15"
          pgSettings:
            timezone: Europe/Zurich
        size:
          cpu: "600m"
          memory: "3500Mi"
          disk: "80Gi"
      writeConnectionSecretToRef:
        name: postgres-creds-restored
    1 The name of the instance you want to restore from
    2 The backup name you want to restore

The restore process is the same as ordering a new instance. The only difference is the backup information in spec.parameters.restore.

Deleting a Restored Instance

The deletion process of a restored instance is the same as for normal instance. Check out this guide how to delete a PostgreSQL instance.