备份和恢复实例
实施稳健的备份策略对于保护数据至关重要。定期备份可在数据库异常或数据损坏事件发生时提供恢复选项。
Alauda Cache Service E1 支持两种备份方式:
- S3 备份:将备份数据存储在兼容 S3 的对象存储系统中,提供可扩展且持久的集群外备份能力。
- PVC 备份:使用 Kubernetes PersistentVolumeClaims 将备份数据存储在持久卷上。默认情况下,备份卷使用
ReadWriteOnce访问模式创建,因此可以使用节点本地块存储;也可以使用 NFS 或 Ceph 等ReadWriteManyprovider,但并非必需。在RedisBackup或RedisClusterBackup上设置spec.accessModes,以请求其他访问模式。
先决条件
若要使用自有存储桶的 S3 备份功能,请与管理员确认已为项目命名空间正确配置 S3 存储集成。或者,确保集群提供能够配置备份卷的 StorageClass;节点本地块存储已足够。
对于 PVC 备份,Storage Class 选择器(在创建备份和编辑自动备份设置时都会显示)仅提供其 provisioner 出现在平台于 global 集群上发布的允许列表中的 StorageClass:该列表包括由插件提供的 middleware-sc-cm-base ConfigMap 中、位于 cpaas-system 命名空间的 middleware_sc_map.yaml 的 Redis.backup 密钥,以及承载自定义添加项的可选 middleware-sc-cm ConfigMap。Alauda Container Platform Data Services Essentials v4.4.1 及更高版本会在该列表中提供 nfs.csi.k8s.io、rook-ceph.cephfs.csi.ceph.com 和 topolvm.cybozu.com,因此无需进一步配置即可选择节点本地 TopoLVM 卷。如果无法安装该版本的插件,请将所使用的 provisioner 添加到 middleware-sc-cm:其中的条目会添加到随附列表中,而不会替换该列表,并且在插件升级时不会被覆盖。
即时备份
即时备份会创建正在运行的 Redis 实例的时间点快照。
操作步骤
-
在左侧导航图表中,点击 Redis。
-
点击 命名空间名称。
-
点击 实例名称。
-
导航到 备份和恢复 选项卡,然后点击 创建备份。
-
配置备份参数,然后点击 创建。备份过程的持续时间取决于数据量和网络状况。在备份列表中监控过程状态。
自动备份
自动备份允许根据数据保护要求,为 Redis 实例计划定期、重复执行的备份。
操作步骤
-
在左侧导航图表中,点击 Redis。
-
点击 命名空间名称。
-
点击 实例名称。
-
在 备份和恢复 选项卡中,找到 自动备份设置 部分,然后点击编辑按钮
。
-
启用 自动备份,并配置备份计划和保留参数。
-
点击 更新 以应用自动备份配置。
恢复
恢复操作会创建一个新的 Redis 实例,并使用先前备份中的数据填充该实例。
PVC 备份通过网络传输:平台将备份卷以只读方式挂载到集群内的临时源中,每个 Redis Pod 从该源提取自己的数据,实例就绪后移除该源。每个 PVC 备份都会采用此路径,无论其创建时使用何种访问模式,这也是不再需要 ReadWriteMany 卷的原因。S3 备份则像以前一样直接从对象存储中提取。
恢复路径由实例的 bundle 版本而非备份的访问模式决定。其 BUNDLE VERSION — status.upgradeStatus.crVersion(由 kubectl get redis 显示)早于 5.1.0 的实例,仍可通过将备份卷挂载到每个 Redis Pod 中进行恢复,但这要求备份位于 ReadWriteMany 卷上:如果要将备份恢复到此类实例,请使用 spec.accessModes: [ReadWriteMany] 创建备份。只有在通过将 spec.upgradeOption.autoUpgrade 设置为 false 并结合固定的 spec.upgradeOption.crVersion 将实例保持在较早的 bundle 版本上时,实例才会继续使用较早的 bundle 版本。
操作步骤
-
在左侧导航图表中,点击 Redis。
-
点击 命名空间名称。
-
导航到源实例的 备份和恢复 选项卡,找到所需的备份,然后点击
> 恢复。
-
配置目标实例参数,然后点击 恢复。监控恢复进度,直到目标实例达到 Running 状态,这表示恢复成功。