您可以使用 CSI(容器存储接口)快照备份和恢复混合数据。CSI 备份会触发底层存储系统使用所提供的 CSI 驱动程序截取的磁盘快照。CSI 备份不需要 Google Cloud Storage 存储桶或远程服务器即可存储备份数据。
建议对托管在 Google Cloud、AWS 或 Azure 中的 Hybrid 实例使用 CSI 备份。
本页面介绍使用 Hybrid CSI 备份和恢复的步骤。如需大致了解 Hybrid 备份和恢复,请参阅 Cassandra 备份和恢复概览。
备份和恢复限制
使用 CSI 备份和恢复时,请注意以下限制:
- 配置的存储类别使用的 CSI 驱动程序必须支持 CSI 快照。如需了解驱动程序信息,请参阅此 Kubernetes CSI 驱动程序列表。
- 并非所有平台都受支持。仅支持 Google Cloud、AWS 和 Azure 平台。
- 由于卷快照限制,不支持 OpenShift Container Platform。
- 仅支持云平台。不支持本地平台。
- CSI 备份数据与非 CSI Hybrid 备份数据不兼容。非 CSI 备份不能用于 CSI 恢复,CSI 备份不能用于非 CSI 恢复。
- CSI 驱动程序安装和运行由 CSI 驱动程序供应商负责。
- 用户负责确保有足够的集群资源可用于预配 CSI 快照。
- 用户负责移除旧快照数据。
设置 CSI 备份
如需使用 CSI 安排 Hybrid 备份,请执行以下步骤:
- 如果您之前未设置 Hybrid 备份:
- 运行以下
create-service-account
命令以创建具有标准roles/storage.objectAdmin
角色的 Google Cloud 服务账号 (SA)。此 SA 角色允许您将备份数据写入 Cloud Storage。在您的管理工具对应的目录中执行以下命令:- Helm 图表:
$APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/
apigeectl
:HYBRID_BASE_DIRECTORY/hybrid-files/
./tools/create-service-account --env non-prod --dir ./service-accounts
此命令会创建一个名为
apigee-non-prod
的服务账号,以用于非生产环境,并将下载的秘钥文件放在./service-accounts
目录中。如需详细了解 Google Cloud 服务账号,请参阅创建和管理服务账号。
- Helm 图表:
create-service-account
命令会保存包含服务账号私钥的 JSON 文件。该文件会保存在执行命令的目录中。执行以下步骤将需要此文件的路径。
- 运行以下
- 打开您的
overrides.yaml
文件。设置以下参数,如替换文件示例所示。- 在
backup
块中设置如下所示的常规参数。如果您已为非 CSI Hybrid 备份解决方案设置这些参数,则可以为 CSI 快照使用相同的参数。如需详细了解每个值,请参阅备份属性参考表。
对于
backup
:- enabled:设置为
true
以启用计划备份。 - pullPolicy in image:设置为
Always
。 - schedule:提供 cron 表达式时间表。
- enabled:设置为
- 为 CSI 专用备份设置以下参数:
- Cassandra 存储组值:已配置的 Cassandra 存储类别必须支持 CSI 快照,才能进行 CSI 备份和恢复。如需检查存储类别是否支持 CSI 快照,请运行以下命令获取可用的存储类别:
查看每个存储类别的“Provisioner”输出。使用 CSI 的预配工具名称中通常具有“.csi”部分,例如“pd.csi.storage.gke.io”。在此 Kubernetes CSI 驱动程序列表中查找预配工具名称。如果预配工具的“Other Features”列包含“SNAPSHOT”一词,则使用该预配工具的存储类别支持 CSI 快照。kubectl get sc
在存储组中添加这些参数。这两个值都是必填的。
- storageclass:支持 CSI 快照的存储类别名称。
- capacity:磁盘的容量。
- 云服务商类型:
验证 CSI 快照容量后,修改替换文件以使用 CSI 备份和恢复:
- cloudProvider:将
backup
和restore
中的cloudProvider
设置为CSI
。
- cloudProvider:将
- Cassandra 存储组值:已配置的 Cassandra 存储类别必须支持 CSI 快照,才能进行 CSI 备份和恢复。如需检查存储类别是否支持 CSI 快照,请运行以下命令获取可用的存储类别:
- 在
备份配置示例
本部分展示了示例overrides.yaml
文件的备份相关部分。cassandra: hostNetwork: false replicaCount: 3 storage: storageclass: standard-rwo capacity: 100Gi image: pullPolicy: Always backup: enabled: true image: pullPolicy: Always cloudProvider: "CSI" schedule: "0 * * 11 *"
启动手动备份
CSI 备份会根据 overrides.yaml
文件中设置的 Cron 时间表自动生成。
如需启动手动 CSI 备份,请使用以下命令:
kubectl create job -n apigee --from=cronjob/apigee-cassandra-backup backup-pod-name
backup-pod-name
是将要创建的备份 Pod 的名称。
验证备份
验证备份创建成功的一种方法是使用以下命令检查 Kubernetes 集群上的卷快照:
kubectl get volumesnapshot -n apigee
输出会显示集群上的当前快照列表。CSI 备份过程会为每个 Cassandra 磁盘创建快照。生成的快照数量应与集群中的 Cassandra Pod 总数一致。
恢复备份
使用此过程恢复之前生成的 CSI 备份。如需了解有关恢复备份的一般信息以及流程概览,请参阅恢复概览页面。
如需启动 CSI 备份的恢复,请按照 Hybrid 非 CSI 单区域恢复的说明操作,但在 overrides.yaml
的 restore
块中使用以下值。请参阅备份属性参考表了解每个值的详细信息,并参阅恢复配置示例查看示例。
- enabled:设置为
true
以启用使用snapshotTimestamp
时间戳引用的备份的恢复。 - snapshotTimestamp:提供先前 CSI 备份的时间戳。
- pullPolicy in image:设置为
Always
。
如需查找要恢复的 snapshotTimestamp
值,请运行以下命令以获取可用快照的列表:
kubectl get volumesnapshot -n apigee
pvc-us-west2-b-20220803004907-47beff0e306d8861
20220803004907
。
恢复配置示例
本部分展示了示例overrides.yaml
文件的恢复相关部分。cassandra: hostNetwork: false replicaCount: 3 storage: storageclass: standard-rwo capacity: 100Gi image: pullPolicy: Always restore: enabled: true snapshotTimestamp: "20220908222130" cloudProvider: "CSI" image: pullPolicy: Always
迁移到 CSI 备份和恢复
如果您之前没有使用过 Hybrid 备份和恢复,则可以按照设置 CSI 备份中的说明创建新的 CSI 备份,无需执行本部分中的步骤。以下步骤将指导您从非 CSI 备份和恢复解决方案迁移到 CSI 备份。
- 使用当前配置的非 CSI 备份方法生成新的备份。
- 更改 Hybrid
overrides.yaml
文件中的备份配置以使用 CSI 备份替换文件,如示例备份配置中所示。 - 在
overrides.yaml
文件中应用更改:Helm
helm upgrade datastore apigee-datastore/ \ --namespace apigee \ --atomic \ -f OVERRIDES_FILE.yaml
apigeectl
$APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE.yaml
- 验证备份作业:
kubectl get cronjob -n apigee
- 备份作业完成后,验证快照已创建。生成的快照数量应与 Hybrid 实例中的 Cassandra 节点数量相同。
kubectl get volumesnapshot -n apigee