Clone a cluster with the same data set¶
A good practice is to test a new functionality or an upgraded version of the database in a testing / staging environment. As a developer, you would want the data in the staging database cluster, so that your applications can start immediately.
The dataSource functionality allows doing just that. Instead of creating a new PVC for a new cluster, you can clone the existing one. This enables you to spin up a new cluster with the data in it almost in no time which is especially beneficial if you use CI/CD for that.
For example, you have the production Percona XtraDB Cluster cluster1. To test a new feature in your app, you need a staging cluster cluster2 with the data set from cluster1.
To create it, create the cluster2-cr.yaml Custom Resource manifest. You can use the existing deploy/cr.yaml for convenience. Specify the PVC from cluster1 as the dataSource for it:
pxc:
volumeSpec:
persistentVolumeClaim:
dataSource:
name: cluster1-pvc
kind: PersistentVolumeClaim
This configuration instructs the Operator to create a direct clone of the PVC from cluster1. If you have a snapshot of the PVC, you can use that as a data source for your staging cluster. Here’s how you define it:
persistentVolumeClaim:
dataSource:
name: cluster1-pvc-snapshot1
kind: VolumeSnapshot
apiGroup: snapshot.storage.k8s.io
To create a database cluster, apply the cluster2-cr.yaml.
Created: April 14, 2025