S3 备份与恢复

本文档介绍如何对部署的 RadonDB MySQL 集群进行备份和恢复。

前提条件

配置备份

步骤 1: 创建 Secret 配置文件

kind: Secret
apiVersion: v1
metadata:
  name: sample-backup-secret
  namespace: default
data:
  s3-endpoint: aHR0cDovL3MzLnNoMWEucWluZ3N0b3IuY29t
  s3-access-key: SEdKWldXVllLSENISllFRERKSUc=
  s3-secret-key: TU44TkNUdDJLdHlZREROTTc5cTNwdkxtNTlteE01blRaZlRQMWxoag==
  s3-bucket: bGFsYS1teXNxbA==
type: Opaque

s3-xxxx 字段的值采用 base64 编码,注意不要包含换行符的编码。您可以用如下命令获取 base64 编码:

echo -n "替换为您的S3-XXX值"|base64

然后,使用如下命令创建备份 Secret:

kubectl create -f config/samples/backup_secret.yaml

步骤 2: 将 Secret 配置到 Operator 集群

将备份 Secret 名称添加到 mysql_v1alpha1_mysqlcluster.yaml 中,本例中的名称为 sample-backup-secret

spec:
  replicas: 3
  mysqlVersion: "5.7"
  backupSecretName: sample-backup-secret
  ...

如下创建备份 YAML 配置文件 mysql_v1alpha1_backup.yaml

apiVersion: mysql.radondb.com/v1alpha1
kind: Backup
metadata:
  name: backup-sample1
spec:
  # Add fields here
  hostName: sample-mysql-0
  clusterName: sample

上述配置中,hostName 字段表示集群中 Pod 的名称,clusterName 字段表示数据库集群名称。

启动备份

提示:

启动集群后,才可以进行备份操作。

kubectl apply -f config/samples/mysql_v1alpha1_backup.yaml

执行成功后,可以通过如下命令查看备份状况:

kubectl get backups.mysql.radondb.com 
NAME            BACKUPNAME             BACKUPDATE            TYPE
backup-sample   sample_2022526155115   2022-05-26T15:51:15   S3

从备份副本恢复到新集群

检查您的 S3 bucket,得到您需要的备份文件夹,如 sample_2022526155115。 在 mysql_v1alpha1_mysqlcluster.yaml 中添加 RestoreFrom 字段,如下:

...
spec:
  replicas: 3
  mysqlVersion: "5.7"
  backupSecretName: sample-backup-secret
  restoreFrom: "sample_2022526155115"
...

随后,运行如下命令,将会从备份文件夹恢复数据库:

kubectl apply -f config/samples/mysql_v1alpha1_mysqlcluster.yaml