Skip to Content
Author's profile photo Former Member

SAP HANA数据恢复技术(三):数据库恢复

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

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

数据区不可用

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

Log区不可用

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

逻辑错误—时间点恢复

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

恢复流程

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

/wp-content/uploads/2014/03/1_414724.png

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

选项

描述

恢复数据库到最近的状态

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

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

恢复数据库到指定时间点

需要以下数据:

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

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

需要以下数据:

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

恢复数据库到某个log位置

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

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

/wp-content/uploads/2014/03/2_414753.png

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

/wp-content/uploads/2014/03/3_414766.png

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

/wp-content/uploads/2014/03/4_414765.png

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

/wp-content/uploads/2014/03/5_414757.png

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

/wp-content/uploads/2014/03/6_414764.png/wp-content/uploads/2014/03/7_414759.png

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

用户可以使用恢复的方式来从源数据库拷贝到目标数据库。这种方式可以很大程度减少实施消耗(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!我们欢迎你的加入!

Assigned Tags

      Be the first to leave a comment
      You must be Logged on to comment or reply to a post.