用于 SAP HANA 安装的 Cloud Storage Backint 代理指南

这些说明介绍了如何安装和配置 SAP HANA 的 Cloud Storage Backint 代理(Backint 代理)。

如需了解 Backint 代理的配置选项,请参阅适用于 SAP HANA 的 Cloud Storage Backint 代理概览

前提条件

您必须先安装 SAP HANA,然后才能安装 Backint 代理。如需在 Google Cloud 上安装 SAP HANA,请参阅 SAP HANA 部署指南

如需了解如何在 Bare Metal 解决方案上安装 SAP HANA,请参阅 Bare Metal 解决方案上的 SAP HANA 规划指南

如果主机虚拟机无法访问互联网,您需要配置专用 Google 访问通道,以便 Backint 代理可以访问 Google Cloud API。要配置专用 Google 访问权限,请参阅配置专用 Google 访问权限

创建 Cloud Storage 存储分区以进行备份

在配置 Backint 代理之前,您需要创建一个 Cloud Storage 存储分区来保存备份。

如需创建 Cloud Storage 存储分区,请使用 Cloud Console。

如需了解存储分区选项,请参阅将备份存储在 Cloud Storage 存储分区中

  1. 在 Cloud Console 中打开 Cloud Storage 浏览器。

    打开 Cloud Storage 浏览器

  2. 点击创建存储分区

  3. 为您的存储分区命名,然后点击继续

  4. 按照提示选择您的存储分区选项。

  5. 点击创建

  6. 要配置存储分区权限,请点击“权限”标签。默认情况下,您作为存储分区的所有者,拥有存储分区的读写权限。您还可以允许其他主帐号访问您的存储桶。

在 SAP HANA 主机上安装 Backint 代理

Backint 代理安装在与 SAP HANA 数据库相同的共享文件系统中。

在 SAP HANA 横向扩容部署中,在 SAP HANA 系统的每个节点上安装 Backint 代理。为了简化管理,您可以将配置文件存储在可供部署中的所有节点访问的共享位置,例如 /hana/shared

  1. 使用 SSH 连接到您的 SAP HANA 主机。如果您的主机是 Compute Engine 虚拟机,您可以在“虚拟机实例”页面中点击虚拟机实例对应的 SSH 按钮,也可以使用自己偏好的 SSH 方法。

  2. 切换到 SAP HANA 系统管理员。

    sudo su - sidadm
    
  3. 下载并安装 Backint 代理。

    curl https://storage.googleapis.com/cloudsapdeploy/backint-gcs/install.sh | bash
    

    install.sh 脚本会执行以下操作:

    • /usr/sap/SID/SYS/global/hdb/opt/backint/backint-gcs 中以 JAR 文件的形式安装 Backint 代理。
    • 下载兼容的 Java 运行时环境版本。
    • 设置调用 Backint 代理的 backint 脚本。除非收到 Cloud Customer Care 指示,否则请勿修改 backint 脚本。
    • 完成后,发出一条消息提示您更新 parameters.txt 文件并设置身份验证。 如需了解详情,请参阅配置 Backint 代理和 SAP HANA
  4. 如果您属于以下任一情况,则需要为 Backint 代理创建服务帐号:

    • 您需要 Backint 代理使用与主机 Compute Engine 虚拟机所用资源集不同的资源权限。
    • SAP HANA 在裸机解决方案上运行。
    • SAP HANA 不在 Google Cloud 上运行。

    要为 Backint 代理创建服务帐号:

    1. 在 Cloud Console 中,转到服务帐号页面。

      转到“服务帐号”页面

    2. 选择您的 Google Cloud 项目。

    3. 点击创建服务帐号

    4. 为服务帐号指定名称并提供说明(可选)。

    5. 点击创建并继续

    6. 点击继续以创建没有权限的服务帐号。

    7. 根据具体情况授予其他用户访问服务帐号的权限。

    8. 点击完成

    9. 在 Cloud Console 中的服务帐号页面上,点击您刚创建的服务帐号的电子邮件地址。

    10. 在服务帐号名称下,点击密钥标签页。

    11. 点击添加密钥下拉菜单,然后选择创建新密钥以创建服务帐号密钥

    12. 接受 JSON 作为密钥类型,然后点击创建。私钥已保存到您的计算机。

  5. 将 JSON 密钥文件上传到 SAP HANA 主机。

    • 将 .json 文件存储在 sidadm 用户可以访问的目录中,例如 /usr/sap/SID/home
    • 确保 sidadm 用户有权读取该文件。
  6. 更新 Cloud Storage 存储分区,以向服务帐号授予使用存储分区的权限:

    1. 在 Cloud Storage 浏览器中点击您的存储分区名称。

      打开 Cloud Storage 浏览器

    2. 点击权限标签页。

    3. 点击添加主帐号

    4. 新的主帐号字段中,输入服务帐号的完整电子邮件地址。例如:

      backint-test@my-project.iam.gserviceaccount.com

    5. 点击选择角色下拉列表,然后输入 Storage Object Admin。

    6. 点击保存

配置 Backint 代理和 SAP HANA

您可以通过在纯文本配置文件中指定参数来配置 Backint 代理。

您可以为所有备份类型(数据、日志和目录)使用相同的配置,也可以为每种备份类型使用不同的配置,为每个备份类型使用不同的配置。

您可以通过指定 global.ini 文件中的参数来指定 SAP HANA 中每个 Backint 代理配置文件的路径。

  1. 通过在 parameters.txt 文件中指定参数来配置 Backint 代理。您可以根据需要重命名文件。

    1. 使用您的首选方式修改 parameters.txt 文件。该文件安装在以下目录中。

      /usr/sap/SID/SYS/global/hdb/opt/backint/backint-gcs/parameters.txt
      

      您可以重命名 parameters.txt 文件,并为数据、日志和目录备份使用不同的配置文件。

      如需了解配置参数的说明和性能建议,请参阅 Backint 代理的配置选项

    2. 指定用于备份的 Cloud Storage 存储分区的名称。

      #BUCKET bucket-name
      
    3. 如果您为 Backint 代理创建了服务帐号和私钥,请将 JSON 密钥文件的路径添加到。

      #SERVICE_ACCOUNT /path/key-file-name.json

    以下示例展示了有效的 parameters.txt 文件的内容。

    #BUCKET hana-backups
    #DISABLE_COMPRESSION
    #SERVICE_ACCOUNT /usr/sap/ABC/home/example-project-123456-d591d63bba6f.json
  2. 可选:将 Backint 代理配置为在备份和恢复时绕过或使用代理。默认情况下,Backint 代理将绕过 HTTP 代理。

    对实例元数据服务器的查询必须始终绕过 HTTP 代理服务器。根据代理服务器的要求,使用 httphttps 代理参数。

    如需为 Backint 代理指定代理服务器设置,请修改文件 /usr/sap/SID/SYS/global/hdb/opt/backint/backint-gcs/jre/conf/net.properties

    例如,以下配置指定了 HTTPS 代理服务器:

    http.proxyHost=proxy-host
    http.proxyPort=proxy-port
    http.nonProxyHosts=localhost|127.*|[::1]|169.254.169.254|metadata.google.internal
    https.proxyHost=proxy-host
    https.proxyPort=proxy-port
    

    如需详细了解如何将 Backint 代理与代理服务器搭配使用,请参阅代理服务器和 Backint 代理

  3. 配置 SAP HANA 以使用 Backint 代理:

    1. 使用 SAP HANA Studio 或 SAP HANA Cockpit 将 global.ini 配置文件的 backup 部分中的以下参数设置为表中显示的值。进行这些更改后,您无需重启 SAP HANA。

      如果您要为不同类型的备份使用不同的配置文件,请指定下表介绍的不同配置文件。否则,请针对所有类型指定相同的配置文件。

      参数
      catalog_backup_parameter_file /usr/sap/SID/SYS/global/hdb/opt/backint/backint-gcs/parameters-catalog.txt
      catalog_backup_using_backint true
      data_backup_parameter_file /usr/sap/SID/SYS/global/hdb/opt/backint/backint-gcs/parameters-data.txt
      log_backup_parameter_file /usr/sap/SID/SYS/global/hdb/opt/backint/backint-gcs/parameters-log.txt
      log_backup_using_backint true
    2. 使用 SAP HANA Studio 为 global.ini 文件的 persistence 部分中的 basepath_catalogbackupbasepath_logbackup 指定相同的值。例如:

      basepath_catalogbackup 和 basepath_logbackup 在 global.ini 文件的 persistence 部分中显示相同的值

  4. 通过在 Cloud Storage 存储分区中创建备份并从备份恢复来测试安装。

  5. 如需支持 Backint 代理自动更新功能,请启用从 SAP HANA 虚拟机到 https://www.googleapis.com/ 的远程 HTTP 请求。

  6. 您也可以选择启用 Cloud Logging。

    • 如果 SAP HANA 在 Compute Engine 虚拟机上运行,请将 com.google.cloud.logging.LoggingHandler 处理程序添加到 /usr/sap/SID/SYS/global/hdb/opt/backint/backint-gcs/logging.properties 文件的 com.google.cloud.partners.handlers 属性。
    • 如果 SAP HANA 在 Google Cloud 之外运行,请安装 Cloud SDK 并使用 gcloud auth application-default login 命令配置应用默认登录。

将 Backint 代理更新到新版本

如需将 Backint 代理更新到新版本,请执行以下操作:

  1. 启用从 SAP HANA 主机到 https://www.googleapis.com/ 的远程 HTTP 请求。

  2. 以 SAP HANA 主机上的 sidadm 身份安装新版本:

    curl https://storage.googleapis.com/cloudsapdeploy/backint-gcs/update.sh | bash

update.sh 脚本会执行以下操作:

  • /usr/sap/SID/SYS/global/hdb/opt/backint/backint-gcs 中安装新版本的 Backint 代理。
  • 更新 backint 脚本以调用新的 Backint 代理版本。
  • 更新 VERSION.txt 中的版本号。
  • update.sh 脚本存储在本地的 /usr/sap/SID/SYS/global/hdb/opt/backint/backint-gcs 中。
  • 完成后发送消息。

更新过程不会修改或替换现有的 parameters.txt 文件。如需使用新版本中引入的任何新选项,您需要将相应的参数添加到现有 parameters.txt 文件中。

更新过程会在 /usr/sap/SID/SYS/global/hdb/opt/backint/backint-gcs 目录中保留旧版本的 Backint 代理,以便您可以在有需要的时候回退到旧版本。

回退到之前的版本

如果您的新版本的 Backint 代理出现问题,并且 Google Cloud 或 SAP 支持团队建议您回退到之前的版本,您可以通过修改 backint 脚本文件来完成。

您无需移除可能已在 parameters.txt 文件中为新版本添加的任何参数。之前版本的 Backint 代理会忽略来自较新版本的参数。

要回退到之前的版本,请执行以下操作:

  1. sidadm 身份打开 backint 脚本进行修改。例如:

    vi /usr/sap/SID/SYS/global/hdb/opt/backint/backint-gcs/backint
  2. 将 Backint 代理 JAR 文件的名称更改为之前版本的 JAR 文件的名称。

    例如,如果您要从版本 1.0.6 回退到版本 1.0.4,则需要进行如下更改:

    -jar /usr/sap/ABC/SYS/global/hdb/opt/backint/backint-gcs/sap-backint-gcs-1.0.6.jar
    to:

    -jar /usr/sap/ABC/SYS/global/hdb/opt/backint/backint-gcs/sap-backint-gcs-1.0.4.jar

  3. 打开 VERSION.txt 文件进行修改,并指定之前的版本号。这样做的目的是使更新机制了解您运行的是哪个版本。

    vi /usr/sap/SID/SYS/global/hdb/opt/backint/backint-gcs/VERSION.txt
  4. 通过触发备份来测试 Backint 代理。

问题排查

如果在执行备份或恢复过程中出现错误,则相应错误消息会显示在 SAP HANA Studio 或 SAP HANA Cockpit 中,因此,请先在这些位置检查是否存在与错误原因有关的信息。此信息可能会显示在 backup.logbackint.log 跟踪文件中。使用多租户数据库容器 (MDC) 时,务必选择相关的数据库名称。

确保您已以 sidadm 用户身份安装了 Backint 代理。

日志文件

如果出现错误,请查看以下日志:

  • SAP HANA backup.log,其中包含有关 SAP HANA 备份和恢复操作的信息。
  • SAP HANA backint.log,其中包含对 Backint 代理和其他外部备份工具使用的备份接口的调用。
  • Backint 代理日志文件,其中包含 Backint 代理安装和操作事件。Backint 代理日志文件位于 /usr/sap/SID/SYS/global/hdb/opt/backint/backint-gcs/logs 中。Backint 代理日志可能指示与 Cloud Storage 的通信错误以及相关的配置或权限问题。
  • Google Cloud 日志,可能包含与 Backint 代理使用的服务帐号相关的错误。如需查看 Google Cloud 日志,请参阅 Cloud Console 中的“日志查看器”页面

此外,还要检查 SAP HANA 主机上的磁盘和网络 I/O 信息以验证活动。

如需详细了解 Backint 代理日志记录,请参阅 Backint 代理的日志记录

连接问题

如果 Backint 代理无法连接到 Cloud Storage 存储分区,请查看具体配置步骤。请特别检查以下内容:

  • 重试失败的备份或恢复,以确保错误不是由于暂时的连接问题导致的。
  • 如果您将主机虚拟机的服务帐号与 Backint 代理搭配使用,在 Cloud Console 的虚拟机实例详情页面中的 Cloud API 访问权限范围下,存储的访问权限范围会列为读写。如果不是,请停止实例并修改访问权限范围。
  • 如果您为 Backint 代理创建了服务帐号:
    • 在 Cloud Console 存储分区详情页面的权限标签页下,确认已列出 Backint 代理服务帐号,并且该帐号具有 Storage Object Admin 角色。
    • 确认您已创建私钥,将其存储在 SAP HANA 主机上,并且在 Backint 代理配置文件 /usr/sap/SID/SYS/global/hdb/opt/backint/backint-gcs/parameters.txt 中正确指定了 JSON 密钥文件的路径。
  • parameters.txt Backint 代理配置文件和 SAP HANA global.ini 文件中正确指定了所有参数。

您可以使用 Cloud SDK 附带的 Cloud Storage gsutil 工具测试从 SAP HANA 主机到 Cloud Storage 存储分区的访问。使用 gsutil 工具在 Cloud Storage 存储分区上保存和访问一个文本文件:

  1. 如果您没有使用默认服务帐号,请以有权访问 Cloud Storage 存储分区的用户身份,或使用 Backint 代理服务帐号向 Google Cloud 进行身份验证:

    gcloud auth login user-account
    或:
    gcloud auth activate-service-account --key-file=/path/key-file-name.json
    如需详细了解服务帐号的 Cloud Storage 身份验证,请参阅 gsutil 身份验证

  2. 确认您可以列出存储在存储分区中的对象:

    gsutil ls gs://bucket/

  3. 创建测试文件:

    touch test.txt

  4. 确认您可以将测试文件写入存储分区:

    gsutil cp test.txt gs://bucket/test.txt

  5. 确认您可以读取存储分区中的测试文件:

    gsutil cp gs://bucket/test.txt

低吞吐量

如果吞吐量低于预期,请验证是否停用了压缩功能。

要停用压缩,请将 #DISABLE_COMPRESSION 标志添加到 Backint 代理 parameters.txt 文件中。

多流处理错误

如果您在多流处理时遇到错误,请将流的数量更改为一 (1),看看该错误是否与流的数量有关。

如需详细了解 Backint 代理日志记录,请参阅使用 Backint 代理多流处理数据备份

获取 Backint 代理支持

如果您需要解决使用 Backint 代理的 SAP HANA 备份问题的帮助,请使用组件 HAN-DB-BAC 在 SAP 突发事件处理系统中创建事件,具体请参阅 SAP 说明 2705632

如果 SAP 确定根本原因存在于 Google Cloud 软件中,SAP 开发支持会将突发事件转移到 BC-OP-LNX-GOOGLE 组件,Google Cloud 会始终监控该组件。

除了 SAP 说明 2705632 中要求的诊断信息之外,请收集以下额外诊断信息:

  • 从问题发生开始对 HANA 系统的 /var/log/messages 的相关提取。
  • SAP HANA backup.logbackint.log 文件。除非系统数据库也出现此问题,否则您只需要租户数据库的文件。
  • Backint 代理 parameters.txt 文件和 backint-gcs 目录中的日志文件,或导出的 Cloud Logging 日志(如果您已启用 Logging)。
  • 备份的 global.ini 条目:
    • backint_response_timeout
    • data_backup_buffer_size
    • parallel_data_backup_backint_channels
  • 您正在使用的 SAP HANA、操作系统和 Backint 代理的软件版本。installation.log 文件中列出了 Backint 代理的版本。
  • 备份的大小。
  • Backint 代理用于访问 Cloud Storage 的 IAM 服务帐号的相关信息,包括帐号名称和已授予的角色。
  • 关于从该主机虚拟机进行的备份或恢复尝试是否成功的信息。
  • 描述您的 SAP HANA 横向环境,包括主机及其角色。

如需详细了解 SAP 提供的关于获取 SAP HANA 支持的信息,请参阅 SAP HANA 管理指南中的“获取支持”部分。