适用于 SAP HANA 的基于 Backint 的备份和恢复

本规划指南仅重点介绍 Google Cloud 的 Agent for SAP 的 Backint 功能,该功能可用于对 SAP HANA 执行备份和恢复操作。如需了解代理及其所有功能,请参阅 Google Cloud 的 Agent for SAP 规划指南

对于 SAP HANA 系统,您可以使用 Google Cloud 的 Agent for SAP 的 Backint 功能执行备份和恢复操作。此功能适用于在 Google Cloud、裸金属解决方案、本地或其他云服务提供商上运行的 SAP HANA 系统。

代理的 Backint 功能已获得 SAP 认证。此功能与 SAP HANA 相集成,因此您可以使用 SAP 原生备份和恢复功能直接从 Cloud Storage 存储和检索备份。

如需了解如何配置此功能,请参阅为 SAP HANA 配置基于 Backint 的备份和恢复

如需了解如何使用 Backint 为 SAP HANA 执行备份和恢复操作,请参阅使用 Backint 执行备份和恢复

如需了解 Backint 功能的 SAP 认证,请参阅:

每月费用估算

您需要为 Cloud Storage 中使用的存储付费。如需了解费用,请参阅 Cloud Storage 价格

如需估算每月 Cloud Storage 费用,您可以使用 Google Cloud 价格计算器

以下信息可帮助您更好地估算费用:

  • 一个月内的完整备份和增量备份的总大小,包括预计增长率。
  • SAP HANA 数据库创建的 SAP HANA 日志卷备份的每日变化率。您需要将此变化率乘以您计划根据备份策略保留日志备份的天数。
  • 符合备份策略的 Cloud Storage 存储桶的位置和类型。单区域存储桶只能用于测试目的。
  • Cloud Storage 存储桶的存储类别。选择与所需数据访问频率一致的类别。
  • 一个月中用于备份和恢复的 Cloud Storage 中的 A 类和 B 类操作的估算数量。如需了解这些操作,请参阅划分到各个类别的操作
  • 区域间、区域内和多区域操作的估算网络出站流量,例如使用备份恢复数据库时。如需了解详情,请参阅 Google Cloud 中的数据转移

    到 Cloud Storage 的网络入站流量是免费的,因此您无需将其包含在估算值中。

Backint 配置文件

如需配置 Google Cloud 的 Agent for SAP 的 Backint 功能,您可以在启用该功能时在代理创建的单独配置文件中指定参数。

默认情况下,配置文件名为 parameters.json,默认位置为 /usr/sap/SID/SYS/global/hdb/opt/backint/backint-gcs/parameters.json

SID 是 SAP 系统 SID 的占位符变量。

您可以针对以下各项使用单个配置,也可以使用单独的配置文件:SAP HANA 数据卷、SAP HANA 日志卷和 SAP HANA 备份目录。您还可以执行其他自定义操作,例如重命名文件并将其移动到其他目录。如需了解如何执行这些自定义,请参阅自定义 Backint 配置文件

将备份存储在 Cloud Storage 存储桶中

Google Cloud 的 Agent for SAP 的 Backint 功能将您的 SAP HANA 备份存储在 Cloud Storage 存储桶中。以下部分介绍了如何创建 Cloud Storage 存储桶,以及 Google Cloud 的 Agent for SAP 如何将备份存储在存储桶中。

创建 Cloud Storage 存储桶

创建存储桶时,您必须选择存储桶位置和存储桶存储类别。

存储桶位置可以是单区域、双区域或多区域。您需要根据限制数据位置的需求、备份和恢复的延迟时间要求,以及防止区域性中断的需求,选择存储桶。如需了解详情,请参阅存储桶位置

在与运行 SAP HANA 实例的区域相同或接近的区域中,选择双区域或多区域存储桶。

根据您需要保留备份的时长、预期的备份访问频率和费用,选择存储类别。有关详情,请参阅存储类别

存储桶中的备份组织

Google Cloud 的 Agent for SAP 使用 Cloud Storage 存储桶中的文件夹来组织 SAP HANA 备份。

代理会使用 Backint 功能为您备份的每个 SAP HANA 数据库、系统或租户创建一个文件夹。在数据库的文件夹内,代理会创建单独的文件夹来存储 SAP HANA 数据卷、SAP HANA 日志卷和 SAP HANA 备份目录的备份。

为了为备份命名,代理需要遵循 SAP HANA 命名惯例

以下是 Cloud Storage 存储桶中 SAP HANA 备份的示例路径:

  • 对于系统数据库的备份:

    BUCKET_NAME/SID/usr/sap/SID/SYS/global/hdb/backint/SYSTEMDB
  • 对于租户数据库的备份:

    BUCKET_NAME/SID/usr/sap/SID/SYS/global/hdb/backint/DB_TENANT_SID

    替换以下内容

    • BUCKET_NAME:Cloud Storage 存储桶的名称
    • SID:您的 SAP 系统的系统 ID
    • TENANT_SID:租户数据库的系统 ID

组织备份的最佳做法

组织 Cloud Storage 存储桶中的备份时,请遵循以下最佳做法:

  • 请勿重命名 Cloud Storage 存储桶内的文件夹或文件。

    重命名文件夹或文件会有效地更改备份路径,此操作违反了 SAP 对第三方备份工具强制执行的标准。重命名文件夹或文件会导致 Backint 机制在数据库恢复操作期间失败,除非您将文件夹或文件还原为创建备份时的名称。

  • 请勿使用同一个 Cloud Storage 存储桶来存储两个或多个具有相同 SAP 系统 ID (SID) 的 SAP HANA 数据库的备份。

    在 Cloud Storage 中,Google Cloud 的 Agent for SAP 将 SAP HANA 备份组织到特定于 SID 的文件夹。因此,如果您使用相同的存储桶来存储具有相同 SID 的 SAP HANA 数据库的备份,则备份操作可能会覆盖或删除备份。

    此最佳做法的例外情况是,在高可用性 (HA)、灾难恢复 (DR) 或横向扩容部署中安装的 SAP HANA 数据库,其中所有 SAP HANA 节点均具有相同的 SID。对于这些系统,备份会存储在同一个 Cloud Storage 存储桶中,因为在正常操作期间,只有一个 SAP HANA 实例处于活跃状态,并且会写入备份。如需了解详情,请参阅在 SAP HANA 部署中使用 Backint

备份的加密选项

根据设计,Cloud Storage 始终会在将数据存储到存储桶之前对数据进行加密。如需对数据额外应用一层加密,您可以使用以下选项之一:

加密选项 说明
客户管理的加密密钥与 Google Cloud 的 SAP for Agent 的 Backint 功能配合使用。 如需使用客户管理的加密密钥,您必须在 PARAMETERS.json 文件的 kms_key 参数中指定密钥的路径。您还需要向代理使用的服务账号授予对密钥的访问权限。如需了解如何向服务账号授予对加密密钥的访问权限,请参阅将 Cloud Key Management Service 密钥分配给服务代理
客户提供的加密密钥与 Google Cloud 的 Agent for SAP 的 Backint 功能配合使用。 如需使用客户提供的加密密钥,请在 PARAMETERS.json 文件的 encryption_key 参数中指定密钥的路径。密钥必须是采用 base64 编码的 AES-256 密钥字符串,如客户提供的加密密钥中所述。
使用 SAP HANA 备份加密

从 SAP HANA 2.0 SP01 起提供了此选项。您可以使用 AES 256 位加密对 SAP HANA 数据卷和日志卷的备份进行加密。SAP HANA 备份目录的备份绝不会加密。 此加密要求您创建备份加密根密钥,并执行其他配置,如 SAP HANA 文档加密配置中所述。

从 SAP HANA 2.0 SPS07 起,除非您停用对 /hana/data/hana/log/hanabackup 卷的加密,否则在安装期间会默认启用此加密。

如需了解如何创建根密钥的备份,请参阅 SAP 文档备份根密钥

备份加密在备份和恢复操作期间需要额外的内存和 CPU 资源。虽然加密备份在备份或恢复操作期间通常不会对数据库性能产生任何影响,但您可能会发现整体系统性能受到了影响,具体取决于 SAP HANA 数据库的大小和预计更高的 CPU 使用率。

加密限制

对备份使用加密存在以下限制:

  • 如果您同时指定 kms_keyencryption_key 参数,则 Google Cloud 的 Agent for SAP 会失败并退出,返回状态 1
  • 如果您在使用 kms_keyencryption_key 参数时指定了 parallel_streams 参数,则 Google Cloud 的 Agent for SAP 会失败并退出,返回状态 1

备份的压缩选项

压缩备份可减小其大小,减少其在 Cloud Storage 存储桶中使用的空间,从而降低存储费用。但是,压缩备份在备份操作期间需要更多的 CPU 使用率,这可能会影响备份和恢复操作期间的整体性能。

作为压缩备份的替代方案,请考虑使用 Cloud Storage 的 Autoclass 功能,该功能会根据对象的访问模式自动将存储桶中的对象转换为适当的存储类别。

如需压缩 SAP HANA 备份,您可以使用以下选项之一:

压缩选项 说明
使用 SAP HANA 数据备份压缩

如果需要备份压缩,则建议使用此选项。

从 SAP HANA 2.0 SPS06 开始,SAP HANA 支持在执行备份操作时使用 LZ4 压缩算法。默认情况下,压缩处于停用状态。 如需了解如何启用此压缩,请参阅 SAP HANA 文档配置数据备份压缩

使用 Cloud Storage 压缩

如需在将备份写入 Cloud Storage 存储桶时使用代理可以执行的内置压缩,请使用 PARAMETERS.json 中的 compress 参数。

我们建议您不要启用此压缩。

多流处理数据备份

对于 SAP HANA 2.0 SP05 之前的版本,SAP HANA 支持对大于 128 GB 的数据库进行多流处理。从 SAP HANA 2.0 SP05 开始,可通过 SAP HANA 参数 parallel_data_backup_backint_size_threshold 配置此阈值。该参数指定启用多流处理所需的数据库备份大小下限(以 GB 为单位)。

多流处理可用于提高吞吐量和备份大于 5 TB(Cloud Storage 中的单个对象的大小上限)的数据库。

如需启用多流处理,请将 SAP HANA 参数 parallel_data_backup_backint_channels 设置为要使用的通道数量。用于多流处理的最佳通道数取决于正在运行的 SAP HANA。

此外,还需要考虑挂接到 SAP HANA 实例的数据磁盘的吞吐量能力,以及管理员为备份活动分配的带宽。您可以通过改变流的数量来调整吞吐量,也可以使用 PARAMETERS.json 中的 rate_limit_mb 参数限制吞吐量。

对于多区域级 Cloud Storage 存储桶,最低为 8 个通道。对于单区域级存储桶,最低位 12 个通道。根据需要调整通道数,以达到备份性能目标。

如 SAP HANA 文档中所述,每增加一个通道都需要 512 MB 的 I/O 缓冲区。使用 global.ini 文件的 backup 部分中的 data_backup_buffer_size 参数指定 I/O 缓冲区的适当大小。如需详细了解 I/O 缓冲区大小对备份时间的影响,请参阅 SAP 说明 2657261 - 在 HANA 数据库中使用 Backint 的长备份时长。从 HANA 2.0 SP05 开始,SAP 为此参数指定了 4 GB 的最大值。Google Cloud 中的测试并未显示将缓冲区空间提高到明显超出默认值可提供任何优势,但这一点可能会因工作负载而异。

如需详细了解多流处理,请在您的 SAP HANA 版本对应的 SAP HANA 管理指南中,参阅使用第三方备份工具多流处理数据备份

并行上传

对于 SAP HANA 日志备份文件,您可以通过启用 Google Cloud 的 Agent for SAP 的并行上传功能来提高上传性能。此功能对于 SAP HANA 日志备份文件特别有用,因为它们无法从 SAP HANA 进行多流处理。

对于 SAP HANA 数据备份,您可以使用 SAP HANA 参数 parallel_data_backup_backint_channels 来调整 SAP HANA 备份通道的数量。

启用并行上传后,Google Cloud 的 Agent for SAP 会将从 SAP HANA 收到的每个备份文件拆分为多个部分,然后进行并行上传,从而改善上传性能。Cloud Storage 收到这些部分后,将其重新组装为 Google Cloud 的 Agent for SAP 从 SAP HANA 处接收到的原始单个文件,然后存储该文件。单个文件必须符合 Cloud Storage 中对象的 5 TB 大小限制。

配置并行上传

如需启用并行上传功能,请在 PARAMETERS.json 文件中指定 parallel_streams 参数。

如需了解此参数,请参阅配置参数

并行上传限制

并行上传功能存在以下限制:

  • 如果您使用 encryption_keykms_key 参数启用加密,则无法使用并行上传。加密功能与并行上传功能不能一起使用。如果您在上述任一加密参数时指定了 parallel_streams 参数,则 Google Cloud 的 Agent for SAP 将失败并退出,返回状态 1
  • 如果启用了压缩,则无法使用并行上传。压缩功能与并行上传功能不能一起使用。如果您在配置中指定了 parallel_streams 参数并省略 compress 参数,则 Google Cloud 的 Agent for SAP 会失败并退出,返回状态 1
  • 如果您的 Cloud Storage 存储桶实现了保留政策,则该存储桶不支持并行上传。保留政策可防止将部分重新汇编为单个文件,从而导致上传失败。

调整并行上传

对于 SAP HANA 日志卷备份,并行上传可以显著提高备份吞吐量,因为 SAP HANA 不多流处理日志备份。

在大多数情况下,在 Backint 配置文件中为 parallel_streams 参数指定值 32 或更小就已足够。如果日志卷非常大,您可以通过为 parallel_streams 指定较高的值(例如 32)并增大 SAP HANA 参数 log_segment_size_mbmax_log_backup_size 的值来最大限度地提高吞吐量。

如需限制备份使用的网络带宽,请使用 Backint 配置参数 rate_limit_mb 来设置并行上传可以使用的带宽上限。

身份验证和访问权限控制

Google Cloud 使用服务账号来标识 Google Cloud 的 Agent for SAP 等程序,并控制这些程序可以访问的 Google Cloud 资源。

所需的 Cloud Storage 权限

要允许 Google Cloud 的 Agent for SAP 在 Cloud Storage 存储桶中存储和检索备份,主机使用的服务账号必须获得 IAM 角色 Storage Object Admin (storage.objectAdmin)

有关设置 IAM 角色的说明,请参阅设置 IAM 角色

服务账号注意事项

如果 SAP HANA 在 Compute Engine 虚拟机上运行,则默认情况下,Google Cloud 的 Agent for SAP 使用虚拟机的服务账号。如果您使用虚拟机服务账号,则代理将与使用虚拟机服务账号的所有其他程序和进程具有相同的项目级层权限。

如需进行最严格的访问权限控制,请为代理创建单独的服务账号,并在存储桶层级向该服务账号授予针对 Cloud Storage 存储桶的访问权限。

如果 SAP HANA 未在 Compute Engine 虚拟机上运行,则您必须为代理创建一个服务账号。请在包含 Google Cloud 的 Agent for SAP 用于备份和恢复的 Cloud Storage 存储桶的 Google Cloud 项目中创建服务账号。

为 Google Cloud 的 Agent for SAP 创建服务账号时,您还需要创建服务账号密钥。 您需要将密钥存储在 SAP HANA 主机上,并在 PARAMETERS.jsonservice_account_key 参数中指定密钥的路径。当 SAP HANA 在 Compute Engine 虚拟机上运行时,指定密钥路径将指示 Google Cloud 的 Agent for SAP 使用与该密钥关联的服务账号(而非虚拟机服务账号)。

如果您使用由 Cloud Key Management Service 生成的客户管理的加密密钥来加密 Cloud Storage 中的备份,则需要向服务账号授予访问该加密密钥的权限。如需了解详情,请参阅将 Cloud Key Management Service 密钥分配给服务代理

对 Google Cloud API 和元数据服务器的访问权限

Google Cloud 的 Agent for SAP 在备份和恢复操作期间需要访问 Google Cloud IP 地址和主机。

如需了解详情,请参阅启用对 Cloud API 和元数据服务器的访问权限

代理服务器和代理

默认情况下,Google Cloud 的 Agent for SAP 会绕过任何 HTTP 代理,并且不会读取操作系统中的代理环境变量(例如 http_proxyhttps_proxyno_proxy)。

如果您没有替代方案,或者您的组织了解性能影响,并且具有支持通过代理服务器路由备份的性能所需的专业知识,则可以配置代理使用代理服务器。

Google Cloud 的 Agent for SAP 的代理设置包含在 net.properties 文件中:

/usr/sap/SID/SYS/global/hdb/opt/backint/backint-gcs/jre/conf/net.properties

绕过代理服务器进行备份和恢复

虽然 Google Cloud 的 Agent for SAP 会默认绕过代理服务器,但您可以通过在 net.properties 文件 (/usr/sap/SID/SYS/global/hdb/opt/backint/backint-gcs/jre/conf/net.properties) 的 http.nonProxyHosts 参数中指定所需的 Google Cloud 域名和 IP 地址来明确设置绕过。例如:

http.nonProxyHosts=localhost|127.*|[::1]|*.googleapis.com|169.254.169.254|metadata.google.internal

使用代理服务器进行备份和恢复

如需将 Google Cloud 的 Agent for SAP 配置为通过代理服务器发送备份,请在 net.properties 文件 (/usr/sap/SID/SYS/global/hdb/opt/backint/backint-gcs/jre/conf/net.properties) 中指定代理主机和端口号参数。

如需查询 Compute Engine 虚拟机实例元数据,由于 Google Cloud 的 Agent for SAP 无法使用代理,因此您必须在 http.nonProxyHosts 参数中指定实例元数据的域名和 IP 地址。

以下示例显示了 net.properties 文件中 Google Cloud 的 Agent for SAP 的有效代理配置:

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

微调性能

备份和恢复 SAP HANA 数据库的性能取决于数据库总大小以及 SAP HANA 主机可用的资源。您可以使用 SAP HANA 和 Google Cloud 的 Agent for SAP 中提供的以下配置选项来提高性能:

  • 使用 SAP HANA 参数 parallel_data_backup_backint_channels 启用多流处理。此外,使用 SAP HANA 参数 data_backup_buffer_size 指定 I/O 缓冲区的大小。如需了解详情,请参阅多流处理数据备份
  • 通过在 Backint 配置文件 PARAMETERS.json 中为 parallel_streams 参数指定值来启用并行上传。此配置可以显著提高将 SAP HANA 日志备份发送到 Cloud Storage 的性能。如需了解详情,请参阅并行上传
  • 如果您需要压缩备份,请使用 SAP HANA 的内置压缩,这是推荐的压缩选项。如需了解详情,请参阅备份的压缩选项
  • 优化与 SAP HANA 日志备份相关的配置,如 SAP HANA 文档查找最佳日志备份配置中所述。请参阅适用于您的 SAP HANA 版本的 SAP HANA 管理指南。
  • 如果您的 SAP HANA 系统在 Compute Engine 虚拟机实例上运行,请确保它使用的是经过 SAP 认证的永久性磁盘卷或 Hyperdisk 卷。使用任何其他磁盘类型可能会对备份性能产生负面影响,尤其是对于 SAP HANA 数据卷而言。如需了解经过认证的磁盘类型,请参阅支持的磁盘类型

自行诊断

为让您可以测试网络连接和对 Cloud Storage 存储桶的访问,从 3.0 版开始,Google Cloud 的 Agent for SAP 会添加一个用于执行自行诊断的工具。

运行此工具时,它会在文件系统上创建多个临时文件。这些文件随后会上传到您的 Cloud Storage 存储桶,然后进行恢复、验证,最后被删除。此工具会输出 API 访问权限的任何问题。您还可以通过启用 compress 参数并为 parallel_streamsthreads 等参数指定不同的值来测试备份性能。

如需了解如何为 Google Cloud 的 Agent for SAP 执行自行诊断,请参阅验证备份和恢复

日志记录

除了 SAP HANA 在 backup.log 中保留的日志外,Google Cloud 的 Agent for SAP 的 Backint 功能还会将操作和通信错误事件写入以下目录中的日志文件:/usr/sap/SID/SYS/global/hdb/opt/backint/backint-gcs/logs

这些日志也可以在 Google Cloud 的 Agent for SAP(位于目录 /var/log/google-cloud-sap-agent/ 中)的主日志文件中找到。

当日志文件大小达到 25 MB 时,Google Cloud 的 Agent for SAP 会轮替日志文件。

默认情况下,Google Cloud 的 Agent for SAP 会将 Backint 相关日志文件发送到 Cloud Logging。要停用此功能,您可以为 PARAMETERS.json 文件中的 log_to_cloud 参数设置值 false

在 SAP HANA 部署中使用 Backint

以下部分提供了在各场景中将 Google Cloud 的 Agent for SAP 的 Backint 功能与 SAP HANA 配合使用的规划信息。

在高可用性部署中使用 Backint

在 SAP HANA 高可用性 (HA) 集群中,您需要在集群中的每个节点上安装 Google Cloud 的 Agent for SAP,并启用 Backint 功能。

为高可用性集群中的每个 SAP HANA 实例使用相同的 Backint 配置和相同的 Cloud Storage 存储桶规范。您可以使用相同的存储桶规范,因为在正常操作期间,只有高可用性配置中的活跃 SAP HANA 实例会将备份写入 Cloud Storage,并且辅助系统处于复制模式。这适用于 SAP HANA 数据卷、SAP HANA 日志卷和 SAP HANA 备份目录的备份。此外,Pappemaker 等应用聚类软件会阻止脑裂情况,即集群中的多个 SAP HANA 实例认为它是主实例。

在维护活动期间,当停用聚类时,如果备用数据库已从复制中移除并从中恢复,则您需要确保仅在主数据库上触发备份。您可以对此使用以下选项:

  • PARAMETERS.json 文件中,更新 bucket 参数以指向其他 Cloud Storage 存储桶。
  • 破坏 /usr/sap/SID/SYS/global/hdb/opt/hdbbackint 的符号链接,导致向 Cloud Storage 发送备份失败。如果您计划将新数据库重新配置为备用数据库,则此选项在短期内会更有用。

由于 Google Cloud 的 Agent for SAP 不知道哪个 SAP HANA 实例是活跃实例,并且由于代理没有安排或触发备份的机制,因此您需要使用 SAP 机制(例如 SAP ABAP 事务 DB13)来管理备份的安排和触发器。SAP ABAP 应用通过虚拟 IP 连接到高可用性集群,因此备份触发器始终路由到活跃的 SAP HANA 实例。

如果备份触发器在每个服务器本地定义(例如本地操作系统脚本),并且主要系统和辅助系统都认为它们是活跃系统,则它们可能尝试将备份写入 Cloud Storage 存储桶。

如果不管理这些情况,您可能会在将备份写入 Cloud Storage 时在高可用性集群中观察到多个 SAP HANA 实例,这可能会覆盖备份,甚至删除备份。

在灾难恢复场景中使用 Backint

在灾难恢复 (DR) 配置中,另一个 Google Cloud 区域中的 SAP HANA 的恢复实例使用异步 SAP HANA 系统复制保持同步时,请使用不同的 Cloud Storage 存储桶进行备份和恢复操作。如需进行此项配置,请对 PARAMETERS.json 文件中的 bucketrecovery_bucket 参数指定存储桶名称。

虽然灾难恢复系统通常处于复制模式,因此无法运行备份本身,但在常规灾难恢复测试期间,恢复实例已联机并可能触发备份。如果发生这种情况,并且恢复系统不会使用其他 Cloud Storage 存储桶,则备份可能会覆盖主数据库中的数据。

对于需要从备份恢复到灾难恢复区域的实际灾难,您可以更新 Backint 功能配置以引用主要高可用性系统使用的多区域 Cloud Storage 存储桶。

在横向扩容系统中使用 Backint

在 SAP HANA 横向扩容系统中,您需要在系统中的每个节点上安装 Google Cloud 的 Agent for SAP。

如需简化对 PARAMETERS.json 文件的管理,并且如果您使用的是代理的服务账号密钥,则可以将这些文件置于共享 NFS 目录中。

如需了解 SAP 提供的关于 SAP HANA 文件系统布局的建议,请参阅适用于您的 SAP HANA 版本的 SAP HANA 服务器安装和更新指南中的推荐文件系统布局