Compartilhar via

使用 Azure portal 还原Azure VM 上的SAP HANA数据库

本文介绍如何使用Azure portal还原Azure virtual machines(VM)上运行SAP HANA数据库,以及Azure Backup服务已备份到恢复服务保管库。 Azure Backup允许使用还原的数据创建开发和测试方案的副本,或返回到以前的状态。 还可以使用 Azure CLI 恢复数据库。

Azure Backup现在支持使用 Azure portal 备份和还原SAP HANA系统复制 (HSR) 实例。 还可以使用 Azure CLI 执行还原作。

注释

  • 使用 HSR 还原 HANA 数据库的过程与不使用 HSR 还原 HANA 数据库的过程相同。 根据 SAP 公告,可以使用 HSR 模式将数据库还原为独立数据库。 如果目标系统已启用 HSR 模式,请先禁用此模式,然后再还原数据库。 但是,如果要还原为文件,则不需要禁用 HSR 模式(中断 HSR)。
  • HSR 目前不支持原始位置恢复 (OLR)。 或者,请选择备用位置还原,然后从列表中选择源 VM 作为主机
  • 不支持还原到 HSR 实例。 但是,支持仅还原到 HANA 实例。

若要了解支持的SAP HANA数据库备份和还原方案、区域可用性和限制,请参阅 support 矩阵。 有关常见问题,请参阅 常见问题

还原到某个时间点或某个恢复点

Azure Backup还原Azure VM 上运行的SAP HANA数据库。 它可以:

  • 使用日志备份将其还原到特定的日期或时间(精确到秒)。 Azure Backup会自动确定根据所选时间还原所需的相应完整备份、差异备份和日志备份链。 了解详细信息

  • 将其还原到特定的完整备份或差异备份,以恢复到特定的恢复点。 了解详细信息

先决条件

在开始还原数据库之前,请注意以下事项:

  • 只能将数据库还原到同一区域中的SAP HANA实例。

  • 目标实例必须注册到与源实例相同的保管库中。 详细了解如何备份SAP HANA数据库

  • Azure Backup无法识别同一 VM 上的两个不同的SAP HANA实例。 因此,无法将数据从同一 VM 上的一个实例还原到另一个实例。

  • 若要确保目标SAP HANA实例已准备好还原,请检查其 Backup 就绪状态状态:

    1. 在Azure portal中,转到 Backup center,然后选择 Backup

      显示如何检查目标 SAP HANA 实例是否已准备好进行还原的截图。

    2. 开始:配置备份窗格中,对于数据源类型,选择Azure VM 中的 SAP HANA,选择注册有 SAP HANA 实例的保管库,然后选择继续

      显示如何在 Azure VM 中选择 SAP HANA 作为数据源类型的截图。

    3. 在“发现 VM 中的 DB”下,选择“查看详细信息” 。

      显示在何处查看数据库详细信息的屏幕截图。

    4. 查看目标 VM 的备份就绪情况。

      显示在何处检查目标 VM 的备份就绪状态的屏幕截图。

  • 若要详细了解SAP HANA支持的还原类型,请参阅 SAP HANA 注意1642148

还原数据库

若要还原数据库,需要以下权限:

  • 备份操作员:提供您执行还原操作的保管库权限。
  • Contributor (write):为备份的源虚拟机提供访问权限。
  • 贡献者(写入):为目标 VM 提供访问权限。
    • 如果您还原到同一台虚拟机,那么该虚拟机即为源虚拟机。
    • 若要还原到替代位置,这就是新的目标 VM。
  1. 在Azure portal中,转到 Backup center,然后选择 Restore

    截图,显示开始还原 SAP HANA 数据库的位置。

  2. 在 Azure VM 中选择 SAP HANA 作为数据源类型,选择要还原的数据库,然后选择 Continue

    显示在何处还原备份项的屏幕截图。

  3. 在“还原配置”下,指定要在何处或如何还原数据:

    • 备用位置:将数据库还原到备用位置,同时保留原始源数据库。
    • Overwrite DB:将数据还原到与原始源相同的SAP HANA实例。 此选项会覆盖原始数据库。

    显示在何处还原配置的屏幕截图。

注释

在还原期间(仅适用于虚拟 IP/负载均衡器前端 IP 方案),如果您在按照 SAP 建议将 HSR 模式更改为独立或在还原前中断 HSR 后尝试将备份还原到目标节点,请确保负载均衡器指向目标节点。

方案示例

  • 如果在预注册脚本中使用 hdbuserstore set SYSTEMKEY localhost,则还原期间不会出现问题。
  • 如果在预注册脚本中设置了 *hdbuserstore SYSTEMKEY <load balancer host/ip>,并且你尝试将备份还原到目标节点,请确保负载均衡器指向需要还原的目标节点。

还原到备用位置

  1. “还原” 窗格的 “还原位置和方法”下,选择 “备用路径”

    显示如何将数据库还原到备用位置的屏幕截图。

  2. 选择要还原数据库的SAP HANA主机名和实例名称。

  3. 通过确保目标 SAP HANA 实例的备份已就绪,检查该实例是否已准备好进行还原。 有关详细信息,请参阅先决条件

  4. 在“还原数据库名称”框中,输入目标数据库的名称。

    注释

    单一数据库容器(SDC)还原必须遵循这些检查。

  5. 如果适用,请勾选复选框“如果在用户选择的 HANA 实例上已存在同名数据库则覆盖”。

  6. 选择还原点中选择日志(时间点)还原到特定的时间点。 或者选择“完整和差异”以还原到特定的恢复点

还原为文件

注释

“Restore as files”不适用于通用互联网文件系统 (CIFS) 共享,但适用于网络文件系统 (NFS)。

若要将备份数据作为文件而不是数据库还原,请选择“作为文件还原”。 将文件转储到指定路径后,可以将这些文件作为数据库还原到任何SAP HANA计算机。 由于可以将这些文件移动到任何计算机,你现在可以跨订阅和区域进行数据还原。

  1. 还原 窗格的 “在哪里及如何还原?” 下,选择 还原为文件

  2. 选择要将备份文件还原到的主机或 HANA 服务器名称。

  3. 在“服务器上的目标路径”框中,输入在上一步骤中选择的服务器上的文件夹路径。 此位置是服务要将全部所需备份文件转储到的位置。

    转储的文件包括:

    • 数据库备份文件
    • JSON 元数据文件(适用于所涉及的每个备份文件)

    通常,网络共享路径或指定为目标路径的已挂载 Azure 文件共享路径,使网络中的其他计算机或同样挂载了该 Azure 文件共享的计算机能够更轻松地访问这些文件。

    注释

    若要还原目标注册 VM 上装载的Azure文件共享上的数据库备份文件,请确保根帐户对共享具有读/写权限。

    显示如何选择目标路径的屏幕截图。

  4. 选择所有备份文件和文件夹将被还原到的还原点

    显示在何处选择还原点的屏幕截图。

  5. 与所选还原点关联的所有备份文件将转储到目标路径中。

  6. 根据您选择的还原点类型(“时间恢复点”或“完整备份和差异备份”),您将在目标路径中看到创建的一个或多个文件夹。 文件夹 Data_<还原日期和时间> 包含完整备份,文件夹 Log 包含日志备份和其他备份(例如差异备份和增量备份)。

    注释

    如果选择了“还原到某个时间点”,则已转储到目标 VM 的日志文件有时可能会包含超过选择用于还原的时间点的日志。 Azure Backup这样做可确保所有 HANA 服务的日志备份都可用于一致且成功还原到所选的时间点。

  7. 将还原的文件移动到要将其还原为数据库的SAP HANA服务器,然后执行以下作:

    a。 运行以下命令,对存储备份文件的文件夹或目录设置权限:

    chown -R <SID>adm:sapsys <directory>
    

    b. 以 <SID>adm 身份运行下一组命令:

    su: <sid>adm
    

    选项c. 生成用于还原的目录文件。 从完整备份的 JSON 元数据文件中提取 BackupId,稍后将在还原操作中使用它。 请确保完整备份和日志备份(完整备份恢复时不存在)位于不同的文件夹中,并删除这些文件夹中的 JSON 元数据文件。 运行:

    hdbbackupdiag --generate --dataDir <DataFileDir> --logDirs <LogFilesDir> -d <PathToPlaceCatalogFile>
    
    • <DataFileDir>:包含完整备份的文件夹。
    • <LogFilesDir>:包含日志备份、差异备份和增量备份的文件夹。 对于完整备份还原,由于尚未创建日志文件夹,因此请添加一个空目录。
    • <PathToPlaceCatalogFile>:必须将已生成的目录文件放入到的文件夹。

    d。 可以通过 HANA Studio 使用新生成的目录文件还原,或者使用此新生成的目录运行 SAP HANA HDBSQL 工具还原查询。 下面列出了 HDBSQL 查询:

    • 若要打开 HDBSQL 提示符,请运行以下命令:

      hdbsql -U AZUREWLBACKUPHANAUSER -d systemDB
      
    • 要还原到某个时间点:

      如果要创建新的已还原数据库,请运行 HDBSQL 命令,以创建新的数据库 <DatabaseName>,然后使用命令 ALTER SYSTEM STOP DATABASE <db> IMMEDIATE 停止用于还原的数据库。 但是,如果只是还原现有数据库,请运行 HDBSQL 命令来停止数据库。

      然后运行以下命令以还原数据库:

      RECOVER DATABASE FOR <db> UNTIL TIMESTAMP <t1> USING CATALOG PATH <path> USING LOG PATH <path> USING DATA PATH <path> USING BACKUP_ID <bkId> CHECK ACCESS USING FILE
      
      • <DatabaseName>:新数据库或要还原的现有数据库的名称。
      • <Timestamp>:时间点还原的确切时间戳。
      • <DatabaseName@HostName>:备份用于还原的数据库的名称,以及此数据库所在的主机或SAP HANA服务器名称。 USING SOURCE <DatabaseName@HostName> 选项指定用于还原的数据备份来自一个与目标 SAP HANA 计算机的 SID 或名称不同的数据库。 无需为在创建备份的同一 HANA 服务器上执行的还原指定此参数。
      • <PathToGeneratedCatalogInStep3>:在“步骤 c”中生成的目录文件的路径。
      • <DataFileDir>:包含完整备份的文件夹。
      • <LogFilesDir>:包含日志备份、差异备份和增量备份(如果有)的文件夹。
      • <BackupIdFromJsonFile>:在“步骤 c”中提取的 BackupId。
    • 需要还原到特定的完整备份或差异备份时:

      如果要创建新的已还原数据库,请运行 HDBSQL 命令,以创建新的数据库 <DatabaseName>,然后使用命令 ALTER SYSTEM STOP DATABASE <db> IMMEDIATE 停止用于还原的数据库。 但是,如果只是还原现有数据库,请运行 HDBSQL 命令来停止数据库:

      RECOVER DATA FOR <DatabaseName> USING BACKUP_ID <BackupIdFromJsonFile> USING SOURCE '<DatabaseName@HostName>' USING CATALOG PATH ('<PathToGeneratedCatalogInStep3>') USING DATA PATH ('<DataFileDir>')  CLEAR LOG
      
      • <DatabaseName>:新数据库或要还原的现有数据库的名称。
      • <Timestamp>:时间点还原的确切时间戳。
      • <DatabaseName@HostName>:备份用于还原的数据库的名称,以及此数据库所在的主机或SAP HANA服务器名称。 USING SOURCE <DatabaseName@HostName> 选项指定用于还原的数据备份来自一个与目标 SAP HANA 计算机的 SID 或名称不同的数据库。 因此无需为在进行备份的同一 HANA 服务器上执行的还原指定此参数。
      • <PathToGeneratedCatalogInStep3>:在“步骤 c”中生成的目录文件的路径。
      • <DataFileDir>:包含完整备份的文件夹。
      • <LogFilesDir>:包含日志备份、差异备份和增量备份(如果有)的文件夹。
      • <BackupIdFromJsonFile>:在“步骤 c”中提取的 BackupId。
    • 若要通过备份 ID 进行恢复,请执行以下步骤:

      RECOVER DATA FOR <db> USING BACKUP_ID <bkId> USING CATALOG PATH <path> USING LOG PATH <path> USING DATA PATH <path>  CHECK ACCESS USING FILE
      

      例子:

      在同一服务器上SAP HANA系统还原:

      RECOVER DATABASE FOR SYSTEM UNTIL TIMESTAMP '2022-01-12T08:51:54.023' USING CATALOG PATH ('/restore/catalo_gen') USING LOG PATH ('/restore/Log/') USING DATA PATH ('/restore/Data_2022-01-12_08-51-54/') USING BACKUP_ID 1641977514020 CHECK ACCESS USING FILE
      

      在相同服务器上进行SAP HANA租户还原:

      RECOVER DATABASE FOR DHI UNTIL TIMESTAMP '2022-01-12T08:51:54.023' USING CATALOG PATH ('/restore/catalo_gen') USING LOG PATH ('/restore/Log/') USING DATA PATH ('/restore/Data_2022-01-12_08-51-54/') USING BACKUP_ID 1641977514020 CHECK ACCESS USING FILE
      

      SAP HANA不同服务器上的系统还原:

      RECOVER DATABASE FOR SYSTEM UNTIL TIMESTAMP '2022-01-12T08:51:54.023' USING SOURCE <sourceSID> USING CATALOG PATH ('/restore/catalo_gen') USING LOG PATH ('/restore/Log/') USING DATA PATH ('/restore/Data_2022-01-12_08-51-54/') USING BACKUP_ID 1641977514020 CHECK ACCESS USING FILE
      

      SAP HANA不同服务器上的租户还原:

      RECOVER DATABASE FOR DHI UNTIL TIMESTAMP '2022-01-12T08:51:54.023' USING SOURCE <sourceSID> USING CATALOG PATH ('/restore/catalo_gen') USING LOG PATH ('/restore/Log/') USING DATA PATH ('/restore/Data_2022-01-12_08-51-54/') USING BACKUP_ID 1641977514020 CHECK ACCESS USING FILE
      

部分还原为文件

Azure Backup服务决定在以文件形式恢复期间下载的文件链。 但在某些情况下,你可能不想再次下载整个内容。

例如,你实施了每周完整备份、每日差异备份和日志备份的策略,并且已下载特定差异备份的文件。 你发现这不是正确的恢复点,于是决定下载第二天的差异备份。 现在只需要差异文件,因为已经有了初始的完整备份。 通过 Azure Backup 提供的部分还原为文件功能,现在可以从下载链中排除完整备份,并仅下载差异备份。

排除备份文件类型

ExtensionSettingOverrides.json 是一个 JSON(JavaScript 对象表示法)文件,其中包含 Azure Backup 服务 for SQL 的多个设置替代项。 对于“部分还原为文件”的操作,必须添加一个新的 JSON 字段。 此字段包含一个字符串值,该值表示下一个“作为文件还原”操作中应排除哪些恢复点类型。

  1. 在要将文件下载到的目标计算机上,转到“opt/msawb/bin”文件夹。

  2. 创建名为 ExtensionSettingOverrides.JSON 的新 JSON 文件(如果尚不存在)。

  3. 添加以下 JSON 键值对:

    {
    "RecoveryPointsToBeExcludedForRestoreAsFiles": "ExcludeFull"
    }
    
  4. 更改文件的权限和所有权:

    chmod 750 ExtensionSettingsOverrides.json
    chown root:msawb ExtensionSettingsOverrides.json
    
  5. 不需要重新启动任何服务。 Azure Backup 服务将尝试排除掉还原链中的备份类型,本文件中已提及。

RecoveryPointsToBeExcludedForRestoreAsFiles 只接受特定值,这些值表示还原期间要排除的恢复点。 对于SAP HANA,这些值为:

  • ExcludeFull。 如果还原点链中存在其他备份类型(例如差异备份、增量备份和日志备份),将下载它们。
  • ExcludeFullAndDifferential。 如果还原点链中存在其他备份类型(例如增量备份和日志备份),将下载它们。
  • ExcludeFullAndIncremental。 如果还原点链中存在其他备份类型(例如差异备份和日志备份),将下载它们。
  • ExcludeFullAndDifferentialAndIncremental。 如果还原点链中存在其他备份类型(例如日志备份),将下载它们。

还原到特定时间点

如果已选择“日志(时间点)”作为还原类型,请执行以下操作:

  1. 从日志图中选择一个恢复点,然后选择“确定”以选择还原点。

    显示用于选择还原点的日志图表的屏幕截图。

  2. 在“还原”菜单中,选择“还原”启动还原作业。

    显示“还原”菜单和“还原”按钮的屏幕截图。

  3. 在“通知”区域中跟踪还原进度,或者在数据库菜单中选择“还原作业”来跟踪进度。

    显示已成功触发还原的消息的屏幕截图。

还原到特定的恢复点

如果已选择完整和差异作为还原类型,请执行以下操作:

  1. 从列表中选择一个恢复点,然后选择“确定”以选择还原点。

    显示在何处选择特定恢复点的屏幕截图。

  2. 在“还原”菜单中,选择“还原”启动还原作业。

    显示用于选择特定还原点的“还原”菜单的屏幕截图。

  3. 在“通知”区域中跟踪还原进度,或者在数据库菜单中选择“还原作业”来跟踪进度。

    显示已成功触发还原的消息的屏幕截图。

    注释

    在多数据库容器 (MDC) 还原中,在将系统数据库还原到目标实例之后,需要再次运行注册前脚本。 后续的租户数据库还原操作将会成功。 若要了解详细信息,请参阅 多容器数据库还原问题排查

跨区域还原

作为还原选项之一,跨区域还原(CRR)允许您在 Azure 配对区域中还原托管在次要区域的 Azure VM 上的 SAP HANA 数据库。

若要开始使用该功能,请参阅设置跨区域还原

查看次要区域中的备份项

如果启用了 CRR,则可以查看次要区域中的备份项。

  1. 在 Azure 门户中,转到 Recovery Services 保管库,然后选择 备份项
  2. 选择“次要区域”以查看次要区域中的项。

注释

列表中仅显示支持 CRR 功能的备份管理类型。 目前,仅支持将次要区域数据还原到次要区域。

显示次要区域中的备份项的屏幕截图

显示次要区域中的数据库的屏幕截图

在次要区域中还原

次要区域还原用户体验类似于主要区域还原用户体验。 在“还原配置”窗格中配置详细信息时,系统会提示你仅提供次要区域参数。 保管库应存在于次要区域中,SAP HANA服务器应注册到次要区域中的保管库。

显示“在何处以及如何还原?”窗格的屏幕截图。

截图,显示一则通知:“正在触发恢复”。

注释

  • 在触发还原并进入数据传输阶段后,无法取消还原作业。
  • 跨区域执行还原操作所需的角色和访问级别是订阅中的备份操作员角色,以及在源和目标虚拟机上的参与者(写入)访问。 要查看备份作业,订阅中至少需要拥有备份读取者权限。
  • 次要区域中可用备份数据的恢复点目标 (RPO) 为 12 小时。 因此,打开 CRR 时,次要区域的 RPO 为 12 小时 + 日志频率持续时间(可以设置为至少 15 分钟)。

了解跨区域还原的最低角色要求。

监视次要区域还原作业

  1. 在Azure portal中,转到 Backup center,然后选择 Backup Jobs

  2. 若要查看次要区域中的作业,请筛选“操作”以显示“CrossRegionRestore”。

    显示筛选的备份作业的屏幕截图。

跨订阅还原

Azure Backup现在允许您根据以下Azure RBAC要求,从还原点将SAP HANA数据库还原到任何订阅中。 默认情况下,Azure Backup会还原到备份还原点所在的同一订阅中。

通过跨订阅还原 (CSR),如果具有还原权限,您可以灵活地还原到您租户下的任何订阅和任何保管库。 默认情况下,将在所有恢复服务保管库(现有和新创建的保管库)上启用 CSR。

注释

  • 可以通过恢复服务保管库触发跨订阅恢复。
  • CSR 仅支持流式处理/基于 Backint 的备份,不支持基于快照的备份。
  • 不支持将跨区域还原 (CRR) 与 CSR 一起使用。

跨订阅还原到已启用专用终结点的保管库

若要对已启用专用终结点的保管库执行跨订阅还原,请执行以下操作:

  1. 源恢复服务保管库中,转到“网络”选项卡。
  2. 转到 Private access 部分并创建 Private Endpoints
  3. 选择要在其中还原的目标保管库的订阅
  4. Virtual Network 部分中,选择要跨订阅还原的目标 VM 的 VNet
  5. 创建专用终结点并触发还原过程。

Azure RBAC 要求

操作类型 备份操作员 恢复服务保管库 备用操作员
还原数据库或还原为文件 Virtual Machine Contributor 已被备份的源虚拟机 可考虑具有以下权限的自定义角色而不是内置角色:

- Microsoft.Compute/virtualMachines/write
- Microsoft.Compute/virtualMachines/read
Virtual Machine Contributor 将在其中还原数据库或创建文件的目标 VM。 可考虑具有以下权限的自定义角色,而不是内置角色:

- Microsoft.Compute/virtualMachines/write
- Microsoft.Compute/virtualMachines/read
Backup Operator 目标恢复服务存储库

默认情况下,在恢复服务保管库上启用 CSR。 若要更新恢复服务保管库还原设置,请转到“属性”>“跨订阅还原”,然后进行所需的更改。

屏幕截图显示如何修改适用于 HANA 数据库的恢复服务保管库上的跨订阅还原设置。

使用 Azure CLI 跨订阅还原

az backup vault create

添加参数 cross-subscription-restore-state,使你能够在保管库创建和更新期间设置保管库的 CSR 状态。

az backup recoveryconfig show

添加参数 --target-subscription-id,它使你能够在触发 SQL 或 HANA 数据源的跨订阅还原时提供目标订阅作为输入。

示例

   az backup vault create -g {rg_name} -n {vault_name} -l {location} --cross-subscription-restore-state Disable
   az backup recoveryconfig show --restore-mode alternateworkloadrestore --backup-management-type azureworkload -r {rp} --target-container-name {target_container} --target-item-name {target_item} --target-resource-group {target_rg} --target-server-name {target_server} --target-server-type SQLInstance --target-subscription-id {target_subscription} --target-vault-name {target_vault} --workload-type SQLDataBase --ids {source_item_id}

后续步骤