Hana数据库
1.内存数据库
内存数据库 (IMDB) 是一种将数据存储在计算机主内存 (RAM),而不是传统磁盘或固态硬盘 (SSD) 的数据库。SAP HANA 则是从零开始构建,主要目的是利用内存处理数据,其次才是利用其他必要的存储机制来平衡性能和成本。从内存中检索数据要比从磁盘或固态硬盘中检索数据快得多,因此 SAP HANA 可以实现瞬时响应。
2.场景
内存数据库通常用于对速度和处理量有着极高要求的场景,例如电信网络和银行系统。在过去的 10 年中,随着多核处理器的发展和 RAM 价格回落,企业开始将内存数据库用于更广泛的场景,包括实时分析和预测建模、客户体验管理、物流等等。
3.特点
高性能,高压缩比,高价格,闭源的特点。
HANA备份
数据写入原理
备份数据
SAP HANA备份可以分成日志备份和数据备份两个部分,具体特点包括:
- 两个部分的备份过程是相互独立的,SAP HANA进行第一次数据备份以前,日志备份是不会进行的;
- 备份和恢复都是应用于整个数据库的,不可以备份和恢复数据库中某一个对象;
- SAP HANA备份至少需要 BACKUP ADMIN 和 CATALOG READ权限
默认数据目录结构
重定向数据目录
如果想更改路径,可以studio的backup console中更改(可视化界面)也可以在global.ini配置文件中更改$(DIR_INSTANCE)/../SYS/global/hdb/custom/config
cd /hana/shared/HXE/global/hdb/custom/config/
/hana/shared/HXE/exe/linuxx86_64/HDB_2.00.061.00.1644229038_dc05c0c21c523047df25eba12fdb3f146ac848b2/config/
修改后需重启数据库
默认路径说明
- HANA数据库安装后的文件系统,两个安装点:/usr/sap (本地) /hana (存储)。
- 数据库实例执行程序,位于shared目录,数据位于data目录,日志位于log目录。在执行备份之后,默认路径下生成log日志
3. /usr/sap/<SID>目录,其实就是一个快捷目录,指向/hana/shared/<SID>,这是为生产环境切换准备的。
4. 注意backup目录,里面有数据库全库备份,并且还有日志的备份,这个会随作时间的延续而增长。
如果用磁盘存放备份,应该把备份文件设置到其它大空间的目录中去
日志的备份
在SAP HANA中,默认情况下,系统自动备份日志,前提必须是做过一次数据备份。
在自动备份的模式下,三种情况会触发一个log segment备份
- Log segment满了。
- 超过log备份timeout设置时间,log segment关闭。
- 数据库启动。
日志模式
Log mode有两种模式可选:
Normal(默认)
在该模式下,如果enable_auto_log_backup=yes,log segment会被自动的备份,这种方式的好处是:备份后的log segment文件可以被重新利用,从而避免了log volume慢导致数据库崩溃。
Overwrite
在该模式下,log segment不会被进行备份,进行了savepoint之后,free状态的log segment会被直接覆盖。由于没有日志的备份,这种模式不推荐在生产系统中使用。如果使用Overwrite模式,数据将只能通过数据备份进行恢复了,不能达到恢复到point-in-time的效果,只能恢复到某个savepoint。
我们也可以设定log备份的时间间隔,Configuration->golobal.ini->persistence->log_backup_timeout_s。系统默认时间间隔为900s,如果发生介质故障需要从备份恢复且日志日志区不能被用来进行恢复,这段时间内的系统数据改变将会丢失。如果此处设为0,那么系统只有在log segment满或者系统重启时才会备份
重定向日志
重定义log日志路径及默认备份时间:
/hana/shared/HXE/exe/linuxx86_64/HDB_2.00.061.00.1644229038_dc05c0c21c523047df25eba12fdb3f146ac848b2/config
Vi global.ini
数据备份
SAP HANA数据区的备份包含了数据库的所有内容:事务数据已经管理数据(例如:用户,角色,模型和视图)。只有真正的数据会被备份,数据库中未使用的空间不会被备份。数据区进行备份时,会备份每一个SAP HANA服务的数据。如果SAP HANA运行在多个主机上,那么数据备份会包含所有主机上的以服务为单位的备份。
默认情况下,SAP HANA的数据备份目录为$DIR_INSTANCE/backup/data。注意这个目录以及日志备份目录$DIR_INSTANCE/backup/log与SAP HANA的日志区和数据区要放在不同的硬盘上,这样即使SAP HANA系统发生介质故障,也不会影响日志硬盘。
数据备份可通过三种工具进行备份:SAP HANA studio, SQL命令,批处理模式。
命令参考:
su - hxeadm
backup DATA using file ('/usr/sap/HXE/HDB90/backup/data','FULL.SystemDB')
是否存在,不指定备份路径,直接执行自备份脚本,NBP备份成功?
hdbsql -n localhost -i 90 -d HXE -u SYSTEM -p ABCabc123 -x "backup data using file ('/usr/sap/HXE/HDB90/backup/data/tenant/test1')"
-n 表示连接的主机 -i 实例编号 -d 指定是系统库还是租户库(默认是租户库) -u 指定数据库的用户名 -p 指定数据库的密码 -x 后面可以执行相应的sql命令 |
Eg.
PREFIX="$(date +"%Y%m%d-%H%M%S")"
hdbsql -i 00 -u SYSTEM -p password -n localhost:30013 "backup data for SYSTEMDB using file ('$PREFIX')"
hdbsql -i 00 -u SYSTEM -p password -n localhost:30013 "backup data for HAP using file ('$PREFIX')"
hdbsql -i 00 -u SYSTEM -p password -n localhost:30013 "backup data for POP using file ('$PREFIX')"
定时清理文件:
find /hana/shared/HAN/HDB88/backup/log/SYSTEMDB/log_backup* -mtime +7 -exec rm -f {} \;
find /hana/shared/HAN/HDB88/backup/log/DB_HAN/log_backup* -mtime +7 -exec rm -f {} \;
find /hana/shared/HAN/HDB88/backup/data/DB_HAN/*databackup* -mtime +7 -exec rm -rf {} \;
数据恢复
最终还原命令为(该命令为本机恢复,全量恢复)
hdbsql -n localhost -i 90 -d SystemDB -u SYSTEM -p Suj000123 -x "RECOVER DATA FOR HXE USING FILE('/usr/sap/HXE/HDB90/backup/data/tenant/test1') CLEAR LOG";
注意:
1.要恢复到最新状态,日期必须晚于最新状态
2.恢复的目标数据库不存在时,需要先创建好目标数据库,如果恢复的目标数据库和老的数据库名字相同,那么恢复后库的密码是新库的密码
3.SAP HANA 数据库无法恢复到比其现有版本低的任何版本。用于恢复的 SAP HANA 数据库软件版本必须是相同或高于创建备份的 SAP HANA 数据库的版本。
--停库
HDB stop
--数据恢复
HDBSettings.sh recoverSys.py --wait --command="RECOVER DATA USING FILE ('COMPLETE_DATA_BACKUP') CLEAR LOG"
--启库
HDB start