This is an Enterprise-only feature. Please install Stash Enterprise Edition to try this feature.
Sometimes, an application may consist of multiple co-related components. For example, to deploy a WordPress, you will need a Deployment for the WordPress and another Deployment for the database. Now, it is sensible to want to backup or restore both of the deployments using a single configuration as they are parts of the same application.
Stash 0.9.0+ supports taking backup multiple co-related components using a single configuration known as BackupBatch. Stash 0.10.0+ supports restoring multiple co-related components together known as RestoreBatch This guide will give you an overview of how batch backup and restore works in Stash.
The following diagram shows how Stash takes backup of multiple co-related components in a single application. 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 backend Secret. This secret holds the credentials to access the backend where the backed up data will be stored.
Then, she creates a Repository
crd which represents the original repository in the backend.
Then, she creates a BackupBatch
crd which specifies multiple targets(workload, volume, and database). It also specifies the Repository
object that holds the backend information where the backed up data will be stored.
Stash operator watches for BackupBatch
objects.
When it finds a BackupBatch
object, it checks if there is any workload as a target. If there any, it injects a sidecar named stash
into the workloads.
It also creates a CronJob
to trigger backups periodically.
TheCronJob
triggers backup on each scheduled slot by creating a BackupSession
crd.
The BackupSession controller (inside sidecar for sidecar model or inside the operator itself for job model) watches for BackupSession
crd.
When it finds a BackupSession
it starts the backup process immediately(for job model a job is created for taking backup) for the individual targets. Stash operator enforces the backup order if the executionOrder
is set to Sequential
.
The individual targets complete their backup process independently and update their respective fields in BackupSession
status.
The following diagram shows the batch restore process. Please, open image in new tab to view the enlarged image.
The batch restore process consists of the following steps:
RestoreBatch
CR specifying the targets and the respective Repository where the backed up data has been stored.RestoreBatch
CR.RestoreBatch
CR, it executes the global PreRestore
hooks. If there is no global PreRestore
hook, Stash will skip this step.executionOrder
is set to Sequential
.PreRestore
hooks. Then, restore their data and finally execute their PostRestore
hooks.PostRestore
hooks. If there is not global PostRestore
hook configured for this RestoreBatch, Stash will skip this step.