SAP HANA命令行方式备份恢复

hana数据库命令行备份和恢复

hana大致原理图
而不像传统数据库,数据放在硬盘里,走过复杂的读操作,走过系统总线,在内存里被短暂的处理,然后再走过同样的路回去,躺在硬盘里
在这里插入图片描述
1. hana数据库分为两大类即为租户库(多个)和系统库(一个)
1>hana数据库对内存要求很高,速成版(也就是免费版的,下载下来是个ova的虚拟机,最低内存要求8G,而正式版内存最低要求是24G)
2>本来打算从头安装的,无赖配置不够
在这里插入图片描述
2. 常用命令

1>hdbsql -n localhost -i 90 -d SystemDB -u SYSTEM -p Suj000123 -x
-n 表示连接的主机
-i 实例编号
-d 指定是系统库还是租户库(默认是租户库)
-u 指定数据库的用户名
-p 指定数据库的密码
-x 后面可以执行相应的sql命令

2>alter system start Database HXE
其中HXE为租户库的名字,该命令需要在系统库中执行才能生效

3>CREATE SCHEMA HDBSQL_TEST;
4>CREATE TABLE HDBSQL_TEST.CUSTOMER(ID INTEGER NOT NULL PRIMARY KEY,NAME NVARCHAR(50),ZIP NVARCHAR(20),ADDRESS NVARCHAR(100),TELEPHONE NVARCHAR(20));
5>INSERT INTO "HDBSQL_TEST"."CUSTOMER" values (1043,'George W. Bush','23193','华盛顿特区宾夕法尼亚大道1600号','202-456-1112');
6>SELECT * FROM HDBSQL_TEST.CUSTOMER
7>删除SCHEMA
    i>有表的时候:DROP SCHEMA HDBSQL_TEST CASCADE;
    ii>无表的时候:DROP SCHEMA HDBSQL_TEST;

创建数据库

Create a tenant database with automatic host placement and automatic port assignment.

CREATE DATABASE DB0 SYSTEM USER PASSWORD Manager1;
Create a tenant database on a specific host accessible via a specific SQL port (30148). The SQL port number is the internal communication port number plus 1.

CREATE DATABASE DB1 AT LOCATION 'HOST_A:30147' SYSTEM USER PASSWORD Manager1;
Create a tenant database on a specific host, adding an additional slave index server on a specific second host and an auxiliary script server on an automatically selected host.

CREATE DATABASE DB2 AT LOCATION 'HOST_A' ADD 'indexserver' AT 'HOST_B' ADD 'scriptserver' SYSTEM USER PASSWORD Manager1;

删库

DROP DATABASE my_database;
获取所有数据库的信息select * from "SYS"."M_DATABASES"

在这里插入图片描述

获取数据库Instance ID和Instance Number
select * from "SYS"."M_SYSTEM_OVERVIEW"

在这里插入图片描述

获取hana tenant jdbc port
select * from "SYS_DATABASES"."M_SERVICES"

在这里插入图片描述
3. 备份
用户必须先切换到sidadm用户,由于目前用的是免费版的虚拟机,进入后默认就是hxeadm用户

租户库和系统库备份command line一样的
backup DATA using file ('/usr/sap/HXE/HDB90/backup/data','FULL.SystemDB')
说明:
1.backup type:DATA(全量)、DATA INCREMENTAL、DATA DIFFERENTIAL
2.file后面的参数可以是一个也可以是两个
1>参数为两个时,第一个时目录的绝对路径,第二个是文件名前缀
2>参数为一个时
  i>当该参数时一个文件名的时候,那么默认将备份好的文件存放在/usr/sap/HXE/HDB90/backup/data/SYSTEMDB(或者DB_SID,在此处SID也就是我们的HXE)
  ii>当该参数是一个绝对路径时,那么默认将最后一个/后面的那个字符串作为备份文件名的前缀
3.最终备份命令为(以备份租户库为例):
 hdbsql -n localhost -i 90 -d HXE-u SYSTEM -p Suj000123 -x "backup data using file ('/usr/sap/HXE/HDB90/backup/data/tenant/test1')"

在这里插入图片描述
4. 恢复
恢复的时候系统库和租户库的方式不一样
4.1恢复的时候最重要的一点是要停止目标数据库,例如要恢复SystemDB那么就要先停止SystemDB
4.2所以系统数据库恢复的时候,就不能用-x的形式来执行恢复命令了,因此系统库和租户库的恢复是有区别的
4.3具体恢复如下

a>对于系统库的恢复,我们会用到hana给的两个系统自带的python脚本和一个shell脚本来进行辅助执行还原命令
i>这两个文件分别是:HDBSettings.sh(默认放在/usr/sap/HXE/HDB90下),recoverSys.py(默认放在/usr/sap/HXE/HDB90/exe/python_support下)
ii>那么最后的还原命令为:
HDBSettings.sh recoverSys.py --command="RECOVER DATA ALL USING FILE ('/usr/sap/HDB/HDB01/backup/data/backup_HDB_COUNT_1') CLEAR LOG"

b>对于租户库的还原,官方文档已经明确说明了不能用recoverSys.py来进行还原,租户库的还原必须要系统库来辅助完成
i>必须先停止租户库
hdbsql -n localhost -i 90 -d SystemDB -u SYSTEM -p Suj000123 -x "alter system start Database HXE"
ii>执行还原命令
还原命令为RECOVER DATA FOR TENANTDBNAME USING SOURCE 'SRTENANT@W02' USING BACKINT ('4344648_COMPLETE_DATA_BACKUP') CLEAR LOG
说明:
SRTENANT is the source tenant database name.
TENANTDBNAME is the destination tenant database name.
W02 is the source instance name
最终还原命令为(该命令为本机恢复,全量恢复)
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. SAP HANA数据库支持事务一致性,从而确保事务完全应用于系统或已处置。在事务期间,可以通过ROLLBACK命令显式还原对数据库的数据操作语言(DML)修改。发出ROLLBACK后,将还原当前事务期间所做的更改,并将当前数据库会话设置为空闲状态。 ROLLBACK仅适用于自动提交禁用的会话。
    如果您尝试在启用了自动提交的会话中使用ROLLBACK语句,则不会发生任何事情,因为会将事务自动提交到数据库。有关更改数据库会话的自动提交状态的更多信息,请参阅《 SAP HANA管理指南》中有关自定义管理控制台的信息。
  2. SAP HANA 数据库无法恢复到比其现有版本低的任何版本。用于恢复的 SAP HANA 数据库软件版本必须是相同或高于创建备份的 SAP HANA 数据库的版本。
  3. 要恢复到最新状态,日期必须晚于最新状态。(To recover to the most recent state, the date needs to be later than the most recent state.)
  4. 恢复的目标数据库不存在时,需要先创建好目标数据库,如果恢复的目标数据库和老的数据库名字相同,那么恢复后库的密码是新库的密码
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值