Technology Blogs by SAP
Learn how to extend and personalize SAP applications. Follow the SAP technology blog for insights into SAP BTP, ABAP, SAP Analytics Cloud, SAP HANA, and more.
cancel
Showing results for 
Search instead for 
Did you mean: 
Former Member
0 Kudos
6,312

SAP HANA数据库的恢复主要应用在以下场景中:

  • 数据区硬盘无法使用
  • 日志区硬盘无法使用
  • 逻辑错误导致数据库需要被重置到一个特定的时间点
  • 数据库拷贝

数据区不可用

若数据区不可用,并且在上一次数据备份之后所有数据改变的log备份和log区文件都可用,那我们可以恢复到数据库失效的时间点,已提交的数据不会丢失。对于此情况的数据库恢复,数据备份或者存储快照,日志备份以及日志区都是需要的,当数据库成功的从数据备份或者数据快照恢复后,会使用log备份和log区的日志进行回放。

Log区不可用

log区不可用,只需要回放log备份。这样的结果是任何log备份之后的改变都会丢失。除此之外,所有在log备份时未commit的事务都会被回滚。对于此情况的数据库恢复,数据备份或者存储快照,日志备份会被使用。当数据库成功的从数据备份或者数据快照恢复后,会使用log备份日志进行回放。再恢复时需要指定Initialize log area选项以避免从不可用的log区恢复。

逻辑错误—时间点恢复

若需要恢复到某个时间点,管理员需要这个时间点前的一个数据备份或者一个存储快照,以及日志备份和日志区的一部分。由于此种方式会将时间点后的改变全部丢失,从安全考虑来讲,推荐用户在另一个系统进行恢复。

恢复流程

  • SAP HANA System视图,右键点击要恢复的系统,选择“Recovery…

  • 点击OK以关闭系统。
  • 根据下表选择一种恢复方式。

选项

描述

恢复数据库到最近的状态

此选项将恢复数据库到离当前最近的状态,需要以下数据:

  1. 最近的数据备份(File, Backint, 或存储快照)
  2. 数据备份后的日志备份
  3. 日志区数据

恢复数据库到指定时间点

需要以下数据:

  1. 最近的数据备份(File, Backint, 或存储快照)
  2. 数据备份后的日志备份(包括此时间点之后的日志备份)
  3. 日志区数据

恢复数据库到指定数据备份或者存储快照

需要以下数据:

  1. 指定数据备份(File, Backint, 或存储快照)

恢复数据库到某个log位置

此选项是用来处理之前的恢复失败的情况,需要以下数据:

  1. Log位置之前的数据备份(File, Backint, 或存储快照)
  2. 数据备份后的日志备份
  3. 日志区数据

  • 选择一项后点击“Next”。
  • 若需要日志备份,则指定日志备份的位置。

  • 由于系统会根据备份目录以失败备份的位置,因此不需要指定恢复哪个备份,点击Next

  • 根据需要选择额外的选项,点击“next”。


  • 恢复总结显示出来,如果设置正确,选择“Finish”,恢复开始。

使用备份和恢复拷贝数据库

用户可以使用恢复的方式来从源数据库拷贝到目标数据库。这种方式可以很大程度减少实施消耗(TCD)。用户可以选择两种方式拷贝数据库:

  • 使用源数据库的数据备份和日志备份文件来拷贝。
  • 只使用数据备份文件进行拷贝。

使用备份来拷贝数据库的具体流程与上文恢复数据库的流程相同,但需注意:

  1. 如果目标系统主机数少于源系统主机数量时,必须配置目标系统,使错个indexserver服务运行在一个主机上。如果其他多个服务存在,则需要每个服务运行在单独的主机上。可通过

ALTER SYSTEM ALTER CONFIGURATION('daemon.ini','system') set ('indexserver.c','instanceids')= '<n>[,<n>+2]' with reconfigure

来添加额外的indexserver到一个主机的系统。

  1. 如果目标系统的主机数多于源系统主机数,则必须移除多余的主机。
  2. 在源数据库建立snapshot

使用存储快照拷贝数据库

BACKUP DATA CREATE SNAPSHOT(或使用HANA Studio

  1. 关闭目标数据库,拷贝源数据库的data区到目标数据库的data
  2. 在源数据库确认或放弃snapshot

SNAPSHOT BACKUP_ID <backup_id> SUCCESSFUL <external_id> | UNSUCCESSFUL [<string>]SUCCESSFUL <external_id>

其中<backup_id>可使下面语句用查询

SELECT * FROM "SYS"."M_BACKUP_CATALOG" WHERE ENTRY_TYPE_NAME = 'data snapshot'

  1. 在目标数据库中,删除备份文件,如果$DIR_INSTANCE/../SYS/global/hdb/metadata 中存在BackupCatalog.xml文件,删除掉。
  2. 在目标数据库用户环境下执行以下命令:(或使用HANA Studio)

hdbnsutil -useSnapshot
hdbnsutil –convertTopology

  1. 启动目标数据库

本文的测试案例所使用的SAP HANA版本为SAP HANA SPS7 Revision 70.00。想获取更多SAP HANA学习资料或有任何疑问,请关注新浪微博@HANAGeek!我们欢迎你的加入!