还原 Azure VM 上的 SAP HANA 数据库
本文介绍如何还原在 Azure 虚拟机 (VM) 上运行的、已由 Azure 备份服务备份到恢复服务保管库的 SAP HANA 数据库。 可以使用还原的数据为开发和测试方案创建副本,或返回到以前的状态。
现在,Azure 备份服务可支持备份和还原 SAP HANA 系统复制 (HSR) 实例。
注意
- 使用 HSR 还原 HANA 数据库的过程与不使用 HSR 还原 HANA 数据库的过程相同。 根据 SAP 公告,可以使用 HSR 模式将数据库还原为独立数据库。 如果目标系统已启用 HSR 模式,请先禁用此模式,然后再还原数据库。 但是,如果要还原为文件,则不需要禁用 HSR 模式(中断 HSR)。
- HSR 目前不支持原始位置恢复 (OLR)。 或者,请选择备用位置还原,然后从列表中选择源 VM 作为主机。
- 不支持还原到 HSR 实例。 但是,支持仅还原到 HANA 实例。
有关支持的配置和方案的信息,请参阅 SAP HANA 备份支持矩阵。
还原到某个时间点或恢复点
Azure 备份可以还原在 Azure VM 上运行的 SAP HANA 数据库。 它可以:
使用日志备份将其还原到特定的日期或时间(精确到秒)。 Azure 备份可自动确定相应的完整备份、差异备份和日志链备份,这些是根据所选时间进行还原所必需的。
将其还原到特定的完整备份或差异备份,以将其还原到特定的恢复点。
先决条件
在开始还原数据库之前,请注意以下事项:
只能将数据库还原到同一区域中的 SAP HANA 实例。
目标实例必须注册到与源相同的保管库。 详细了解如何备份 SAP HANA 数据库。
Azure 备份不能识别同一 VM 上两个不同的 SAP HANA 实例。 因此,无法将数据从同一 VM 上的一个实例还原到另一个实例。
若要确保目标 SAP HANA 实例已准备好进行还原,请检查其备份就绪情况状态:
若要详细了解 SAP HANA 支持的还原类型,请参阅 SAP HANA 说明 1642148。
还原数据库
若要还原数据库,需要以下权限:
- 备份操作员:提供在其中执行还原的保管库的权限。
- 参与者(写入):提供对已备份的源 VM 的访问权限。
- 参与者(写入):提供对目标 VM 的访问权限。
- 若要还原到同一 VM,则此项将是源 VM。
- 若要还原到备用位置,则此项将是新的目标 VM。
在 Azure 门户中,转到“备份中心”,然后选择“还原”。
选择“Azure VM 中的 SAP HANA”作为数据源类型,选择要还原的数据库,然后选择“继续”。
在“还原配置”下,指定要在何处或如何还原数据:
- 备用位置:将数据库还原到备用位置,同时保留原始源数据库。
- 覆盖 DB:将数据还原到原始源所在的同一 SAP HANA 实例。 此选项将覆盖原始数据库。
注意
在还原期间(仅适用于虚拟 IP/负载均衡器前端 IP 方案),如果你在将 HSR 模式更改为独立模式后尝试将备份还原到目标节点,或者在按照 SAP 的建议进行还原之前中断 HSR,请确保负载均衡器指向目标节点。
方案示例:
- 如果在预注册脚本中使用 hdbuserstore set SYSTEMKEY localhost,则还原期间不会出现问题。
- 如果 *hdbuserstore 在预注册脚本中设置了
SYSTEMKEY <load balancer host/ip>
,并且你尝试将备份还原到目标节点,请确保负载均衡器指向需要还原的目标节点。
还原到备用位置
在“还原”窗格中的“在何处以及如何还原?”下,选择“备用位置”。
选择要将数据库还原到其中的 SAP HANA 主机名和实例。
确保目标 SAP HANA 实例已做好备份准备,检查它是否已准备好还原。 有关详细信息,请参阅先决条件。
在“还原数据库名称”框中,输入目标数据库的名称。
注意
单一数据库容器 (SDC) 还原必须遵循这些检查项。
如果适用,请选中“当选定的 HANA 实例上已存在同名的数据库时覆盖”复选框。
还原为文件
注意
“作为文件还原”不适用于通用 Internet 文件系统 (CIFS) 共享,但适用于网络文件系统 (NFS)。
若要将备份数据作为文件而不是数据库还原,请选择“作为文件还原”。 将文件转储到指定的路径后,可以将这些文件移动到要将其作为数据库还原的任何 SAP HANA 计算机上。 由于可以将这些文件移动到任何计算机,你现在可以跨订阅和区域进行数据还原。
在“还原”窗格中的“在何处以及如何还原?”下,选择“作为文件还原”。
选择要将备份文件还原到的主机或 HANA 服务器名称。
在“服务器上的目标路径”框中,输入在上一步骤中选择的服务器上的文件夹路径。 此位置是服务要将全部所需备份文件转储到的位置。
转储的文件包括:
- 数据库备份文件
- JSON 元数据文件(适用于所涉及的每个备份文件)
通常,使用网络共享路径或指定为目标路径的已装载 Azure 文件共享的路径,能使同一网络中的其他计算机或其上装载的同一 Azure 文件共享更加轻松地访问这些文件。
注意
若要在装载在目标注册的 VM 上的 Azure 文件共享上还原数据库备份文件,请确保 root 帐户对该共享具有读/写权限。
选择要将所有备份文件和文件夹还原到的还原点。
与所选还原点关联的所有备份文件将转储到目标路径中。
根据所选的还原点类型(“时间点”或“完整和差异”),你将看到一个或多个在目标路径中创建的文件夹。 文件夹 Data_<还原日期和时间> 包含完整备份,文件夹 Log 包含日志备份和其他备份(例如差异备份和增量备份)。
注意
如果选择了“还原到某个时间点”,则已转储到目标 VM 的日志文件有时可能会包含超过选择用于还原的时间点的日志。 Azure 备份这样做是为了确保所有 HANA 服务的日志备份都可用于一致且成功地还原到所选时间点。
将已还原的文件移动到要将其作为数据库还原的 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 备份服务将确定在作为文件还原期间要下载的文件链。 但在某些情况下,你可能不想再次下载整个内容。
例如,你实施了每周完整备份、每日差异备份和日志备份的策略,并且已下载特定差异备份的文件。 你发现这不是正确的恢复点,并决定下载第二天的差异备份文件。 现在只需要差异文件,因为已经有了最初的完整备份文件。 使用 Azure 备份提供的“作为文件部分还原”功能,现在可以从下载链中排除完整备份,并仅下载差异备份。
排除备份文件类型
ExtensionSettingOverrides.json 是一个 JSON(JavaScript 对象表示法)文件,其中包含适用于 SQL 的 Azure 备份服务的多个设置的替代。 对于“作为文件部分还原”操作,必须添加一个新的 JSON 字段 RecoveryPointsToBeExcludedForRestoreAsFiles
。 此字段包含一个字符串值,该值表示下一个“作为文件还原”操作中应排除哪些恢复点类型。
在要将文件下载到的目标计算机上,转到“opt/msawb/bin”文件夹。
创建名为 ExtensionSettingOverrides.JSON 的新 JSON 文件(如果尚不存在)。
添加以下 JSON 键值对:
{ "RecoveryPointsToBeExcludedForRestoreAsFiles": "ExcludeFull" }
更改文件的权限和所有权:
chmod 750 ExtensionSettingsOverrides.json chown root:msawb ExtensionSettingsOverrides.json
不需要重新启动任何服务。 Azure 备份服务将尝试在还原链中排除该文件提到的备份类型。
RecoveryPointsToBeExcludedForRestoreAsFiles
只接受特定值,这些值表示还原期间要排除的恢复点。 对于 SAP HANA,这些值包括:
ExcludeFull
。 如果还原点链中存在其他备份类型(例如差异备份、增量备份和日志备份),将下载它们。ExcludeFullAndDifferential
。 如果还原点链中存在其他备份类型(例如增量备份和日志备份),将下载它们。ExcludeFullAndIncremental
。 如果还原点链中存在其他备份类型(例如差异备份和日志备份),将下载它们。ExcludeFullAndDifferentialAndIncremental
。 如果还原点链中存在其他备份类型(例如日志备份),将下载它们。
还原到特定时间点
如果已选择“日志(时间点)”作为还原类型,请执行以下操作:
从日志图中选择一个恢复点,然后选择“确定”以选择还原点。
在“还原”菜单中,选择“还原”启动还原作业。
在“通知”区域中跟踪还原进度,或者在数据库菜单中选择“还原作业”来跟踪进度。
还原到特定的恢复点
如果已选择“完整和差异”作为还原类型,请执行以下操作:
从列表中选择一个恢复点,然后选择“确定”以选择还原点。
在“还原”菜单中,选择“还原”启动还原作业。
在“通知”区域中跟踪还原进度,或者在数据库菜单中选择“还原作业”来跟踪进度。
注意
在多数据库容器 (MDC) 还原中,在将系统数据库还原到目标实例之后,需要再次运行注册前脚本。 后续的租户数据库还原将会成功。 有关详细信息,请参阅排查多容器数据库还原问题。
跨区域还原
作为还原选项之一,跨区域还原 (CRR) 可用于在某个次要区域(Azure 配对区域)中还原 Azure VM 上托管的 SAP HANA 数据库。
若要开始使用该功能,请参阅设置跨区域还原。
查看次要区域中的备份项
如果启用了 CRR,则可以查看次要区域中的备份项。
- 在 Azure 门户中,转到“恢复服务保管库”,然后选择“备份项”。
- 选择“次要区域”以查看次要区域中的项。
注意
列表中仅显示支持 CRR 功能的备份管理类型。 目前,只允许将次要区域数据还原到次要区域。
在次要区域中还原
次要区域还原用户体验类似于主要区域还原用户体验。 在“还原配置”窗格中配置详细信息时,系统会提示你仅提供次要区域参数。 次要区域中应有一个保管库,并且应将 SAP HANA 服务器注册到次要区域中的保管库。
注意
- 在触发还原并进入数据传输阶段后,无法取消还原作业。
- 跨区域执行还原操作所需的角色和访问级别为订阅中的备份操作员角色,以及源和目标虚拟机上的参与者(写入)访问权限。 若要查看备份作业,至少需要订阅中的备份读取者权限。
- 次要区域中可用备份数据的恢复点目标 (RPO) 为 12 小时。 因此,打开 CRR 时,次要区域的 RPO 为 12 小时 + 日志频率持续时间(可以设置为至少 15 分钟)。
了解跨区域还原最低角色要求。
监视次要区域还原作业
跨订阅还原
Azure 备份现在允许你从还原点将 SAP HANA 数据库还原到任何订阅(根据以下 Azure RBAC 要求)。 默认情况下,Azure 备份会还原到提供还原点的同一订阅。
通过跨订阅还原 (CSR),可以灵活地还原到租户下的任何订阅和保管库(如果还原权限可用)。 默认情况下,将在所有恢复服务保管库(现有和新创建的保管库)上启用 CSR。
注意
- 可以从恢复服务保管库触发跨订阅还原。
- CSR 仅支持流式处理/基于 Backint 的备份,不支持基于快照的备份。
- 不支持将跨区域还原 (CRR) 与 CSR 一起使用。
跨订阅还原到已启用专用终结点的保管库
若要对已启用专用终结点的保管库执行跨订阅还原,请执行以下操作:
- 在源恢复服务保管库中,转到“网络”选项卡。
- 转到“专用访问”部分并创建专用终结点。
- 选择要在其中还原的目标保管库的订阅。
- 在“虚拟网络”部分中,选择要跨订阅还原的目标 VM 的 VNet。
- 创建专用终结点并触发还原过程。
Azure RBAC 要求
操作类型 | 备份操作员 | 恢复服务保管库 | 备用操作员 |
---|---|---|---|
还原数据库或还原为文件 | Virtual Machine Contributor |
已备份的源 VM | 可考虑具有以下权限的自定义角色而不是内置角色: - Microsoft.Compute/virtualMachines/write - Microsoft.Compute/virtualMachines/read |
Virtual Machine Contributor |
将在其中还原数据库或创建文件的目标 VM。 | 可考虑具有以下权限的自定义角色,而不是内置角色: - Microsoft.Compute/virtualMachines/write - Microsoft.Compute/virtualMachines/read |
|
Backup Operator |
目标恢复服务保管库 |
默认情况下,在恢复服务保管库上启用 CSR。 若要更新恢复服务保管库还原设置,请转到“属性”>“跨订阅还原”,然后进行所需的更改。
使用 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}