Save and load data snapshots
In this page, we describe how to use data snapshots to help your development. A Data Snapshot
(a.k.a. Dependency Snapshot
or Container Snapshot
) is to capture the filesystem state of a dependency or a custom container.
Note that for built-in dependencies, such as postgres
, redis
, etc., Crafting platform will automatically save the data. But for custom containers, a snapshot can be taken only to save the defined Volume
mounted on the container. Typically for a stateful service released as a container, there is clear documentation on where is the persistent data should should be stored.
In the remainder of this page, we will cover:
- How to save data as a data snapshot
- How to load a data snapshot
- Admin guide: setup default data snapshot in template
How to save data as a data snapshot
To take a data snapshot for a dependency or container, we can do it directly on the web console, as shown below.
After clicking the save snapshot button highlighted above, we can input the name of the snapshot and click Confirm
to save it.
During saving of the snapshot, it would temporarily bring the service offline and restart the service when the snapshot is successfully taken. Then the snapshot will show up under the Resource -> Snapshots
page from the menu.
We can also take a snapshot using CLI command cs snapshot create
as follows
$ cs snapshot create <SNAPSHOT-NAME> -W [DEPENDENCY|CONTAINER]
How to load a data snapshot
To load a data snapshot into an existing sandbox, it can be done via web console as follows
After clicking the restore snapshot button highlighted above, we can select the snapshot to load and click Confirm
to load the snapshot into the sandbox.
Note that the existing data for the target service in the sandbox will be overwritten by the snapshot. And during the restore, the service will be brought down for some time. Also please keep in mind that sometimes the data format used in one version of the database are not compatible with another version, using an incompatible data snapshot may not be able to launch the service properly.
We can also restore a snapshot using CLI command cs snapshot restore
as follows
$ cs snapshot restore <SNAPSHOT-NAME> -W [DEPENDENCY|CONTAINER]
To load a snapshot in a new sandbox, we can simply select the snapshot in the drop down from the customization page. This way, we can select a snapshot other than the default one specified in the Template.
Admin guide: setup default data snapshot in template
A default data snapshot can be set for a dependency or container to preload the newly created sandbox with standard test data by default. After a snapshot is taken from a sandbox, we can modify the Template to use a snapshot by default. It can be done from web console
Or in the yaml file of the Sandbox Definition
dependencies:
- name: mysql
service_type: mysql
snapshot: snapshot-mysql
Updated almost 2 years ago