如何在 SAP HANA 中按模式明智地进行备份

How to take backup by schema wise in SAP HANA

我正在使用

在 HANA 中执行备份
hdbsql HDB=> BACKUP DATA USING FILE ('/backup/HDB/data/BACKUP_FULL_20170514/SAPHANA')

取而代之的是,我希望通过模式明智地进行备份并将其作为 cronjob。如何在 SAP HANA 中按模式明智地进行备份?

好的,这是一个常见问题,不仅适用于 HANA,也适用于任何具有模式支持的 DBMS。
简短的回答是:不可能 backup/restore 基于模式的数据。模式是数据库中的命名空间,而 backup/restore 是数据持久化的功能。

由于事务可以跨越多个模式,仅恢复单个模式可能会导致不一致,因为事务只能部分恢复。

话虽如此,通常实际要求不是 backup/restore 单独的模式,而是允许在共享系统上处理多个数据库租户。

SAP HANA 通过多数据库容器支持这一点。每个租户都有自己的一组数据库进程、内存、文件系统等,但 HANA 软件安装是共享的。

这样可以很容易地 backup/recover 单个租户而不影响其他租户。这种方法的另一个好处是模式本身将在所有租户数据库中具有相同的名称,从而使维护更容易。

您可以使用此 SQL 命令导出模式:

EXPORT "MY_SCHEMA".* AS BINARY INTO '/tmp/my_schema' WITH REPLACE;

有关更多选项,请参阅 EXPORT documentation

提示:不要导出到已安装的 Windows 文件系统或 NAS,因为导出可能包含名称相同但大小写不同的大小写相关文件。这会在 Windows 文件系统上中断。 -- 最好直接在 Linux 系统上压缩,如下所示:

tar -czf my_schema.tgz /tmp/my_schema/

要导入架构备份,请使用此命令:

IMPORT "MY_SCHEMA".* FROM '/tmp/my_schema' WITH REPLACE;

您可以使用 WITH RENAME "MY_SCHEMA" TO "MY_SCHEMA_COPY" 以不同的名称恢复它。有关更多选项,请参阅 IMPORT documentation

SAP 说明 2134959 describes the process in more detail. Also, have a look at SAP note 2121486,其中列出了使用 EXPORT 进行备份的不一致风险,如@Lars 所述。

顺便说一句,我不确定为什么@Lars 不鼓励这样做,甚至将其描述为 "not possible"。 SAP 本身推荐它,他们的很多工具都依赖它,比如 SAP Cloud Control Center。它非常适合某些任务,在常规完整备份之上

我使用这个简单的命令:

在 SHH 中转到您的备份文件夹, 创建您的文件夹以包含备份, 授予该文件夹权限以在其中写入 HANA Studio:

cd /hana/bkps/
mkdir BACKUP_FLD_180101
chmod -R 777 BACKUP_FLD_180101/

接下来转到 HANA STUDIO 使用以下命令进行备份:

export "FLD_PRD"."*" AS BINARY INTO '/hana/bkps/BACKUP_FLD_180101' with replace threads 10

完成!!