不使用 Google Cloud 的备份和恢复

本部分介绍如何使用 SSH 和文件系统(而不是使用 Google Cloud)配置 Cassandra 数据库的备份和恢复。另请参阅:

什么是不使用 Google Cloud 服务的 Cassandra 备份和恢复?

不使用 Cloud 服务的备份会将 Cassandra 数据库的备份存储到您指定的服务器的文件系统中的压缩文件中。备份会按照您在替换文件中指定的时间表执行。通过安全的 SSH 与服务器连接。

不使用 Cloud 服务设置备份:

以下步骤包括完成特定任务(例如创建 SSH 密钥对)的常见示例。使用适合您的安装的方法。

该流程包括以下几个部分:

设置服务器和 SSH

  1. 为您的备份指定 Linux 或 Unix 服务器。此服务器必须可从 Apigee Hybrid 运行时层面通过 SSH 访问。它必须有足够的存储空间来存储备份。
  2. 在服务器上设置 SSH 服务器,或确保该服务器已配置安全的 SSH 服务器。
  3. 创建 SSH 密钥对并将私钥文件存储在可从 Hybrid 运行时层面访问的路径中。切勿为密钥对使用空白密码。例如:
    ssh-keygen -t rsa -b 4096 -C exampleuser@example.com
      Enter 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]-----+
  4. 在备份服务器上创建一个名为“apigee”的用户账号。确保新的“apigee”用户在 /home 下有一个主目录。
  5. 在备份服务器上,在新的 /home/apigee 目录中创建一个“ssh”目录。
  6. 将公钥(上例中的 ssh_key.pub)复制到新 /home/apigee/ssh 目录下名为“authorized_keys”的文件中。例如:
    cd /home/apigee
    mkdir .ssh
    cd .ssh
    vi authorized_keys
  7. 在备份服务器上,在 /home/apigee/ 目录中创建备份目录。只要“apigee”用户有权访问备份目录,备份目录可以是任何目录。例如:
    cd /home/apigee
    mkdir cassandra-backup
  8. 测试连接。您需要确保 Cassandra pod 可以通过 SSH 连接到您的备份服务器:
    1. 登录到 Cassandra pod 的 shell。例如:
      kubectl exec -it -n apigee apigee-cassandra-default-0 -- /bin/bash

      其中 apigee-cassandra-default-0 是 Cassandra pod 的名称。将其更改为您要从其进行连接的 pod 的名称。

    2. 使用服务器 IP 地址通过 SSH 连接到您的备份服务器:
      ssh apigee@backup-server-ip

设置备份的时间表和目标位置

您可以在 overrides.yaml 文件中设置备份的时间表和目标位置。

  1. 将以下参数添加到 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
    path-to-private-key-file SSH 私钥文件(在创建 SSH 密钥对的步骤中命名为 ssh_key)在本地文件系统中的路径。
    backup-server-ip 您的备份服务器的 IP 地址。
    backup-directory 备份服务器上备份目录的名称。此目录必须是 home/apigee 中的目录(备份目录在创建备份目录的步骤中命名为 cassandra_backup)。
    HYBRID cloudProvider: "HYBRID" 属性是必需的属性。
    schedule 备份的开始时间,使用标准 crontab 语法指定。默认:0 2 * * *

    注意:避免将备份计划为在将备份配置应用于集群后很短时间内开始。应用备份配置时,Kubernetes 会重新创建 Cassandra 节点。如果备份在节点重启(可能需要几分钟)之前开始,则备份将失败。

  2. 使用 apigeectl 将备份配置应用于集群的存储范围:
    $APIGEECTL_HOME/apigeectl --datastore -f your-overrides-file

    其中,your-overrides-file 是您刚刚修改的替换文件的路径。

配置恢复功能

恢复功能会使用您指定的时间戳从备份文件中获取数据,并将其恢复到具有相同数量 pod 的新 Cassandra 集群中。新集群必须具有不同于运行时层面集群的命名空间。

如需恢复 Cassandra 备份,请执行以下操作:

  1. 使用新的命名空间创建新的 Kubernetes 集群。您不能使用用于原始混合安装的同一集群/命名空间。
  2. 在根混合安装目录中,创建新的 overrides-restore.yaml 文件。
  3. 将完整的 Cassandra 配置从原始 overrides.yaml 文件复制到新文件中。
  4. 将以下参数添加到 overrides-restore.yaml 文件中:

    参数

    namespace: 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: "backup-to-restore"
    

    示例

    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"
    

    其中:

    属性 说明
    restore-namespace 您新建的 Cassandra 集群的新命名空间的名称。请勿使用您原始集群所用的命名空间。
    restore:enabled 恢复功能默认处于停用状态。您必须将此属性设为 true
    path-to-private-key-file SSH 私钥文件(在创建 SSH 密钥对的步骤中命名为 ssh_key)在本地文件系统中的路径。
    backup-server-ip 您的备份服务器的 IP 地址。
    backup-directory 备份服务器上备份目录的名称。此目录必须是 home/apigee 中的目录(备份目录在创建备份目录的步骤中命名为 cassandra_backup)。
    HYBRID cloudProvider: "HYBRID" 属性是必需的属性。
    backup-to-restore 您要恢复的特定备份,采用标准 crontab 语法指定(不允许使用通配符)。
  5. 使用 apigeectl 将备份配置应用于集群的存储范围:
    $APIGEECTL_HOME/apigeectl --datastore -f your-overrides-restore-file

    其中 your-overrides-restore-file 是您刚刚修改的 overrides-restore.yaml 文件的路径。