使用磁盘快照为 SAP HANA 执行备份和恢复

本规划指南介绍了 Google Cloud 的 Agent for SAP 的磁盘快照功能。如需了解其他功能,请参阅 Google Cloud 的 Agent for SAP 规划指南

借助磁盘快照功能,您可以为 Compute Engine 实例上运行的 SAP HANA 纵向扩容系统执行备份和恢复操作。

预览版:如需在 /hana/data 卷托管在多个磁盘上的 SAP HANA 系统中使用此功能,请与客户服务团队联系。如需了解如何与 Customer Care 团队联系,请参阅获取 Google Cloud 上的 SAP 支持

此功能与 SAP HANA 的数据快照功能集成,这可让您使用托管 /hana/data 卷的磁盘的标准或归档快照来备份和恢复 SAP HANA 数据库。

如需了解如何使用代理的这项功能备份和恢复 SAP HANA,请参阅使用磁盘快照备份和恢复 SAP HANA

每月费用估算

您需要为创建的标准快照付费。如需了解价格信息,请参阅磁盘快照

如需估算使用磁盘快照作为 SAP HANA 数据卷备份的每月费用,您可以使用 Google Cloud 价格计算器。以下信息可帮助您更好地估算费用:

  • 初始磁盘快照的估算完整大小。
  • 每个后续磁盘快照的估算增量大小。
  • 快照频率。例如,如果您每天创建一组快照,则快照频率为 24 小时。
  • 快照保留时间。
  • 快照存储冗余:单区域或多区域。
  • 估算的区域内和区域间通过网络的数据传输量。例如,如果您创建或恢复存储在与来源磁盘不同的位置的标准快照组,可能会产生网络费用。

限制

使用 Google Cloud 的 Agent for SAP 的磁盘快照功能备份和恢复 SAP HANA 时,存在以下限制:

  • 您不能将代理的磁盘快照功能用于 SAP HANA 横向扩容部署。如需了解详情,请参阅在横向扩容部署中使用快照
  • 对于 /hana/data 卷,您必须确保以下各项:
    • 该卷托管在一个或多个基于 SSD 的 Persistent Disk 或 Hyperdisk 卷上。这些磁盘不得托管任何其他 SAP HANA 卷。如 SAP 说明 2039883 - 常见问题解答:SAP HANA 数据库和数据快照(存储快照)中所述,如需能够恢复 SAP HANA 数据库,存储快照不得包含该数据库的日志区域。
    • 该卷映射到逻辑卷。这样,代理便可在基于磁盘快照的备份或恢复操作期间正确处理装载点。
    • 如果您使用多个磁盘来托管 /hana/data 卷,则只有在底层磁盘是 Hyperdisk 卷的情况下,您才能使用该代理的此功能。
  • 如果您已使用 Terraform 等基础设施即代码 (IaC) 工具部署了 SAP HANA 系统,则代理可以创建基于快照的备份,但无法执行恢复操作。如需了解详情,请参阅将快照与基于 IaC 工具的部署搭配使用
  • 您必须使用托管 SAP HANA 数据库的 Compute Engine 实例上运行的代理实例来执行备份和恢复操作。您不能使用在其他 Compute Engine 实例上运行的代理实例。
  • 如需备份和恢复 SAP HANA 数据库,您必须通过提供根访问权限或使用适当的 sudo 组来向某些操作系统命令授予 sudo 访问权限。如需了解详情,请参阅设置权限

如需了解 Compute Engine 磁盘快照的常规限制,请参阅限制

所需权限

如需允许 Google Cloud 的 Agent for SAP 使用磁盘快照备份和恢复 SAP HANA 数据库,您必须为以下各项设置权限:

  • 运行 SAP HANA 系统的 Google Cloud 项目。
  • 在操作系统中运行代理命令的用户,可以是 SAP HANA 操作系统用户,也可以是您自己的用户。
  • 代理使用的 SAP HANA 数据库用户。

如需了解您必须授予的权限,请参阅设置权限

创建基于磁盘快照的备份

如需使用 Google Cloud 的 Agent for SAP 为 SAP HANA 创建基于磁盘快照的备份,请运行该代理的 hanadiskbackup 命令。如需了解如何执行此操作,请参阅使用磁盘快照备份和恢复 SAP HANA

单磁盘

如果您的 /hana/data 卷托管在一块磁盘上,则下图展示了代理为 SAP HANA 数据库创建基于磁盘快照的备份时执行的步骤:

使用 Google Cloud 的 Agent for SAP 为 SAP HANA 执行基于磁盘快照的备份的流程图

代理的磁盘快照功能如何为 SAP HANA 数据库创建备份

运行 hanadiskbackup 命令后,代理会执行以下操作:

  1. 验证提供给 hanadiskbackup 命令的所有输入参数。
  2. 使用提供给 hanadiskbackup 命令的输入连接到 SAP HANA 数据库。
  3. 验证是否没有现有快照。

    如果托管 /hana/data 卷的磁盘存在任何现有快照,并且您尚未使用 hanadiskbackup 命令指定 abandon-prepared=TRUE,则代理会退出该过程,并且不会创建备份。然后,您需要手动检查并重新运行 hanadiskbackup 命令。

  4. 通知 SAP HANA 快照创建已开始。
  5. 创建一个托管 /hana/data 目录的 Persistent Disk 或 Hyperdisk 卷的快照。
  6. 通知 SAP HANA 快照创建成功。

多磁盘

如果您的 /hana/data 卷托管在多个磁盘上,则下图展示了代理为 SAP HANA 数据库创建基于磁盘快照的备份时执行的步骤:

使用 Google Cloud 的 Agent for SAP 为 SAP HANA 执行基于磁盘快照的备份的流程图

代理的磁盘快照功能如何为 SAP HANA 数据库创建备份

运行 hanadiskbackup 命令后,代理会执行以下操作:

  1. 验证提供给 hanadiskbackup 命令的所有输入参数。
  2. 使用提供给 hanadiskbackup 命令的输入连接到 SAP HANA 数据库。
  3. 查找托管 /hana/data 卷的磁盘。
  4. 验证托管 /hana/data 卷的所有磁盘是否都属于同一一致性组 (CG)。
  5. 验证 SAP HANA 数据库没有可用的基于快照的现有备份。

    如果您的数据库存在基于快照的备份,并且您尚未使用 hanadiskbackup 命令指定 abandon-prepared=TRUE,则代理会退出该过程,并且不会创建备份。然后,您需要手动检查并重新运行 hanadiskbackup 命令。

  6. 通知 SAP HANA 快照创建已开始。
  7. 使用 SAP HANA HDBSQL 创建 SAP HANA 数据库的快照。
  8. 为托管 /hana/data 卷的磁盘创建一个即时快照组。
  9. 将所有即时快照转换为标准快照或归档快照。

    默认情况下,代理会创建标准快照。您可以选择使用 hanadiskbackup 命令指定 snapshot-type=ARCHIVE 来创建归档快照。

  10. 删除即时快照组。
  11. 通知 SAP HANA 基于快照的备份创建成功。

如果代理未能完成此备份过程的任何步骤,则会将快照创建标记为 UNSUCCESSFUL 并退出该过程。然后,您需要手动检查并重新运行 hanadiskbackup 命令。如需了解代理退出备份过程的原因,您可以查看 /var/log/google-cloud-sap-agent/hanadiskbackup.log 文件中的条目。

创建增量备份

运行 hanadiskbackup 命令时,代理会为托管 /hana/data 卷的磁盘创建快照

磁盘快照的优点在于它们是递增的,其中后续的每个备份都仅存储增量块更改,而不会创建全新的备份。这意味着,在使用 Google Cloud 的 Agent for SAP 为 SAP HANA 数据库创建第一个基于快照的备份后,默认情况下,您创建的所有后续基于快照的备份都是增量备份。您无需执行任何额外操作即可创建增量备份。

如需了解详情,请参阅增量标准快照的工作原理

加密磁盘快照

默认情况下,Google Cloud 中的数据使用 AES-256 进行静态加密。这适用于存储在磁盘和磁盘快照中的数据。或者,您也可以使用客户管理的加密密钥 (CMEK)客户提供的加密密钥 (CSEK) 来加密快照。

您还可以通过启用 SAP HANA 为 /hana/data 卷提供的加密来额外增添一重安全保护措施。如需了解此选项,请参阅启用数据和日志卷加密

使用磁盘快照恢复 SAP HANA 数据

如需使用基于磁盘快照的备份恢复 SAP HANA 数据库,请运行代理的 hanadiskrestore 命令。如需了解具体方法,请参阅使用磁盘快照备份和恢复 SAP HANA

单磁盘

如果您的 /hana/data 卷托管在一块磁盘上,则以下流程图展示了如何使用代理的磁盘快照功能来恢复 SAP HANA 数据库:

使用 Google Cloud 的 Agent for SAP 为 SAP HANA 执行基于磁盘快照的恢复的流程图

如何使用代理的磁盘快照功能恢复 SAP HANA 数据库

如需使用磁盘快照恢复 SAP HANA 数据库,请执行以下操作:

  1. 通过运行代理的 hanadiskrestore 命令来恢复托管 /hana/data 卷的磁盘。如需查看相关说明,请参阅使用磁盘快照为 SAP HANA 执行备份和恢复

    下面是代理使用磁盘快照恢复 SAP HANA 数据卷时执行的简要过程。上述流程图展示了这些步骤。

    1. 验证提供给 hanadiskrestore 命令的所有输入参数。
    2. 停止 SAP HANA。
    3. 卸载 /hana/data 卷。
    4. 将托管 /hana/data 卷的磁盘与主机计算实例分离。
    5. 根据磁盘快照为 /hana/data 卷创建新磁盘。
    6. 将新磁盘挂接到主机计算实例。
    7. 重新扫描 SAP HANA 的卷组。
  2. 手动将 SAP HANA 数据库恢复到快照时间或特定时间点,如以下各小节所述。

多磁盘

如果您的 /hana/data 卷托管在多个磁盘上,则以下流程图展示了如何使用代理的磁盘快照功能来恢复 SAP HANA 数据库:

使用 Google Cloud 的 Agent for SAP 为 SAP HANA 执行基于磁盘快照的恢复的流程图

如何使用代理的磁盘快照功能恢复 SAP HANA 数据库

如需使用磁盘快照恢复 SAP HANA 数据库,请执行以下操作:

  1. 通过运行代理的 hanadiskrestore 命令来恢复托管 /hana/data 卷的磁盘。如需了解如何执行此操作,请参阅使用磁盘快照为 SAP HANA 执行备份和恢复

    下面是代理使用磁盘快照恢复 SAP HANA 数据卷时执行的简要过程。上述流程图展示了这些步骤。

    1. 验证提供给 hanadiskrestore 命令的所有输入参数。
    2. 停止 SAP HANA。
    3. 卸载 /hana/data 卷。
    4. 将托管 /hana/data 卷的磁盘与主机 Compute Engine 实例分离。
    5. 从相应的磁盘一致性组中移除托管 /hana/data 卷的磁盘。
    6. 过滤与输入一致性组相对应的快照。
    7. 使用源磁盘快照为 /hana/data 卷创建新磁盘。
    8. 将新磁盘挂接到主机 Compute Engine 实例。
    9. 将新磁盘添加到磁盘一致性组。
    10. 重新扫描 SAP HANA 的卷组。
  2. 手动将 SAP HANA 数据库恢复到快照时间或特定时间点,如以下各小节所述。

如果代理未能完成此过程中的任何步骤,则会退出该过程。然后,您需要对 hanadiskrestore 命令进行手动检查、必要时排查问题,再进行重试。如需了解代理退出数据库恢复过程的原因,您可以查看 /var/log/google-cloud-sap-agent/hanadiskrestore.log 文件中的条目。

将 SAP HANA 恢复到特定时间点

如需将 SAP HANA 数据库恢复到特定时间点,除了托管 /hana/data 卷的磁盘快照之外,您还需要之前为数据库创建的必要的 SAP HANA 增量备份和日志备份。

您可以使用代理的 Backint 功能或 SAP HANA 数据库的文件系统备份来创建 SAP HANA 日志备份。

执行恢复时,如果您指定未来时间戳,则 SAP HANA 数据库会恢复到最新状态。

从外部来源恢复 SAP HANA

您可以使用为一个 SAP HANA 系统创建的基于磁盘快照的备份来恢复另一个 SAP HANA 系统。您还可以使用此功能在不同环境之间迁移系统,例如从测试环境迁移到质量保证环境。

如需了解如何执行此操作,请参阅执行系统复制或系统刷新

在 SAP HANA 部署中使用磁盘快照

以下部分提供了在具体场景下使用 Google Cloud 的 Agent for SAP 的磁盘快照功能来备份和恢复 SAP HANA 纵向扩容系统的规划信息:

在高可用性部署中使用快照

在 Google Cloud 上的高可用性 (HA) 集群内运行的 SAP HANA 纵向扩容系统中,您需要在集群的主节点和备用节点上安装 Google Cloud 的 Agent for SAP。

如需为 SAP HANA 高可用性系统创建基于磁盘快照的备份,您只需针对主节点中的 /hana/data 卷运行 hanadiskbackup 命令。如果发生故障切换事件,则需要在新的主节点上运行 hanadiskbackup 命令。此外,运行该命令时,您必须指定主节点主机的 SAP HANA 主机名或 IP 地址。请勿指定集群中使用的 SAP HANA 虚拟 IP (VIP)。

执行恢复操作时,您可以使用基于快照的备份来恢复托管主节点或备用节点中的 /hana/data 卷的磁盘。您可以将 SAP HANA 数据库恢复到磁盘快照的创建时间或任何特定时间点。

在灾难恢复部署中使用快照

对于 Google Cloud 上的灾难恢复 (DR) 部署中的 SAP HANA 纵向扩容系统,您需要在主要主机和备用主机上均安装 Google Cloud 的 Agent for SAP。

如需为 SAP HANA 高可用性系统创建基于磁盘快照的备份,您只需针对主数据库实例中的 /hana/data 卷运行 hanadiskbackup 命令。如果您中断 SAP HANA 系统复制并升级备用数据库实例,则需要在新的主实例上运行 hanadiskbackup 命令。

对于灾难恢复部署,您需要对主数据库实例执行恢复操作。您可以将 SAP HANA 数据库恢复到磁盘快照的创建时间或任何特定时间点。

在横向扩容部署中使用快照

Google Cloud 的 Agent for SAP 的磁盘快照功能与 SAP HANA 横向扩容部署不兼容。

但是,如需在横向扩容部署中备份和恢复 SAP HANA 数据库,您可以使用以下选项:

在基于 IaC 工具的部署中使用快照

Google Cloud 的 Agent for SAP 的磁盘快照功能与使用 Terraform 等基础设施即代码 (IaC) 工具部署的 SAP HANA 系统部分兼容。

虽然代理可以为这些系统创建基于快照的备份,但代理无法用于执行恢复操作。这是因为使用代理执行基于快照的恢复包括为 /hana/data 卷重新创建磁盘,这可能会导致 IaC 执行状态管理的方式发生冲突或出现问题。

例如,使用代理执行恢复后,每当 IaC 工具检查托管 /hana/data 卷的磁盘状态时,该工具都会尝试通过重新附加之前的磁盘或删除新磁盘并重新创建之前的磁盘,从而还原到系统定义的配置。上述任何操作都可能会严重影响 SAP HANA 数据库,在一定程度上造成其无法使用。

但是,大多数 IaC 工具提供的工作流可让您修改系统的状态,以与托管式基础设施的更改保持同步。您可以按照以下简要过程恢复使用 IaC 工具部署的 SAP HANA 系统:

  1. 停止 SAP HANA 数据库。如需查看相关说明,请参阅 SAP 文档启动和停止 SAP HANA 系统

  2. 停止托管 SAP HANA 系统的 Compute Engine 实例。在高可用性或灾难恢复部署中,停止所有计算实例。如需了解如何停止计算实例,请参阅停止虚拟机

  3. 在包含 SAP HANA 系统定义的 IaC 配置文件中,修改与 /hana/data 卷对应的磁盘定义,以便可以使用现有磁盘快照重新创建这些磁盘。对于高可用性或灾难恢复部署,请对 SAP HANA 主节点执行此操作。

    例如,如果您使用 Google Cloud 提供的 Terraform 配置之一部署了 SAP HANA 系统,请在 ./terraform/modules/sap_hana/main.tf 文件中添加 snapshot 参数,如下所示:

    # Split data/log/sap disks
    resource "google_compute_disk" "sap_hana_data_disks" {
     count   = var.use_single_shared_data_log_disk ? 0 : var.sap_hana_scaleout_nodes + 1
     name    = format("${var.instance_name}-data%05d", count.index + 1)
     type    = local.final_data_disk_type
     zone    = var.zone
     size    = local.data_pd_size
     snapshot = "hana-SID-snapshot-YYYYMMDD-HHMMSS"
     project = var.project_id
     provisioned_iops = local.final_data_iops
    }
    
  4. 应用修改后的配置。例如,如果您使用的是 Terraform,请运行以下命令:

    terraform validate
    terraform apply
    
  5. 恢复 SAP HANA 数据库。如需查看相关说明,请参阅使用磁盘快照恢复数据库

启用日志记录

在执行基于磁盘快照的备份和恢复操作时,Google Cloud 的 Agent for SAP 会分别写入以下日志文件:hanadiskbackup.loghanadiskrestore.log

这些日志文件位于主机 Compute Engine 实例上的 /var/log/google-cloud-sap-agent/ 目录中。

默认情况下,在备份和恢复操作期间系统会启用日志记录。默认日志级别为 info。运行 hanadiskbackuphanadiskrestore 命令时,您可以通过指定 -loglevel 参数来提高或降低日志级别。

启用监控

默认情况下,每次您运行 hanadiskbackup 命令时,Google Cloud 的 Agent for SAP 都会将以下指标发送到 Cloud Monitoring。这由 -send-metrics-to-monitoring 参数控制,其默认值为 TRUE

您可以根据这些指标配置提醒,从而为 SAP HANA 数据库设置监控。您还可以在信息中心内查看指标。

下表介绍了代理在基于快照的备份和恢复操作期间发出的指标:

指标 说明
workload.googleapis.com/sap/agent/hanadiskbackup/status

Boolean

指示基于磁盘快照的备份操作是否成功。值 true 表示成功,false 表示失败。

workload.googleapis.com/sap/agent/hanadiskbackup/totaltime

Int

指示备份操作创建磁盘快照所需的时间(以秒为单位),包括将磁盘快照上传到指定 Cloud Storage 存储桶的时间。

workload.googleapis.com/sap/agent/hanadiskbackup/dbfreezetime

Int

指示 SAP HANA 文件系统在基于磁盘快照的备份操作期间被冻结的时间(以秒为单位)。

最佳做法

使用磁盘快照备份和恢复 SAP HANA 数据库时,我们建议您遵循以下最佳实践:

  • 为数据库准备替代恢复选项。我们强烈建议您设计备份和恢复策略,使其结合不同的方法。例如,您可以将代理的磁盘快照功能与使用代理的 Backint 功能或使用文件系统备份创建的 SAP HANA 数据库的完整备份结合使用。
  • /hana/data 卷和磁盘快照执行一致性检查。由于在基于快照的备份操作期间系统不会执行块级完整性检查,因此我们建议您定期使用 hdbpersdiag 工具执行以下一致性检查:

    • /hana/data 卷执行页面一致性检查。此活动需要停机,因为如果存在使用数据卷的进程(例如 SAP HANA 索引服务器),该工具将无法检查特定数据卷的数据页面。
    • 在 SAP HANA 主机以外的 Compute Engine 实例上,根据使用代理的 hanadiskbackup 命令创建的快照部署临时磁盘,然后对这些磁盘执行一致性检查。如需了解如何执行此操作,请参阅验证快照一致性

    如需了解 hdbpersdiag 工具,请参阅 SAP 文档执行一致性检查

  • 对磁盘快照执行维护活动。由于 Google Cloud 的 Agent for SAP 不会对磁盘快照执行任何维护活动,因此我们建议您定期查看磁盘快照并执行删除旧快照等活动。

    如需详细了解与磁盘快照相关的最佳实践,请参阅 Compute Engine 磁盘快照的最佳实践