You are looking at the documentation of a prior release. To read the documentation of the latest release, please
visit here.
How Stash Backup & Restore PostgreSQL Database
Stash 0.9.0+ supports backup and restore operation of many databases. This guide will give you an overview of how PostgreSQL database backup and restore process works in Stash.
How Backup Works
The following diagram shows how Stash takes backup of a PostgreSQL database. Open the image in a new tab to see the enlarged version.
The backup process consists of the following steps:
At first, a user creates a secret with access credentials of the backend where the backed up data will be stored.
Then, she creates a
Repositorycrd that specifies the backend information along with the secret that holds the credentials to access the backend.Then, she creates a
BackupConfigurationcrd targeting the AppBinding crd of the desired database. TheBackupConfigurationobject also specifies theTaskto use to backup the database.Stash operator watches for
BackupConfigurationcrd.Once Stash operator finds a
BackupConfigurationcrd, it creates a CronJob with the schedule specified inBackupConfigurationobject to trigger backup periodically.On the next scheduled slot, the CronJob triggers a backup by creating a
BackupSessioncrd.Stash operator also watches for
BackupSessioncrd.When it finds a
BackupSessionobject, it resolves the respectiveTaskandFunctionand prepares a Job definition to backup.Then, it creates the Job to backup the targeted database.
The backup Job reads necessary information to connect with the database from the
AppBindingcrd. It also reads backend information and access credentials fromRepositorycrd and Storage Secret respectively.Then, the Job dumps the targeted database and uploads the output to the backend. Stash pipes the output of dump command to uploading process. Hence, backup Job does not require a large volume to hold the entire dump output.
Finally, when the backup is complete, the Job sends Prometheus metrics to the Pushgateway running inside Stash operator pod. It also updates the
BackupSessionandRepositorystatus to reflect the backup procedure.
How Restore Process Works
The following diagram shows how Stash restores backed up data into a PostgreSQL database. Open the image in a new tab to see the enlarged version.
The restore process consists of the following steps:
At first, a user creates a
RestoreSessioncrd targeting theAppBindingof the desired database where the backed up data will be restored. It also specifies theRepositorycrd which holds the backend information and theTaskto use to restore the target.Stash operator watches for
RestoreSessionobject.Once it finds a
RestoreSessionobject, it resolves the respectiveTaskandFunctionand prepares a Job definition to restore.Then, it creates the Job to restore the target.
The Job reads necessary information to connect with the database from respective
AppBindingcrd. It also reads backend information and access credentials fromRepositorycrd and Storage Secret respectively.Then, the job downloads the backed up data from the backend and injects into the desired database. Stash pipes the downloaded data to the respective database tool to inject into the database. Hence, restore job does not require a large volume to download entire backup data inside it.
Finally, when the restore process is complete, the Job sends Prometheus metrics to the Pushgateway and update the
RestoreSessionstatus to reflect restore completion.
Next Steps
- Backup standalone PostgreSQL database using Stash following the guides from here.






