容器化 | 在 NFS 备份恢复 RadonDB MySQL 集群数据
社区于上个月发布了 RadonDB MySQL Kubernetes v2.2.0,集群数据备份恢复的存储类型除了 S3,新增 NFS 存储。本文将为您演示如何进行 NFS 备份及恢复操作。
环境准备
- Kubernetes 集群
- RadonDB MySQL 集群
过程略,详细请回顾《快速实现 MySQL 高可用集群部署》。
安装 NFS 服务与资源
方法一:使用 Helm 安装
helm install demo charts/mysql-operator --set nfsBackup.installServer=true --set nfsBackup.volume.createLocalPV=true
或者手动创建 PVC,再执行
helm install demo charts/mysql-operator --set nfsBackup.installServer=true --set nfsBackup.volume.specifiedPVC=XXXX
用该方法,可以在安装 Operator 时,也将 NFS 服务的 Pod 和 Service 安装到集群中。
方法二:使用 kubectl 安装
kubectl apply -f config/samples/nfs_pv.yaml
kubectl apply -f config/samples/nfs_server.yaml
获取 nfsServerAddress
例如:
kubectl get svc nfs-server --template={{.spec.clusterIP}}
10.98.253.82
获取到 ClusterIP
,即可以使用该地址进行 NFS 备份。这里 IP 地址为 10.96.253.82
。
创建 NFS 备份
配置 NFS 服务的地址
# 文件 config/samples/mysql_v1alpha1_backup.yaml
nfsServerAddress: "10.96.253.82"
创建备份
kubectl apply -f config/samples/mysql_v1alpha1_backup.yaml
注意:备份自定义资源与 MySQL 集群自定义资源必须在同一个命名空间中。
验证备份
使用如下命令,可以发现名称格式为 <cluster name>_<timestamp>
的备份文件夹。
kubectl exec -it <pod name of nfs server> -- ls /exports
# 显示结果
index.html initbackup sample_2022419101946
备份恢复
从已有的 NFS 备份文件中恢复集群。配置 mysql_v1alpha1_cluster.yaml
,将 nfsServerAddress
设置为 NFS 服务的地址。
...
restoreFrom: "sample_2022419101946"
nfsServerAddress: 10.96.253.82
注意:
restoreFrom
是备份路径的名称,可以从 NFS 服务加载的路径中看到。然后从 NFS 备份副本恢复集群,如下:
kubectl apply -f config/samples/mysql_v1alpha1_cluster.yaml
恢复完成,已经从名为 sample_2022419101946
的 NFS 备份中恢复一个集群。