作者:程潤科、錢芬 視頻:錢芬 上一篇文章我們演示瞭如何快速實現 MySQL 高可用集群部署,以及部署集群的校驗和卸載方式。本文將演示如何對集群進行備份和恢復。 部署版本為 RadonDB MySQL Kubernetes 2.1.3。 環境準備 首先準備一套 Kubernetes 集群,過程略。然 ...
作者:程潤科、錢芬
視頻:錢芬
上一篇文章我們演示瞭如何快速實現 MySQL 高可用集群部署,以及部署集群的校驗和卸載方式。本文將演示如何對集群進行備份和恢復。
部署版本為 RadonDB MySQL Kubernetes 2.1.3。
環境準備
首先準備一套 Kubernetes 集群,過程略。然後創建一套 RadonDB MySQL 集群。
步驟 1:下載源碼
$ git clone https://github.com/radondb/radondb-mysql-kubernetes.git
步驟 2:安裝 Operator
以下指定 release 名為 test
, 創建一個名為 test-mysql-operator
的 Deployment。。
$ helm install test charts/mysql-operator
步驟 3:配置備份信息
Kubernetes Secret 資源信息需提前準備。文章及操作視頻中的資源環境為青云云平臺的 qingstor 對象存儲。其他平臺的密鑰及 S3 存儲服務創建過程類似,請另行參考。
創建 API 密鑰
登錄青云云平臺官網,點擊 產品與服務 -> API 密鑰;進入入 API 密鑰頁面,點擊 創建 API 密鑰,輸入名稱後下載 s3-access-key
、 s3-secret-key
明文信息。
創建 s3-bucket
點擊 產品與服務 -> 對象存儲;進入對象存儲頁面,點擊 創建 Bucket,輸入 bucket 名稱後即可獲得 bucket 明文信息:
- s3-endpoint: http://s3.sh1a.qingstor.com
- s3-access-key:VNXYHYHQUXZKUVZFGFRY
- s3-secret-key:0zw7JKkbAAdlQKHPjTHWtoFGGQRvnQ5SJRc5P69r
- s3-bucket: radondb-mysql-bucket s3-xxxx 的值是使用 base64 演算法加密的,你可以這樣獲得。(此處對s3-xxx信息進行脫敏處理)。
$ echo -n "http://s3.sh1a.qingstor.com"|base64
創建 Kubernetes Secret 資源
創建backup_secret.yaml
文件用來存放 S3 對象存儲相關信息。(此處對s3-xxx信息進行脫敏處理)。
kind: Secret
apiVersion: v1
metadata:
name: sample-backup-secret
namespace: default
data:
s3-endpoint: aHR0cDovL3MzLnNoMWEucWluZ3N0b3IuY29t
s3-access-key: Vk5YWUhZSFFVWFpLVVZaRkdGUlk=
s3-secret-key: MHp3N0pLa2JBQWRsUUtIUGpUSFd0b0ZHR1FSdm5RNVNKUmM1UDY5cg==
s3-bucket: cmFkb25kYi1teXNxbC1idWNrZXQ=
type: Opaque
然後在 kubernetes 中執行創建加密配置。
$ kubectl create -f config/samples/backup_secret.yaml
步驟 4:創建及啟動集群
請在mysql_v1a1pha1_mysqlcluster.yaml
文件中添加 backupSecretName
屬性。
spec:
replicas: 3
mysqlVersion: "5.7"
backupSecretName: sample-backup-secret
...
執行以下指令,即創建 RadonDB MySQL 集群。
$ kubectl apply -f config/samples/mysql_v1alpha1_mysqlcluster.yaml
備份恢復
將集群數據備份到 S3 存儲
創建備份文件 mysql_v1a1pha1_backup.yaml
內容如下。
apiVersion: mysql.radondb.com/v1alpha1
kind: Backup
metadata:
name: backup-sample1
spec:
# Add fields here
hostname: sample-mysql-0
clustname: sample
name | function |
---|---|
hostname | pod name in cluser |
clustname | cluster name |
待集群運行成功後,執行以下指令開始備份。
$ kubectl apply -f config/samples/mysql_v1alpha1_backup.yaml
備份完成後可在 S3 查看對應的備份文件。
從 S3 備份中恢復集群
檢測你的 S3 bucket,獲取你備份的目錄,比如:backup_2021720827
,並且將設置為 yaml 文件的 restoreFrom
屬性中。
...
spec:
replicas: 3
mysqlVersion: "5.7"
backupSecretName: sample-backup-secret
restoreFrom: "backup_2021720827"
...
此時執行以下指令:
$ kubectl apply -f config/samples/mysql_v1alpha1_mysqlcluster.yaml
恢復完成,已經從名為 backup_2021720827
的 S3 備份中恢復一個集群。
卸載
卸載過程詳見《部署文檔》 的卸載部分。