HANA 数据库恢复
下面显示了 HANA 数据库恢复的步骤
启动所需的 SAP 服务。
vm-pr1:~ # systemctl start sapinit
以下输出显示了所需的进程。
vm-pr1:/ # ps -ef | grep sap root 23101 1 0 11:29 ? 00:00:00 /usr/sap/hostctrl/exe/saphostexec pf=/usr/sap/hostctrl/exe/host_profile pr1adm 23191 1 3 11:29 ? 00:00:00 /usr/sap/PR1/HDB01/exe/sapstartsrv pf=/usr/sap/PR1/SYS/profile/PR1_HDB01_vm-pr1 -D -u pr1adm sapadm 23202 1 5 11:29 ? 00:00:00 /usr/sap/hostctrl/exe/sapstartsrv pf=/usr/sap/hostctrl/exe/host_profile -D root 23292 1 0 11:29 ? 00:00:00 /usr/sap/hostctrl/exe/saposcol -l -w60 pf=/usr/sap/hostctrl/exe/host_profile root 23359 2597 0 11:29 pts/1 00:00:00 grep --color=auto sap
以下各小节介绍了使用复制的日志备份进行正向恢复和不转发恢复的恢复过程。可以使用系统数据库的 HANA 恢复脚本和租户数据库的 hdbsql. 命令执行恢复。
恢复到最新的 HANA 数据卷备份保存点
使用以下命令以用户 pr1adm 的身份执行到最新备份 savepoint 的恢复:
-
系统数据库
recoverSys.py --command "RECOVER DATA USING SNAPSHOT CLEAR LOG”
-
租户数据库
Within hdbsql: RECOVER DATA FOR PR1 USING SNAPSHOT CLEAR LOG
您还可以使用 HANA Studio 或 Cockpit 执行系统和租户数据库的恢复。
以下命令输出显示了恢复执行情况。
系统数据库恢复
pr1adm@vm-pr1:/usr/sap/PR1/HDB01> HDBSettings.sh recoverSys.py --command="RECOVER DATA USING SNAPSHOT CLEAR LOG" [139702869464896, 0.008] >> starting recoverSys (at Fri Feb 19 14:32:16 2021) [139702869464896, 0.008] args: () [139702869464896, 0.009] keys: {'command': 'RECOVER DATA USING SNAPSHOT CLEAR LOG'} using logfile /usr/sap/PR1/HDB01/vm-pr1/trace/backup.log recoverSys started: ============2021-02-19 14:32:16 ============ testing master: vm-pr1 vm-pr1 is master shutdown database, timeout is 120 stop system stop system on: vm-pr1 stopping system: 2021-02-19 14:32:16 stopped system: 2021-02-19 14:32:16 creating file recoverInstance.sql restart database restart master nameserver: 2021-02-19 14:32:21 start system: vm-pr1 sapcontrol parameter: ['-function', 'Start'] sapcontrol returned successfully: 2021-02-19T14:32:56+00:00 P0027646 177bab4d610 INFO RECOVERY RECOVER DATA finished successfully recoverSys finished successfully: 2021-02-19 14:32:58 [139702869464896, 42.017] 0 [139702869464896, 42.017] << ending recoverSys, rc = 0 (RC_TEST_OK), after 42.009 secs pr1adm@vm-pr1:/usr/sap/PR1/HDB01>
租户数据库恢复
如果尚未在源系统上为 pr1adm 用户创建用户存储密钥,则必须在目标系统上创建密钥。在密钥中配置的数据库用户必须具有执行租户恢复操作的权限。
pr1adm@vm-pr1:/usr/sap/PR1/HDB01> hdbuserstore set PR1KEY vm-pr1:30113 <backup-user> <password>
租户恢复现在使用 hdbsql.
pr1adm@vm-pr1:/usr/sap/PR1/HDB01> hdbsql -U PR1KEY Welcome to the SAP HANA Database interactive terminal. Type: \h for help with commands \q to quit hdbsql SYSTEMDB=> RECOVER DATA FOR PR1 USING SNAPSHOT CLEAR LOG 0 rows affected (overall time 66.973089 sec; server time 66.970736 sec) hdbsql SYSTEMDB=>
HANA 数据库现在已启动并正在运行,并且 HANA 数据库的灾难恢复工作流已进行测试。
使用日志 / 目录备份进行正向恢复
正在从源系统复制日志备份和 HANA 备份目录。
使用所有可用日志备份执行恢复时,使用以下命令作为用户 pr1adm 执行:
-
系统数据库
recoverSys.py --command "RECOVER DATABASE UNTIL TIMESTAMP '2021-02-20 00:00:00' CLEAR LOG USING SNAPSHOT"
-
租户数据库
Within hdbsql: RECOVER DATABASE FOR PR1 UNTIL TIMESTAMP '2021-02-20 00:00:00' CLEAR LOG USING SNAPSHOT
要使用所有可用日志进行恢复,您可以在恢复语句中随时使用作为时间戳。 |
您还可以使用 HANA Studio 或 Cockpit 执行系统和租户数据库的恢复。
以下命令输出显示了恢复执行情况。
系统数据库恢复
pr1adm@vm-pr1:/usr/sap/PR1/HDB01> HDBSettings.sh recoverSys.py --command "RECOVER DATABASE UNTIL TIMESTAMP '2021-02-20 00:00:00' CLEAR LOG USING SNAPSHOT" [140404915394368, 0.008] >> starting recoverSys (at Fri Feb 19 16:06:40 2021) [140404915394368, 0.008] args: () [140404915394368, 0.008] keys: {'command': "RECOVER DATABASE UNTIL TIMESTAMP '2021-02-20 00:00:00' CLEAR LOG USING SNAPSHOT"} using logfile /usr/sap/PR1/HDB01/vm-pr1/trace/backup.log recoverSys started: ============2021-02-19 16:06:40 ============ testing master: vm-pr1 vm-pr1 is master shutdown database, timeout is 120 stop system stop system on: vm-pr1 stopping system: 2021-02-19 16:06:40 stopped system: 2021-02-19 16:06:41 creating file recoverInstance.sql restart database restart master nameserver: 2021-02-19 16:06:46 start system: vm-pr1 sapcontrol parameter: ['-function', 'Start'] sapcontrol returned successfully: 2021-02-19T16:07:19+00:00 P0009897 177bb0b4416 INFO RECOVERY RECOVER DATA finished successfully, reached timestamp 2021-02-19T15:17:33+00:00, reached log position 38272960 recoverSys finished successfully: 2021-02-19 16:07:20 [140404915394368, 39.757] 0 [140404915394368, 39.758] << ending recoverSys, rc = 0 (RC_TEST_OK), after 39.749 secs
租户数据库恢复
pr1adm@vm-pr1:/usr/sap/PR1/HDB01> hdbsql -U PR1KEY Welcome to the SAP HANA Database interactive terminal. Type: \h for help with commands \q to quit hdbsql SYSTEMDB=> RECOVER DATABASE FOR PR1 UNTIL TIMESTAMP '2021-02-20 00:00:00' CLEAR LOG USING SNAPSHOT 0 rows affected (overall time 63.791121 sec; server time 63.788754 sec) hdbsql SYSTEMDB=>
HANA 数据库现在已启动并正在运行,并且 HANA 数据库的灾难恢复工作流已进行测试。
检查最新日志备份的一致性
由于日志备份卷复制是独立于 SAP HANA 数据库执行的日志备份过程执行的,因此灾难恢复站点上可能存在不一致的开放日志备份文件。只有最新的日志备份文件可能不一致,在使用 hdbbackupcheck
工具在灾难恢复站点执行正向恢复之前,应先检查这些文件。
如果 hdbbackupcheck
工具报告最新日志备份出错,则必须删除或删除最新的日志备份集。
pr1adm@hana-10: > hdbbackupcheck /hanabackup/PR1/log/SYSTEMDB/log_backup_0_0_0_0.1589289811148 Loaded library 'libhdbcsaccessor' Loaded library 'libhdblivecache' Backup '/mnt/log-backup/SYSTEMDB/log_backup_0_0_0_0.1589289811148' successfully checked.
必须对系统和租户数据库的最新日志备份文件执行检查。
如果 hdbbackupcheck
工具报告最新日志备份出错,则必须删除或删除最新的日志备份集。