本页面介绍如何在单个区域中恢复 Cassandra。
在单区域部署中,Apigee Hybrid 部署在单个数据中心或区域中。如果您的部署中有多个 Apigee 组织,则恢复过程会恢复所有组织的数据。在多组织设置中,您无法恢复特定的组织。
从备份恢复区域
在配置中,Cassandra 备份可以位于 Cloud Storage 或远程服务器上。无论是哪种情况,请执行以下步骤进行恢复:
- 验证 Hybrid 版本。
确保该版本与在存储空间中创建备份文件的版本相同。apigeectl version
- 确认您要恢复到的 Kubernetes 集群没有之前的 Apigee Hybrid 安装。如果您要恢复到现有集群,请使用以下命令删除现有 Apigee Hybrid 安装:
apigeectl delete -f overrides.yamlkubectl -n apigee get apigeedatastore,apigeeredis,apigeetelemetry,org,env,arc # The output should be empty.apigeectl delete --all -f overrides.yaml - 打开
overrides.yaml文件,并将restore属性设置为所需的值:Cloud Storage
参数
namespace: YOUR_RESTORE_NAMESPACE # Use the namespace as in your original cluster. cassandra: hostNetwork: false ... restore: enabled: true serviceAccountPath: "SA_JSON_FILE_PATH" dbStorageBucket: "CLOUD_STORAGE_BUCKET_PATH" cloudProvider: "GCP" # required verbatim "GCP" (all caps) snapshotTimestamp: "TIMESTAMP" ... backup: enabled: true serviceAccountPath: "SA_JSON_FILE_PATH" dbStorageBucket: "CLOUD_STORAGE_BUCKET_PATH" cloudProvider: "GCP" # required verbatim "GCP" (all caps) schedule: "SCHEDULE"
示例
namespace: apigee cassandra: hostNetwork: false ... restore: enabled: true serviceAccountPath: "/Users/myhome/.ssh/my_cassandra_backup.json" dbStorageBucket: "gs://myname-cassandra-backup" cloudProvider: "GCP" snapshotTimestamp: "20201001183903" ... backup: enabled: true serviceAccountPath: "/Users/myhome/.ssh/my_cassandra_backup.json" dbStorageBucket: "gs://myname-cassandra-backup" cloudProvider: "GCP" schedule: "0 2 * * *" ...
其中:
属性 说明 namespaceYOUR_RESTORE_NAMESPACE
用于恢复的命名空间。使用原始集群中的命名空间。
cassandra:hostNetworkhostNetwork是必需的,应始终设置为false。restore:enabled恢复功能默认处于停用状态。您必须将此属性设为 true。restore:serviceAccountPathSA_JSON_FILE_PATH
文件系统上指向为备份创建的服务账号的路径。
restore:dbStorageBucketCLOUD_STORAGE_BUCKET_PATH
存储备份数据的 Cloud Storage 存储桶路径,格式如下:
gs://BUCKET_NAMEgs://是必需的。restore:cloudProviderGCPcloudProvider: "GCP"属性是必需的属性。restore:snapshotTimestampTIMESTAMP
要恢复的备份快照的时间戳。如需查看可以使用哪些时间戳,请转到
dbStorageBucket并查看存储桶中存在的文件。每个文件名都包含时间戳值。例如:backup_20210203213003_apigee-cassandra-default-0.tgz其中,20210203213003 是您在希望恢复该时间点创建的备份时使用的
snapshotTimestamp值。backup:enabled备份默认处于停用状态。您必须将此属性设为 true。backup:serviceAccountPathSA_JSON_FILE_PATH
文件系统上指向运行
./tools/create-service-account时所下载的服务账号 JSON 文件的路径backup:dbStorageBucketCLOUD_STORAGE_BUCKET_PATH
Cloud Storage 存储桶路径,格式如下:
gs://BUCKET_NAME。gs://是必需的。backup:cloudProviderGCPcloudProvider: "GCP"属性是必需的属性。backup:scheduleSCHEDULE
备份的开始时间,使用标准 crontab 语法指定。默认值:
0 2 * * *非 Cloud Storage
参数
namespace: YOUR_RESTORE_NAMESPACE # Use the namespace as in your original cluster. cassandra: hostNetwork: false ... restore: enabled: true keyFile: "PATH_TO_PRIVATE_KEY_FILE" server: "BACKUP_SERVER_IP" storageDirectory: "/home/apigee/BACKUP_DIRECTORY" cloudProvider: "HYBRID" # required verbatim "HYBRID" (all caps) snapshotTimestamp: "TIMESTAMP" ... backup: enabled: true keyFile: "PATH_TO_PRIVATE_KEY_FILE" server: "BACKUP_SERVER_IP" storageDirectory: "/home/apigee/BACKUP_DIRECTORY" cloudProvider: "HYBRID" # required verbatim "HYBRID" (all caps) schedule: "SCHEDULE"示例
namespace: apigee cassandra: hostNetwork: false ... restore: enabled: true keyFile: "/Users/exampleuser/apigee-hybrid/hybrid-files/service-accounts/private.key" server: "34.56.78.90" storageDirectory: "/home/apigee/cassbackup" cloudProvider: "HYBRID" snapshotTimestamp: "20201001183903" ... backup: enabled: true keyFile: "/Users/exampleuser/apigee-hybrid/hybrid-files/service-accounts/private.key" server: "34.56.78.90" storageDirectory: "/home/apigee/cassbackup" cloudProvider: "HYBRID" schedule: "0 2 * * *" ...其中:
属性 说明 namespaceYOUR_RESTORE_NAMESPACE
用于恢复的命名空间。使用原始集群中的命名空间。
cassandra:hostNetworkhostNetwork是必需的,应始终设置为false。restore:enabled恢复功能默认处于停用状态。您必须将此属性设为 true。restore:keyFilePATH_TO_PRIVATE_KEY_FILE
SSH 私钥文件(在创建 SSH 密钥对的步骤中命名为
ssh_key)在本地文件系统中的路径。restore:serverBACKUP_SERVER_IP
您的备份服务器的 IP 地址。
restore:storageDirectoryBACKUP_DIRECTORY
备份服务器上备份目录的名称。 此目录必须是
home/apigee中的目录(备份目录在创建备份目录的步骤中命名为cassandra_backup)。restore:cloudProviderHYBRIDcloudProvider: "HYBRID"属性是必需的属性。restore:snapshotTimestampTIMESTAMP
要恢复的备份快照的时间戳。如需查看可以使用哪些时间戳,请转到
dbStorageBucket并查看存储桶中存在的文件。每个文件名都包含时间戳值。例如backup_20210203213003_apigee-cassandra-default-0.tgz其中,20210203213003 是您在希望恢复该时间点创建的备份时使用的
snapshotTimestamp值。backup:enabled备份默认处于停用状态。您必须将此属性设为 true。backup:keyFilePATH_TO_PRIVATE_KEY_FILE
SSH 私钥文件(在创建 SSH 密钥对的步骤中命名为
ssh_key)在本地文件系统中的路径。backup:serverBACKUP_SERVER_IP
您的备份服务器的 IP 地址。
backup:storageDirectoryBACKUP_DIRECTORY
备份服务器上备份目录的名称。此目录必须是
home/apigee中的目录(备份目录在创建备份目录的步骤中命名为cassandra_backup)。backup:cloudProviderHYBRIDcloudProvider: "HYBRID"属性是必需的属性。backup:scheduleSCHEDULE
备份的开始时间,使用标准 crontab 语法指定。默认值:
0 2 * * * - 创建新的 Hybrid 运行时部署。这将创建新的 Cassandra 集群并开始将备份数据恢复到该集群中:
${APIGEECTL_HOME}/apigeectl init -f overrides/overrides.yaml${APIGEECTL_HOME}/apigeectl check-ready -f overrides/overrides.yaml${APIGEECTL_HOME}/apigeectl apply -f overrides/overrides.yaml --restore${APIGEECTL_HOME}/apigeectl check-ready -f overrides/overrides.yaml - 验证恢复作业进度,并确认
apigeeds和其他所有 Pod 都已启动:- 查看
apigeeds:kubectl get apigeeds -n apigee
- 查看所有其他 Pod:
kubectl get pods -n apigee
- 查看
成功完成恢复并确认运行时组件健康后,我们建议在集群上配置备份:
- 从
overrides-restore.yaml文件中移除restore配置。 - 将
backup配置添加到overrides-restore.yaml文件中。 - 使用以下命令应用
backup配置:./apigeectl apply -f ../overrides-restore.yaml