Backup Provisioner and Snapshot Provisioner
Published 30 July 2024
Flyway Desktop currently supports the backup and snapshot provisioners behind a feature flag FLYWAY_DESKTOP_CONNECTION_DIALOG_PROVISIONERS
(i.e. define this environment variable). The provisioners can be selected by using the cards in the database connection dialog.
Backup Provisioner
EDITION: ENTERPRISE
This provisioner allows for the provisioning and re-provisioning of databases using a database backup file.
Note: Currently only SQL Server .bak
files are supported.
Benefits of using the Backup Provisioner
- Supports static data and a
flyway_schema_history
table - allows an environment to be provisioned with data to a desired version. - Not impacted by references to invalid objects - a good alternative to a baseline script.
- Speeds up provisioning shadow environment - restoring a backup file that represents version 1000 is a considerably quicker alternative to executing 1000 migrations scripts.
Prerequisites
- A database backup
.bak
file, which could be a backup of a production database for example. This backup file needs to be in a location accessible to the database server that will be provisioned i.e. on the database server itself or on a network share.
How to configure the Backup Provisioner:
- Open the database connection dialog to configure the development/shadow database
2. The following properties have to be configured:
Backup file
- The file path of the backup file. Note: this needs to be accessible/relative to the database server that is being provisioned.Backup version
- (Optional) - The migration version the backup file represents and is only required when the backup file doesn't contain aflyway_schema_history
table.- In the scenario that the f
lyway_schema_history
table does not already exist, it will be created once the backup has been restored and a baseline entry with the version entered here will be inserted into theflyway_schema_history
table. - If the backup file does contain a
flyway_schema_history
table then this property is optional. If left unset then theflyway_schema_history
table from the backup will be restored unaltered.
- In the scenario that the f
After populating these fields, you then need to set your database connection as normal.
Please note that when testing connection or subsequently whenever the database needs reprovisioning there may be a slight delay while the provisioning takes place.
For an extended example of how to set this up see here.
Snapshot Provisioner
EDITION: ENTERPRISE
This provisioner allows for the provisioning and re-provisioning of databases using a snapshot file. A snapshot captures the schema of the database current state into a file (Note: This does not contain any static data) which can be generated using the the snapshot
command available in Flyway CLI.
Benefits of using the Snapshot Provisioner
- Speeds up provisioning shadow environment - applying a snapshot that represents version 1000 is a considerably quicker alternative to executing 1000 migrations scripts.
Prerequisites
- A snapshot file generated using the
snapshot
command available inFlyway CLI
. - Set the environment variable
REDGATE_FLYWAY_DIFF_VERB=true
.
How to configure the Snapshot Provisioner:
- Open the database connection dialog to configure the development/shadow database
2. The following properties have to be configured:
Snapshot file
- The file path of the snapshot file.Snapshot version
- The migration version the snapshot represents. This version will be inserted as the baseline version into theflyway_schema_history
table of the provisioned database.Always clean on reprovision
- (Optional) When set to true this option forces a clean of the provisioned database before the snapshot is applied. This option may be required when it's not possible to apply the snapshot to the database. For example, if applying the snapshot needs to re-add a non-null column to a table that has data in it.
After populating these fields, you then need to set your database connection as normal.
Please note that when testing connection or subsequently whenever the database needs reprovisioning there may be a slight delay while the provisioning takes place.
For an extended example of how to set this up see here.