首页 / 平台管理 / 应用商店管理 / Operators / 使用 Operator / MySQL Group Replication(Alpha) / 备份与恢复

备份与恢复

为防止数据丢失,建议您及时进行备份。一旦出现数据库异常,可恢复已备份数据。

方案选择

方案 说明 建议与注意
立即备份 新增 MySQLBackup 以立即备份指定数据库。支持全量及增量备份。 用于即将对数据库进行风险操作,或不愿等到备份时段时。
定时备份 新增 MySQLBackupSchedule,平台将在指定的备份时段,自动对指定数据库执行周期性备份。支持全量及增量备份。 用于例行备份,建议避开业务峰值时间段。
全量备份 通过 mysqldump 命令备份数据库里的所有数据。
- 优点:更周全的数据保障
- 缺点:占用空间多,占用磁盘 IO,会受锁表影响
建议至少一周进行一次全量备份。
增量备份 在全量备份的基础上,基于二进制日志备份数据库的增量数据。可使用时间段或 GTID 段作为增量区间。
- 优点:占用空间少,占用资源少,无需锁表
- 缺点:必须按顺序恢复
建议每天都进行一次增量备份。
恢复 新增 MySQLRestore,将备份数据恢复至目标实例。支持全量及增量恢复。 - 恢复过程依赖备份实例及备份文件。请勿删除任一可能会用于恢复的实例或文件。
- 恢复增量数据时,如果存在多个增量备份,需按顺序逐一恢复。

前提条件

请提前准备 S3(Amazon Simple Storage Service) 存储用于存储备份数据,并在平台中以保密字典的形式记录 S3 的登录凭证。

立即备份

  1. 在左侧导航栏中,单击 应用商店管理 > Operators

  2. 已部署 Operators 页签中,单击 mysql-mgr-operator

  3. 单击 MySQLBackup 实例卡片中的 创建实例

  4. 参考以下说明配置相关参数。

    参数 说明
    命名空间 需与待备份的 MySQLCluster 实例同一命名空间。
    Cluster 待备份的 MySQLCluster 实例。
    Storage S3 存储相关信息。其中,验证密钥 处需填入前提条件中保密字典的名称。
    Incremental 仅增量备份时需要设置。
    - 如果指定了备份区间,将备份区间中的增量变更。备份区间包括 UTC 时间段或 GTID 区间段。
    - 如果未指定备份区间,将备份当前实例中所有已关闭的二进制日志(从未有过备份时),或从已有备份数据中记录的最后一个 GTID 开始增量备份。
    Databases 仅全量备份时需要设置。需填入待备份的数据库。
  5. 单击 创建 按钮。备份需要一定耗时,请耐心等待。

    备份完成后,MySQLBackup 的 YAML 中可以看到备份文件的信息 status.outcome.location

    全量备份

    apiVersion: mysql.middleware.alauda.io/v1alpha1
    kind: MySQLBackup
    metadata:
      name: mysql-mgr-backup
    status:
      conditions:
        - lastTransitionTime: '2021-06-21T06:04:41Z'
          message: ''
          reason: ''
          status: 'True'
          type: Scheduled
        - lastTransitionTime: '2021-06-21T06:04:41Z'
          message: ''
          reason: ''
          status: 'True'
          type: Running
        - lastTransitionTime: '2021-06-21T06:04:41Z'
          message: ''
          reason: ''
          status: 'True'
          type: Complete
      outcome:
        location: sourcename-project-full.20210621060441.sql.gz #成功备份到目标存储桶下的备份文件
      timeCompleted: '2021-06-21T06:04:41Z'
      timeStarted: '2021-06-21T06:04:41Z'

    增量备份

    apiVersion: mysql.middleware.alauda.io/v1alpha1
    kind: MySQLBackup
    metadata:
      name: incrmental-backup
      namespace: ns
    status:
      conditions:
        - lastTransitionTime: '2021-09-08T01:58:53Z'
          message: ''
          reason: ''
          status: 'True'
          type: Scheduled
        - lastTransitionTime: '2021-09-08T01:58:53Z'
          message: ''
          reason: ''
          status: 'True'
          type: Running
        - lastTransitionTime: '2021-09-08T01:58:54Z'
          message: ''
          reason: ''
          status: 'True'
          type: Complete
      outcome:
        error: ''
        info:
          binlogs:
            - mysql-1-bin.000001
            - mysql-1-bin.000002
            - mysql-1-bin.000003
          index: 1
          lastGTID: fe283360-1044-11ec-8949-000000aadfa9:410
          startGTID: fe283360-1044-11ec-8949-000000aadfa9:55
        location: sourcename-ns-incr-backup-20210908015853.tar.gz #成功备份到目标存储桶下的备份文件
        state: 200
      timeCompleted: '2021-09-08T01:58:54Z'
      timeStarted: '2021-09-08T01:58:53Z'

定时备份

  1. 在左侧导航栏中,单击 应用商店管理 > Operators

  2. 单击 MySQL Group Replication Operator 卡片中的 详情

  3. 单击 MySQLBackupSchedule 实例卡片中的 创建实例

  4. 参考以下说明配置相关参数。

    参数 说明
    命名空间 需与待备份的 MySQLCluster 实例同一命名空间。
    定时策略 需为符合 定时触发规则 的 Crontab 表达式。
    MySQL 实例 待备份的 MySQLCluster 实例。
    Storage S3 存储相关信息。其中,验证密钥 处需填入前提条件中保密字典的名称。
    Incremental 仅增量备份时需要设置。
    - 如果指定了备份区间,将备份区间中的增量变更。备份区间包括 UTC 时间段或 GTID 区间段。
    - 如果未指定备份区间,将备份当前实例中所有已关闭的二进制日志(从未有过备份时),或从已有备份数据中记录的最后一个 GTID 开始增量备份。
    Databases 仅全量备份时需要设置。需输入待备份的数据库。
  5. 单击 创建 按钮。将立刻生成 MySQLBackupSchedule 实例,后续也会定时生成 MySQLBackup 实例,代表每次的定时备份任务。

    备份完成后,在 MySQLBackup 实例(名称类似 {MySQLBackupSchedule 实例名称}-{时间戳}) YAML 中可以看到备份文件的信息 status.outcome.location

    注意:自动备份实例名称中的时间戳为 UTC 时间,下图中表示此备份于北京时间 2021 年 06 月 24 日 18:00 开始执行。

恢复

  1. 在左侧导航栏中,单击 应用商店管理 > Operators

  2. 单击 MySQL Group Replication Operator 卡片中的 详情

  3. 单击 MySQLRestore 实例卡片中的 创建实例

  4. 参考以下说明配置相关参数。

    参数 说明
    命名空间 需与待恢复的 MySQLCluster 实例同一命名空间。
    Cluster 待恢复的 MySQLCluster 实例。
    Backup 用于恢复的 MySQLBackup 实例。
    Condition - 恢复全量数据:仅需填写待恢复的数据库名称。
    - 恢复增量数据:仅需填写待恢复的 UTC 时间段或 GTID 区间段。平台将仅恢复指定区间内的增量数据。注意:如果存在多个增量备份,需按顺序恢复。
  5. 单击 创建 按钮。

    恢复需要一定耗时,请耐心等待。备份完成后,MySQLRestore 的 YAML 中可以看到完成信息 status.timeCompleted

    apiVersion: mysql.middleware.alauda.io/v1alpha1
    kind: MySQLRestore
    metadata:
      name: mysql-mgr-restore
    status:
      conditions:
        - lastTransitionTime: '2021-06-28T11:11:40Z'
          message: ''
          reason: ''
          status: 'True'
          type: Scheduled
        - lastTransitionTime: '2021-06-28T11:11:40Z'
          message: ''
          reason: ''
          status: 'True'
          type: Running
        - lastTransitionTime: '2021-06-28T11:11:40Z'
          message: ''
          reason: ''
          status: 'True'
          type: Complete
      timeCompleted: '2021-06-28T11:11:40Z'
      timeStarted: '2021-06-28T11:11:40Z'