社區(qū)于上個月發(fā)布了 RadonDB MySQL Kubernetes v2.2.0,集群數(shù)據(jù)備份恢復(fù)的存儲類型除了 S3,新增 NFS 存儲。本文將為您演示如何進行 NFS 備份及恢復(fù)操作。
環(huán)境準備
- Kubernetes 集群
- RadonDB MySQL 集群
過程略,詳細請回顧《快速實現(xiàn) MySQL 高可用集群部署》。
安裝 NFS 服務(wù)與資源
方法一:使用 Helm 安裝
helm install demo charts/mysql-operator --set nfsBackup.installServer=true --set nfsBackup.volume.createLocalPV=true
或者手動創(chuàng)建 PVC,再執(zhí)行
helm install demo charts/mysql-operator --set nfsBackup.installServer=true --set nfsBackup.volume.specifiedPVC=XXXX
用該方法,可以在安裝 Operator 時,也將 NFS 服務(wù)的 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。
創(chuàng)建 NFS 備份
配置 NFS 服務(wù)的地址
# 文件 config/samples/mysql_v1alpha1_backup.yaml
nfsServerAddress: "10.96.253.82"
創(chuàng)建備份
kubectl apply -f config/samples/mysql_v1alpha1_backup.yaml
注意:備份自定義資源與 MySQL 集群自定義資源必須在同一個命名空間中。
驗證備份
使用如下命令,可以發(fā)現(xiàn)名稱格式為 <cluster name>_<timestamp> 的備份文件夾。
kubectl exec -it <pod name of nfs server> -- ls /exports
# 顯示結(jié)果
index.html initbackup sample_2022419101946
備份恢復(fù)
從已有的 NFS 備份文件中恢復(fù)集群。配置 mysql_v1alpha1_cluster.yaml,將 nfsServerAddress 設(shè)置為 NFS 服務(wù)的地址。
...
restoreFrom: "sample_2022419101946"
nfsServerAddress: 10.96.253.82
注意:
restoreFrom是備份路徑的名稱,可以從 NFS 服務(wù)加載的路徑中看到。然后從 NFS 備份副本恢復(fù)集群,如下:
kubectl apply -f config/samples/mysql_v1alpha1_cluster.yaml
恢復(fù)完成,已經(jīng)從名為 sample_2022419101946 的 NFS 備份中恢復(fù)一個集群。