In some of my couple blog posts, I’ve been going through how to use Veeam Kasten to do backup of workloads running on Kubernetes Get started with Kasten for data protection on Azure Kubernetes Service | Marius Sandbu (msandbu.org) and how to set up Azure Arc data services to run SQL database services on any type of Kubernetes Cluster Setting up Azure Arc Data Services | Marius Sandbu (msandbu.org)
As part of Azure Arc, there is no built-in backup solution for the data that is being generated by the data services, therefore we need to provide some form of backup of the data that is generated. Using Kasten we can however take backup of the persistent volumes that the SQL databases are storing, so this blog post will highlight one example of how you can take backup of the data.
1: You will need to have the data services deployed according to the previous and have a SQL database created which you can connect to using Azure Data Studio.
2: You will need to have Kasten installed and running on the same Kubernetes Cluster.
When you deploy a SQL database using Azure Arc it will use numerous labels (key/value) which are used to identify attributes of objects such as the name of the database workload. With Kasten, we can deploy backup policies based upon these metadata labels which you can see in the dashboard after going into the unprotected applications.
NOTE: Kasten uses namespaces that are identified as applications. Within Azure Arc you might have multiple data SQL instances running within the same namespace, so you can use other labels to solely identity that specific database instance.
Now I just deployed a new Managed SQL instance (demo2) which I will backup the persistent volumes that are attached to that pod. Using the commands
kubectl describe pods sqldemo2-0 --namespace=arc
I can see which volumes that are part of the pod.
When connecting to the SQL Database I have a particular database that is part of the data volume.
Then I define a backup policy in Kasten for that specific SQL2 Kubernetes label and define to take a backup of the following volumes (which are the data and log volumes which are created automatically for the Azure Arc SQL instances.
Once the backup is complete. I then was a bit unfortunate and deleted the production data. So, then I needed to restore the data from the PVC volumes that have been taken backup.
You will see the pods will be recreated using the command kubectl get pods –namespace=arc (which is the default namespace for Arc deployed resources)
And afterwards you will be able to reconnect to the SQL instance and see the restored data, voila!