本页面介绍如何在单个区域中恢复 Cassandra。
在单区域部署中,Apigee Hybrid 部署在单个数据中心或区域中。如果您的部署中有多个 Apigee 组织,则恢复过程会恢复所有组织的数据。在多组织设置中,您无法恢复特定的组织。
从备份恢复区域
在配置中,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 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 * * *" ...
其中:
属性 说明 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
备份默认处于停用状态。您必须将此属性设为 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 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 * * *" ...
其中:
属性 说明 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
备份默认处于停用状态。您必须将此属性设为 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
配置:./apigeectl apply -f ../overrides-restore.yaml