searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

MySQL operator

2023-09-04 08:50:54
37
0
Oracle官方的MySQL Operator是在Kubernetes集群中部署MySQL数据库集群的简单方式。其中一个关键特性是集成备份功能。这篇文章介绍如何利用备份这个特性备份到AWS S3对象存储中。

1.利用MySQL operator创建一个集群

创建MySQL集群使用root密钥
 kubectl create secret generic mypwds \
        --from-literal=rootUser=root \
        --from-literal=rootHost=% \
        --from-literal=rootPassword="sakila"

保存下面的配置为mysql.yaml
apiVersion: mysql.oracle.com/v2
kind: InnoDBCluster
metadata:
  name: mycluster
spec:
  instances: 3
  router:
    instances: 1
  secretName: mypwds
  tlsUseSelfSigned: true

应用这个配置
 kubectl apply -f mysql.yaml 


2.定义备份计划
MySQL operator创建备份需要两个组件
* backup schedule 定义备份啥时候执行
* backup profile 配置备份存储位置和MySQL导出参数

这两个组件可以独立创建,备份计划通过spec.backupSchedules字段定义,其中schedule字段是个cron表达式,定义了备份何时执行,具体如下配置所示
apiVersion: mysql.oracle.com/v2
kind: InnoDBCluster
metadata:
  name: mycluster
spec:
  instances: 3
router:
  instances: 1
secretName: mypwds
tlsUseSelfSigned: true
backupSchedules:
  - name: hourly
    enabled: true
    schedule: "0 * * * *"
    backupProfileName: hourly-backup

backupProfileName字段引用的是下一步创建的备份配置


3. 定义备份配置
备份配置通过spec.backupProfiles字段定义,每份配置都有一个name字段和dumpInstance字段

apiVersion: mysql.oracle.com/v2
kind: InnoDBCluster
metadata:
  name: mycluster
spec:
  instances: 3
router:
  instances: 1
secretName: mypwds
tlsUseSelfSigned: true
backupSchedules:
  - name: hourly
    enabled: true
    schedule: "0 * * * *"
    backupProfileName: hourly-backup
backupProfiles:
  - name: hourly-backup
    dumpInstance:
      storage:
         ...

其中dumpInstance字段的storage定义了备份存储相关的配置,具体配置取决于使用的不同类型的存储,比如选用S3存储的话,需要填写S3相关的配置。

首先,需要创建S3 secret
apiVersion: v1
kind: Secret
metadata:
  name: s3-secret
stringData:
  credentials: |
    [default]
      aws_access_key_id = YOUR_S3_ACCESS_KEY 
      aws_secret_access_key = YOUR_S3_SECRET_KEY

并应用
kubectl apply -f s3-secret.yaml

然后在storage下的s3字段添加以下配置:

* bucketName - 备份的桶
* prefix - 前缀,比如/mysql,定义备份文件夹
* endpoint - 桶域名
* config - s3 secret
* profile - 设置成default

完整的配置如下:
apiVersion: mysql.oracle.com/v2
kind: InnoDBCluster
metadata:
  name: mycluster
spec:
  instances: 3
router:
  instances: 1
secretName: mypwds
tlsUseSelfSigned: true
backupSchedules:
  - name: hourly
    enabled: true
    schedule: "0 * * * *"
    backupProfileName: hourly-backup
backupProfiles:
  - name: hourly-backup
    dumpInstance:
      storage:
        s3:
          bucketName: backups
          prefix: mysql
          config: s3-secret
          profile: default
0条评论
0 / 1000
w****n
6文章数
0粉丝数
w****n
6 文章 | 0 粉丝
w****n
6文章数
0粉丝数
w****n
6 文章 | 0 粉丝
原创

MySQL operator

2023-09-04 08:50:54
37
0
Oracle官方的MySQL Operator是在Kubernetes集群中部署MySQL数据库集群的简单方式。其中一个关键特性是集成备份功能。这篇文章介绍如何利用备份这个特性备份到AWS S3对象存储中。

1.利用MySQL operator创建一个集群

创建MySQL集群使用root密钥
 kubectl create secret generic mypwds \
        --from-literal=rootUser=root \
        --from-literal=rootHost=% \
        --from-literal=rootPassword="sakila"

保存下面的配置为mysql.yaml
apiVersion: mysql.oracle.com/v2
kind: InnoDBCluster
metadata:
  name: mycluster
spec:
  instances: 3
  router:
    instances: 1
  secretName: mypwds
  tlsUseSelfSigned: true

应用这个配置
 kubectl apply -f mysql.yaml 


2.定义备份计划
MySQL operator创建备份需要两个组件
* backup schedule 定义备份啥时候执行
* backup profile 配置备份存储位置和MySQL导出参数

这两个组件可以独立创建,备份计划通过spec.backupSchedules字段定义,其中schedule字段是个cron表达式,定义了备份何时执行,具体如下配置所示
apiVersion: mysql.oracle.com/v2
kind: InnoDBCluster
metadata:
  name: mycluster
spec:
  instances: 3
router:
  instances: 1
secretName: mypwds
tlsUseSelfSigned: true
backupSchedules:
  - name: hourly
    enabled: true
    schedule: "0 * * * *"
    backupProfileName: hourly-backup

backupProfileName字段引用的是下一步创建的备份配置


3. 定义备份配置
备份配置通过spec.backupProfiles字段定义,每份配置都有一个name字段和dumpInstance字段

apiVersion: mysql.oracle.com/v2
kind: InnoDBCluster
metadata:
  name: mycluster
spec:
  instances: 3
router:
  instances: 1
secretName: mypwds
tlsUseSelfSigned: true
backupSchedules:
  - name: hourly
    enabled: true
    schedule: "0 * * * *"
    backupProfileName: hourly-backup
backupProfiles:
  - name: hourly-backup
    dumpInstance:
      storage:
         ...

其中dumpInstance字段的storage定义了备份存储相关的配置,具体配置取决于使用的不同类型的存储,比如选用S3存储的话,需要填写S3相关的配置。

首先,需要创建S3 secret
apiVersion: v1
kind: Secret
metadata:
  name: s3-secret
stringData:
  credentials: |
    [default]
      aws_access_key_id = YOUR_S3_ACCESS_KEY 
      aws_secret_access_key = YOUR_S3_SECRET_KEY

并应用
kubectl apply -f s3-secret.yaml

然后在storage下的s3字段添加以下配置:

* bucketName - 备份的桶
* prefix - 前缀,比如/mysql,定义备份文件夹
* endpoint - 桶域名
* config - s3 secret
* profile - 设置成default

完整的配置如下:
apiVersion: mysql.oracle.com/v2
kind: InnoDBCluster
metadata:
  name: mycluster
spec:
  instances: 3
router:
  instances: 1
secretName: mypwds
tlsUseSelfSigned: true
backupSchedules:
  - name: hourly
    enabled: true
    schedule: "0 * * * *"
    backupProfileName: hourly-backup
backupProfiles:
  - name: hourly-backup
    dumpInstance:
      storage:
        s3:
          bucketName: backups
          prefix: mysql
          config: s3-secret
          profile: default
文章来自个人专栏
特立独行的专栏
6 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0