社區於上個月發佈了 RadonDB MySQL Kubernetes v2.2.0,集群數據備份恢復的存儲類型除了 S3,新增 NFS 存儲。本文將為您演示如何進行 NFS 備份及恢復操作。 環境準備 Kubernetes 集群 RadonDB MySQL 集群 過程略,詳細請回顧《快速實現 MyS ...
社區於上個月發佈了 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 備份中恢復一個集群。