本页面介绍如何在单个区域中恢复 Cassandra。
在单区域部署中,Apigee Hybrid 部署在单个数据中心或区域中。如果您的部署中有多个 Apigee 组织,则恢复过程会恢复所有组织的数据。在多组织设置中,您无法恢复特定的组织。
从备份恢复区域
根据您用于 Apigee Hybrid 的管理工具选择相应说明:
Helm
-
在
overrides.yaml
文件中更新 Cassandra 恢复详细信息:namespace: YOUR_RESTORE_NAMESPACE # Use the same 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: false ...
其中:
属性 说明 namespace
YOUR_RESTORE_NAMESPACE
用于恢复的命名空间。使用原始集群中的同一命名空间。
cassandra:hostNetwork
hostNetwork
是必需的,应始终设置为false
。restore:enabled
恢复功能默认处于停用状态。您必须将此属性设为 true
。restore:serviceAccountPath
SA_JSON_FILE_PATH
文件系统上指向为备份创建的服务账号的路径。
restore:dbStorageBucket
CLOUD_STORAGE_BUCKET_PATH
存储备份数据的 Cloud Storage 存储桶路径,格式如下:
gs://BUCKET_NAME
gs://
是必需的。restore:cloudProvider
GCP
cloudProvider: "GCP"
属性是必需的属性。restore:snapshotTimestamp
TIMESTAMP
要恢复的备份快照的时间戳。如需查看可以使用哪些时间戳,请转到
dbStorageBucket
并查看存储桶中存在的文件。每个文件名都包含时间戳值。例如:backup_20210203213003_apigee-cassandra-default-0.tgz
其中,20210203213003 是您在希望恢复该时间点创建的备份时使用的
snapshotTimestamp
值。backup:enabled
您应该将此属性设为 false
(以防它之前被设置为true
)。 -
如果您一开始没有干净集群,请按照对 helm 停用 Hybrid 区域文档进行操作,以将现有 Hybrid 安装置于干净状态(您可以让 Cert Manager 保持安装状态)。这会使您所处的状态如同您在第 11 步开始之前一直按照 Helm 运行时设置手册进行操作一样。
-
确认 Apigee 命名空间中没有剩余的 Pod:
kubectl get pods -n apigee
kubectl get pods -n apigee-system
-
如果您使用的是 CSI 备份,请通过运行以下命令来确保您可以查看要用于恢复过程的卷快照:
kubectl get volumesnapshot -n apigee
-
按照安装手册中的第 11 步的说明逐个安装所有 Hybrid 组件。请注意,
apigee-cassandra-restore
Pod 将在您运行命令安装datastore
后创建,但只有在安装apigee-org
组件后,它才会进入running
状态。
如需详细了解 Cassandra 备份和恢复,请参阅 Cassandra 备份概览。
apigeectl
在配置中,Cassandra 备份可以位于 Cloud Storage 或远程服务器上。无论是哪种情况,请执行以下步骤进行恢复:
- 验证 Hybrid 版本。
确保该版本与在存储空间中创建备份文件的版本相同。apigeectl version
- 确认您要恢复到的 Kubernetes 集群没有之前的 Apigee Hybrid 安装。如果您要恢复到现有集群,请使用以下命令删除现有 Apigee Hybrid 安装:
apigeectl delete -f overrides.yaml
kubectl -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 same 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: false 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: false serviceAccountPath: "/Users/myhome/.ssh/my_cassandra_backup.json" dbStorageBucket: "gs://myname-cassandra-backup" cloudProvider: "GCP" schedule: "0 2 * * *" ...
其中:
属性 说明 namespace
YOUR_RESTORE_NAMESPACE
用于恢复的命名空间。使用原始集群中的同一命名空间。
cassandra:hostNetwork
hostNetwork
是必需的,应始终设置为false
。restore:enabled
恢复功能默认处于停用状态。您必须将此属性设为 true
。restore:serviceAccountPath
SA_JSON_FILE_PATH
文件系统上指向为备份创建的服务账号的路径。
restore:dbStorageBucket
CLOUD_STORAGE_BUCKET_PATH
存储备份数据的 Cloud Storage 存储桶路径,格式如下:
gs://BUCKET_NAME
gs://
是必需的。restore:cloudProvider
GCP
cloudProvider: "GCP"
属性是必需的属性。restore:snapshotTimestamp
TIMESTAMP
要恢复的备份快照的时间戳。如需查看可以使用哪些时间戳,请转到
dbStorageBucket
并查看存储桶中存在的文件。每个文件名都包含时间戳值。例如:backup_20210203213003_apigee-cassandra-default-0.tgz
其中,20210203213003 是您在希望恢复该时间点创建的备份时使用的
snapshotTimestamp
值。backup:enabled
您应该将此属性设为 false
(以防它之前被设置为true
)。backup:serviceAccountPath
SA_JSON_FILE_PATH
文件系统上指向运行
./tools/create-service-account
时所下载的服务账号 JSON 文件的路径backup:dbStorageBucket
CLOUD_STORAGE_BUCKET_PATH
Cloud Storage 存储桶路径,格式如下:
gs://BUCKET_NAME
。gs://
是必需的。backup:cloudProvider
GCP
cloudProvider: "GCP"
属性是必需的属性。backup:schedule
SCHEDULE
备份的开始时间,使用标准 crontab 语法指定。默认值:
0 2 * * *
非 Cloud Storage
参数
namespace: YOUR_RESTORE_NAMESPACE # Use the same 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: false 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: false 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 * * *" ...
其中:
属性 说明 namespace
YOUR_RESTORE_NAMESPACE
用于恢复的命名空间。使用原始集群中的同一命名空间。
cassandra:hostNetwork
hostNetwork
是必需的,应始终设置为false
。restore:enabled
恢复功能默认处于停用状态。您必须将此属性设为 true
。restore:keyFile
PATH_TO_PRIVATE_KEY_FILE
SSH 私钥文件(在创建 SSH 密钥对的步骤中命名为
ssh_key
)在本地文件系统中的路径。restore:server
BACKUP_SERVER_IP
您的备份服务器的 IP 地址。
restore:storageDirectory
BACKUP_DIRECTORY
备份服务器上备份目录的名称。 此目录必须是
home/apigee
中的目录(备份目录在创建备份目录的步骤中命名为cassandra_backup
)。restore:cloudProvider
HYBRID
cloudProvider: "HYBRID"
属性是必需的属性。restore:snapshotTimestamp
TIMESTAMP
要恢复的备份快照的时间戳。如需查看可以使用哪些时间戳,请转到
dbStorageBucket
并查看存储桶中存在的文件。每个文件名都包含时间戳值。例如backup_20210203213003_apigee-cassandra-default-0.tgz
其中,20210203213003 是您在希望恢复该时间点创建的备份时使用的
snapshotTimestamp
值。backup:enabled
您应该将此属性设为 false
(以防它之前被设置为true
)。backup:keyFile
PATH_TO_PRIVATE_KEY_FILE
SSH 私钥文件(在创建 SSH 密钥对的步骤中命名为
ssh_key
)在本地文件系统中的路径。backup:server
BACKUP_SERVER_IP
您的备份服务器的 IP 地址。
backup:storageDirectory
BACKUP_DIRECTORY
备份服务器上备份目录的名称。此目录必须是
home/apigee
中的目录(备份目录在创建备份目录的步骤中命名为cassandra_backup
)。backup:cloudProvider
HYBRID
cloudProvider: "HYBRID"
属性是必需的属性。backup:schedule
SCHEDULE
备份的开始时间,使用标准 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
配置:Helm
helm upgrade datastore apigee-datastore/ \ --install \ --namespace apigee \ --atomic \ -f overrides.yaml
apigeectl
./apigeectl apply -f ../overrides.yaml