SAP HANA数据恢复技术(三):数据库恢复
SAP HANA数据库的恢复主要应用在以下场景中:
- 数据区硬盘无法使用
- 日志区硬盘无法使用
- 逻辑错误导致数据库需要被重置到一个特定的时间点
- 数据库拷贝
数据区不可用
若数据区不可用,并且在上一次数据备份之后所有数据改变的log备份和log区文件都可用,那我们可以恢复到数据库失效的时间点,已提交的数据不会丢失。对于此情况的数据库恢复,数据备份或者存储快照,日志备份以及日志区都是需要的,当数据库成功的从数据备份或者数据快照恢复后,会使用log备份和log区的日志进行回放。
Log区不可用
若log区不可用,只需要回放log备份。这样的结果是任何log备份之后的改变都会丢失。除此之外,所有在log备份时未commit的事务都会被回滚。对于此情况的数据库恢复,数据备份或者存储快照,日志备份会被使用。当数据库成功的从数据备份或者数据快照恢复后,会使用log备份日志进行回放。再恢复时需要指定Initialize log area选项以避免从不可用的log区恢复。
逻辑错误—时间点恢复
若需要恢复到某个时间点,管理员需要这个时间点前的一个数据备份或者一个存储快照,以及日志备份和日志区的一部分。由于此种方式会将时间点后的改变全部丢失,从安全考虑来讲,推荐用户在另一个系统进行恢复。
恢复流程
- 在SAP HANA System视图,右键点击要恢复的系统,选择“Recovery…”
- 点击OK以关闭系统。
- 根据下表选择一种恢复方式。
选项 |
描述 |
恢复数据库到最近的状态 |
此选项将恢复数据库到离当前最近的状态,需要以下数据:
|
恢复数据库到指定时间点 |
需要以下数据:
|
恢复数据库到指定数据备份或者存储快照 |
需要以下数据:
|
恢复数据库到某个log位置 |
此选项是用来处理之前的恢复失败的情况,需要以下数据:
|
- 选择一项后点击“Next”。
- 若需要日志备份,则指定日志备份的位置。
- 由于系统会根据备份目录以失败备份的位置,因此不需要指定恢复哪个备份,点击Next。
- 根据需要选择额外的选项,点击“next”。
- 恢复总结显示出来,如果设置正确,选择“Finish”,恢复开始。
使用备份和恢复拷贝数据库
用户可以使用恢复的方式来从源数据库拷贝到目标数据库。这种方式可以很大程度减少实施消耗(TCD)。用户可以选择两种方式拷贝数据库:
- 使用源数据库的数据备份和日志备份文件来拷贝。
- 只使用数据备份文件进行拷贝。
使用备份来拷贝数据库的具体流程与上文恢复数据库的流程相同,但需注意:
- 如果目标系统主机数少于源系统主机数量时,必须配置目标系统,使错个indexserver服务运行在一个主机上。如果其他多个服务存在,则需要每个服务运行在单独的主机上。可通过
ALTER SYSTEM ALTER CONFIGURATION(‘daemon.ini’,’system’) set (‘indexserver.c’,’instanceids’)= ‘<n>[,<n>+2]’ with reconfigure
来添加额外的indexserver到一个主机的系统。
- 如果目标系统的主机数多于源系统主机数,则必须移除多余的主机。
- 在源数据库建立snapshot
使用存储快照拷贝数据库
BACKUP DATA CREATE SNAPSHOT(或使用HANA Studio)
- 关闭目标数据库,拷贝源数据库的data区到目标数据库的data区
- 在源数据库确认或放弃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’
- 在目标数据库中,删除备份文件,如果$DIR_INSTANCE/../SYS/global/hdb/metadata 中存在BackupCatalog.xml文件,删除掉。
- 在目标数据库用户环境下执行以下命令:(或使用HANA Studio)
hdbnsutil -useSnapshot
hdbnsutil –convertTopology
- 启动目标数据库
本文的测试案例所使用的SAP HANA版本为SAP HANA SPS7 Revision 70.00。想获取更多SAP HANA学习资料或有任何疑问,请关注新浪微博@HANAGeek!我们欢迎你的加入!