本部分介绍如何使用 ssh 和文件系统(而不是使用 Google Cloud)配置 Cassandra 数据库的备份和恢复。另请参阅: 
什么是不使用 Cloud 服务的 Cassandra 备份和恢复
不使用 Cloud 服务的备份会将 Cassandra 数据库的备份存储到您指定的服务器的文件系统的压缩文件中。备份会按照您在替换文件中指定的时间表执行。通过安全的 SSH 与服务器连接。
不使用 Cloud 服务设置备份
以下步骤包括完成特定任务(例如创建 SSH 密钥对)的常见示例。使用适合您的安装的方法。
该流程包括以下几个部分:
设置服务器和 SSH
- 为您的备份指定 Linux 或 Unix 服务器。此服务器必须可从 Apigee Hybrid 运行时层面通过 SSH 访问。它必须有足够的存储空间来存储备份。
 - 在服务器上设置 SSH 服务器,或确保该服务器已配置安全的 SSH 服务器。
 - 创建 SSH 密钥对并将私钥文件存储在可从 Hybrid 运行时层面访问的路径中。您必须对密钥对使用空白密码,否则备份将失败。例如:
      
ssh-keygen -t rsa -b 4096 -C exampleuser@example.comEnter file in which to save the key (/Users/exampleuser/.ssh/id_rsa): $APIGEE_HOME/hybrid-files/certs/ssh_key Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in ssh_key Your public key has been saved in ssh_key.pub The key fingerprint is: SHA256:DWKo334XMZcZYLOLrd/8HNpjTERPJJ0mc11UYmrPvSA exampleuser@example.com The key's randomart image is: +---[RSA 4096]----+ | +. ++X| | . . o.=.*+| | . o . . o==o | | . . . =oo+o...| | . S +E oo .| | . . .. . o .| | . . . . o.. | | . ...o ++. | | .. .. +o+. | +----[SHA256]-----+ - 在备份服务器上创建名为 
apigee的用户账号。确保新的apigee用户在/home下有一个主目录。 - 在备份服务器上,在新的 
/home/apigee目录中创建一个ssh目录。 - 将公钥(上例中的 
ssh_key.pub)复制到新/home/apigee/ssh目录下名为authorized_keys的文件中。例如:cd /home/apigee
mkdir .sshcd .sshvi authorized_keys - 在备份服务器上,在 
/home/apigee/目录中创建备份目录。备份目录可以是任何目录,只要apigee用户可以访问该目录即可。例如:cd /home/apigee
mkdir cassandra-backup - 测试连接。您需要确保 Cassandra pod 可以使用 SSH 连接到备份服务器:
 
- 登录到 Cassandra pod 的 shell。例如:
kubectl exec -it -n apigee APIGEE_CASSANDRA_DEFAULT_0 -- /bin/bash
其中 APIGEE_CASSANDRA_DEFAULT_0 是 Cassandra pod 的名称。将其更改为您要从其进行连接的 pod 的名称。
 - 使用服务器 IP 地址通过 SSH 连接到您的备份服务器:
ssh apigee@BACKUP_SERVER_IP
 
 - 登录到 Cassandra pod 的 shell。例如:
 
设置备份的时间表和目标位置
    您可以在 overrides.yaml 文件中设置备份的时间表和目标位置。
- 将以下参数添加到 
overrides.yaml文件中:参数
cassandra: 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"
示例
cassandra: 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 * * *"
其中:
属性 说明 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 * * * - 使用 
apigeectl将备份配置应用于集群的存储范围:$APIGEECTL_HOME/apigeectl --datastore -f YOUR_OVERRIDES_FILE
其中,YOUR_OVERRIDES_FILE 是您刚刚修改的替换文件的路径。
 
配置恢复功能
恢复功能会从备份位置获取数据,并将其恢复到具有相同节点数的新 Cassandra 集群中。不会从旧的 Cassandra 集群获取数据。
以下恢复说明适用于不使用 Google Cloud Storage 进行备份的单区域部署。对于其他部署,请参阅以下内容:
- 对于使用 Google Cloud Storage 进行备份的单区域部署,请参阅 Cassandra 备份和恢复。
 - 对于多区域部署,请参阅 GKE 和 GKE On-Prem 上的多区域部署。
 
如需恢复 Cassandra 备份,请执行以下操作:
- 在现有 Kubernetes 集群中创建一个将用于恢复 Hybrid 运行时部署的新命名空间。不要将原始命名空间名称用作新命名空间的名称。不要使用旧命名空间进行恢复。
 - 在 Hybrid 安装根目录中,创建新的 
overrides-restore.yaml文件。 - 
      将完整的 Cassandra 配置从原始 
overrides.yaml文件复制到新的overrides-restore.yaml文件中。例如:cp ./overrides.yaml ./overrides-restore.yaml
 - 将命名空间元素添加到新的 
overrides-restore.yaml文件。参数
namespace: YOUR_RESTORE_NAMESPACE cassandra: ... 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" ...
示例
namespace: cassandra-restore cassandra: 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"
 - 执行以下命令,更改旧命名空间中任何 Cassandra 节点上的 
app标签:kubectl label pods --overwrite --namespace=OLD_NAMESPACE -l app=apigee-cassandra app=apigee-cassandra-old
 - 创建新的 Hybrid 运行时部署。这将创建新的 Cassandra 集群并开始将备份数据恢复到该集群中:
./apigeectl init -f ../overrides-restore.yaml
./apigeectl apply -f ../overrides-restore.yaml
 - 
    
恢复完成后,必须切换流量才能使用新命名空间中的 Cassandra 集群。运行以下命令切换流量:
kubectl get rs -n OLD_NAMESPACE # look for the 'apigee-connect' replicaset
kubectl patch rs -n OLD_NAMESPACE APIGEE_CONNECT_RS_NAME -p '{"spec":{"replicas" : 0}}' - 流量切换完成后,您可以通过移除 
restore配置并将backup配置添加到overrides-restore.yaml文件来重新配置已恢复集群上的备份。将 YOUR_RESTORE_NAMESPACE 替换为第 1 步中创建的新命名空间名称。namespace: YOUR_RESTORE_NAMESPACE cassandra: ... backup: enabled: true serviceAccountPath: SA_JSON_FILE_PATH dbStorageBucket: CLOUD_STORAGE_BUCKET_PATH schedule: BACKUP_SCHEDULE_CODE ...
然后使用以下命令应用
backup配置:./apigeectl apply -f ../overrides-restore.yaml
 
其中:
| 属性 | 说明 | 
|---|---|
namespace | 
        YOUR_RESTORE_NAMESPACE 您在第 1 步中为新的 Cassandra 集群创建的新命名空间的名称。请勿使用原始集群所用的命名空间。  | 
      
restore:enabled | 
        恢复功能默认处于停用状态。您必须将此属性设为 true。 | 
      
restore:keyFile | 
        PATH_TO_PRIVATE_KEY_FILE SSH 私钥文件(在创建 SSH 密钥对的步骤中命名为   | 
      
restore:server | 
        BACKUP_SERVER_IP 您的备份服务器的 IP 地址。  | 
      
restore:storageDirectory | 
        BACKUP_DIRECTORY 备份服务器上备份目录的名称。
          此目录必须是   | 
      
restore:cloudProvider | 
        
 
  | 
      
restore:snapshotTimestamp | 
         
           TIMESTAMP 
            要恢复的备份快照的时间戳。如需查看可以使用哪些时间戳,请转到  
             
            其中,20210203213003 是您在希望恢复该时间点创建的备份时使用的   |