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

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

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

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

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

每月费用估算

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

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

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

限制

使用 Google Cloud 的 Agent for SAP 时,以下限制适用于基于快照的备份和恢复:

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

所需权限

如需允许 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

以下流程图显示了代理执行的创建备份的步骤:

使用 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 目录的永久性磁盘或 Hyperdisk 卷的快照。
  6. 通知 SAP HANA 快照创建成功。

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

创建增量备份

运行 hanadiskbackup 命令时,代理会为指定的磁盘创建标准快照

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

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

加密磁盘快照

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

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

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

如需使用基于磁盘快照的备份恢复 SAP HANA 数据库,请运行 hanadiskrestore 命令。如需查看相关说明,请参阅使用磁盘快照备份和恢复 SAP HANA

以下流程图展示了如何使用代理的磁盘快照功能来恢复 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 数据库恢复到快照时间或特定时间点,如以下各小节所述。

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

恢复到特定时间点

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

您可以使用代理的 Backint 功能或 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

这些日志文件位于主机上的 /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 主机以外的虚拟机上,根据使用代理的 hanadiskbackup 命令创建的快照部署临时磁盘,然后对该磁盘执行一致性检查。如需了解如何执行此操作,请参阅验证快照一致性

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

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

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