阿里云上的SAP备份指南
1. 引言
1.1 文档目的与适用范围
本文档为在阿里云上部署SAP S/4HANA系统的企业提供完整的备份方案设计与实施指南。文档涵盖存储层、文件系统层以及数据库层三个维度的数据保护策略,帮助读者建立系统化的备份体系,确保业务数据安全与业务连续性。
本文档以SAP S/4HANA系统为例,适用于ABAP Platform或NetWeaver类系统的备份设计,数据库层面专注于SAP HANA数据库的备份与恢复,采用阿里云OSS Backint Agent作为核心备份通道。文档不涉及其他非HANA数据库的备份方案。
1.2 目标读者
本文档面向以下角色:
SAP Basis管理员:负责SAP系统的日常运维与数据库管理
云架构师:负责在阿里云上设计和规划SAP系统的基础设施
运维工程师:负责备份任务的执行、监控与故障排查
读者应具备基本的SAP系统管理经验和阿里云产品使用知识。
1.3 术语与缩略语
术语 | 全称 | 说明 |
RTO | Recovery Time Objective | 恢复时间目标,从故障发生到系统恢复正常运行的最大可接受时间 |
RPO | Recovery Point Objective | 恢复点目标,从故障发生时可接受的最大数据丢失量(以时间衡量) |
Backint | SAP Backint Interface | SAP定义的第三方备份工具集成接口标准 |
OSS | Object Storage Service | 阿里云对象存储服务 |
ECS | Elastic Compute Service | 阿里云弹性计算服务(云服务器) |
HANA | High-performance ANalytic Appliance | SAP自主研发的内存数据库 |
MDC | Multi-tenant Database Container | HANA多租户数据库容器架构 |
SID | System Identifier | SAP系统唯一标识符 |
RAM | Resource Access Management | 阿里云访问控制服务 |
KMS | Key Management Service | 阿里云密钥管理服务 |
2. 备份策略设计原则
2.1 RTO与RPO目标的制定
RTO和RPO是备份策略设计的基础指标。RTO决定了系统需要具备多快的恢复能力,直接影响备份介质的选择和恢复流程的设计;RPO决定了可以容忍的最大数据丢失量,直接影响备份频率和日志备份间隔的设定。
对于SAP S/4HANA生产系统,建议根据业务关键程度设定不同级别的目标:
系统级别 | 典型RTO | 典型RPO | 备份策略要点 |
核心生产系统 | < 4小时 | < 15分钟 | 高频日志备份 + 每日全量 + 存储快照 |
非核心生产系统 | < 8小时 | < 1小时 | 每小时日志备份 + 每日全量 |
开发/测试系统 | < 24小时 | < 24小时 | 每日全量备份即可 |
2.2 备份类型说明
在SAP HANA环境中,主要涉及以下几种备份类型:
全量备份(Full Backup):对数据库的完整数据进行备份。全量备份是所有恢复操作的基础,建议至少每日执行一次。
增量备份(Incremental Backup):仅备份自上次任意类型备份以来发生变更的数据块。增量备份体积小、速度快,适合在全量备份之间的时间窗口执行。
差异备份(Differential Backup):仅备份自上次全量备份以来发生变更的数据块。恢复时只需要最近一次全量备份加上最近一次差异备份。
日志备份(Log Backup):连续备份数据库的事务日志(Redo Log)。日志备份是实现时间点恢复(Point-in-Time Recovery)的关键,应以高频率自动执行。
2.3 备份频率与保留策略
备份频率和保留策略需要在数据安全性、存储成本和运维复杂度之间取得平衡。以下是针对SAP S/4HANA生产系统的建议:
数据全量备份:每日一次,建议在业务低峰期执行(如凌晨2:00-5:00)
数据增量/差异备份:每6-12小时执行一次,填补全量备份之间的数据保护空窗
日志备份:每15分钟自动执行一次(核心生产系统),确保RPO在可控范围内
存储快照:每日一次或根据变更频率调整,作为快速恢复的补充手段
保留策略方面,建议遵循分层保留原则:日备份保留7-14天,周备份保留4-8周,月备份保留6-12个月。对于合规性要求较高的行业,可能需要保留更长时间的备份数据。
2.4 备份窗口与业务影响评估
SAP HANA的在线备份能力允许在数据库正常运行期间执行备份操作,对前端业务的影响较小。但备份过程仍会消耗一定的CPU、内存和I/O资源,因此需要合理规划备份窗口。
建议在业务低峰期执行全量备份,日志备份由于数据量较小可全天候执行。在首次部署备份方案时,应进行备份性能测试,记录不同备份类型的耗时和资源消耗情况,以便后续优化。
2.5 3-2-1备份原则在阿里云环境中的落地
3-2-1备份原则要求:至少保存3份数据副本,使用2种不同的存储介质,其中1份存放在异地。在阿里云环境中,该原则可以通过以下方式落地:
3份副本:在线数据(ECS云盘上的HANA数据文件)+ 备份数据(OSS中的Backint备份)+ 云盘快照
2种介质:阿里云块存储(ESSD云盘)+ 阿里云对象存储(OSS)
1份异地:利用OSS的跨地域复制(Cross-Region Replication)功能,将备份数据同步至另一个地域的OSS Bucket中
3. 存储层备份
3.1 阿里云块存储(EBS)快照
3.1.1 云盘快照的工作原理
阿里云云盘快照采用增量快照机制。首次创建快照时,会完整复制云盘上的所有数据;后续每次快照仅记录自上一次快照以来发生变更的数据块。尽管采用增量存储,每个快照在逻辑上都是完整的,可以独立用于恢复操作。
快照数据存储在阿里云的分布式对象存储系统中,具备高可靠性(99.9999999%),与原始云盘的存储介质物理隔离,即使云盘损坏也不影响快照数据的安全性。
3.1.2 自动快照策略配置
通过阿里云控制台或API可以创建自动快照策略,定义快照的创建时间、重复周期和保留天数。建议为SAP S/4HANA系统的所有数据云盘(包括/hana/data、/hana/log、/usr/sap等挂载点对应的云盘)配置自动快照策略。
推荐配置:每日凌晨创建快照,保留7-14天。对于HANA数据盘,应在全量数据库备份之前或之后创建快照,以确保数据一致性。
3.1.3 基于HANA Storage Snapshot的一致性快照
直接对运行中的数据库所在云盘创建快照,可能导致快照数据处于不一致状态(即快照包含部分写入的数据页)。SAP HANA原生提供了Storage Snapshot功能,通过 BACKUP DATA CREATE SNAPSHOT 和 BACKUP DATA CLOSE SNAPSHOT 两个SQL命令,在存储快照创建前后"通知"HANA数据库,使其主动完成Savepoint刷盘并冻结数据文件写入,从而保证快照的应用一致性。
完整流程分为三个步骤:
步骤一:准备HANA内部快照
以具备BACKUP OPERATOR或BACKUP ADMIN权限的用户连接HANA数据库,执行以下SQL命令。HANA会触发Savepoint,将内存中的脏页刷写到磁盘,并冻结数据文件的写入操作:
BACKUP DATA FOR FULL SYSTEM CREATE SNAPSHOT COMMENT '<快照描述信息>';
执行成功后,需要通过查询备份目录获取此次操作的 BACKUP_ID,后续步骤会用到:
SELECT BACKUP_ID FROM M_BACKUP_CATALOG
WHERE ENTRY_TYPE_NAME = 'data snapshot'
AND STATE_NAME = 'prepared'
ORDER BY UTC_START_TIME DESC;
步骤二:创建阿里云ECS云盘快照
在HANA准备就绪后(此时数据文件处于一致状态),调用阿里云API创建底层存储快照。建议对HANA数据卷(/hana/data)和日志卷(/hana/log)同时创建快照,确保多卷之间的时间点一致性。可以通过阿里云CLI执行:
aliyun ecs CreateSnapshot --DiskId <data-disk-id> --SnapshotName "hana-data-<timestamp>"
aliyun ecs CreateSnapshot --DiskId <log-disk-id> --SnapshotName "hana-log-<timestamp>"
步骤三:确认或放弃快照
根据存储快照是否创建成功,执行对应的SQL命令更新HANA备份目录:
快照创建成功时,确认备份并记录外部标识:
BACKUP DATA FOR FULL SYSTEM CLOSE SNAPSHOT BACKUP_ID <backup_id> SUCCESSFUL '<快照标识>';
快照创建失败时,放弃本次快照操作:
BACKUP DATA FOR FULL SYSTEM CLOSE SNAPSHOT BACKUP_ID <backup_id> UNSUCCESSFUL;
上述三步流程可以编写自动化脚本,结合cron定时执行。HANA数据文件的冻结时间仅覆盖步骤二(存储快照API调用),通常在秒级完成,对业务影响极小。
3.1.4 跨地域快照复制
对于有容灾需求的场景,可以将快照复制到另一个阿里云地域。通过阿里云控制台或API调用 CopySnapshot 接口,可以将快照从源地域异步复制到目标地域。复制完成后,可以在目标地域基于快照创建云盘并挂载到新的ECS实例,实现跨地域的系统恢复。
3.1.5 快照的恢复流程
当需要通过快照恢复数据时,可以选择以下两种方式:
回滚云盘:将云盘回滚到指定快照时间点的状态。此操作需要先停止ECS实例,回滚后实例上的数据将恢复到快照创建时的状态。适用于整盘恢复的场景。
基于快照创建云盘:以快照为数据源创建新的云盘,挂载到目标ECS实例上。此方式不影响原有系统的运行,适用于数据验证、测试恢复或部分数据提取的场景。
完成存储层的卷恢复或云盘挂载后,需要启动HANA并执行数据库级别的恢复操作。由于备份时使用了HANA Storage Snapshot机制,恢复时需指定 USING SNAPSHOT 关键字:
恢复到快照时间点(不回放日志):
RECOVER DATA USING SNAPSHOT CLEAR LOG;
配合日志备份做时间点恢复(将数据库恢复到快照之后的某个时间点):
RECOVER DATABASE UNTIL TIMESTAMP '<yyyy-MM-dd HH:mm:ss>' CLEAR LOG USING SNAPSHOT;
如果是MDC多租户环境,需要分别恢复System DB和Tenant DB。System DB使用 recoverSys.py 脚本恢复,Tenant DB通过SQL命令恢复:
RECOVER DATABASE FOR <Tenant-SID> UNTIL TIMESTAMP '<yyyy-MM-dd HH:mm:ss>' CLEAR LOG USING SNAPSHOT;
3.2 快照与其他备份方式的协同
云盘快照应定位为SAP系统整体备份方案的补充手段,而非替代数据库级别的备份。快照的核心价值在于快速恢复整个卷的能力,适合应对磁盘损坏、操作系统崩溃等基础设施层面的故障。
快照备份的优势包括:创建速度快(通常在秒到分钟级别完成)、恢复操作简单直观、不依赖数据库层面的备份工具。其局限性在于:无法实现数据库级别的时间点恢复、快照粒度为整个云盘、无法单独恢复个别表或数据库对象。
因此,建议将云盘快照与HANA数据库的Backint备份结合使用:Backint备份提供细粒度的数据库级恢复能力(包括时间点恢复),云盘快照提供快速的基础设施级恢复能力。两者互为补充,共同构成多层次的数据保护体系。
4. 文件系统层备份
4.1 需要备份的关键目录
SAP S/4HANA系统涉及的关键目录及其备份优先级如下:
目录路径 | 内容说明 | 备份优先级 |
/usr/sap/ | SAP实例目录,包含应用服务器的可执行文件、配置和日志 | 高 |
/sapmnt/ | SAP共享目录,包含全局Profile文件和内核文件 | 高 |
/usr/sap/trans | SAP传输目录,包含传输请求(Transport Request)文件 | 高 |
/usr/sap//SYS | SAP全局配置目录,包含系统级别的配置文件 | 高 |
/hana/shared/ | HANA共享目录,包含HANA安装文件和配置 | 中 |
/etc/fstab | 文件系统挂载配置 | 中 |
/etc/sysconfig/network* | 网络配置文件 | 中 |
/etc/hosts | 主机名解析配置 | 中 |
注意:HANA的数据文件(/hana/data)和日志文件(/hana/log)不需要通过文件系统级别的备份来保护,它们应通过HANA数据库自身的备份机制(详见第5章)进行保护。
4.2 基于阿里云OSS的文件备份方案
4.2.1 ossutil工具介绍
ossutil是阿里云提供的OSS命令行工具,支持文件的上传、下载、同步、复制等操作。它是实现文件系统级别备份到OSS的推荐工具。ossutil支持增量同步、断点续传和并发上传,适合大批量文件的备份场景。
安装方式(以Linux x86_64为例):
curl -o ossutil64 https://gosspublic.alicdn.com/ossutil/install.sh
chmod 755 ossutil64
./ossutil64 config # 根据提示配置AccessKey和Endpoint
4.2.2 定时备份脚本设计
以下是一个基于cron和ossutil实现定时备份的示例方案。该脚本将SAP关键目录同步到OSS Bucket中,并按日期组织备份数据:
#!/bin/bash
# sap_file_backup.sh - SAP文件系统备份脚本
DATE=$(date +%Y%m%d)
SID="S4H"
BUCKET="oss://sap-backup-bucket"
PREFIX="${BUCKET}/file-backup/${SID}/${DATE}"
# 同步SAP关键目录到OSS
ossutil64 sync /usr/sap/${SID}/ ${PREFIX}/usr_sap_${SID}/ --update
ossutil64 sync /sapmnt/${SID}/ ${PREFIX}/sapmnt_${SID}/ --update
ossutil64 sync /usr/sap/trans/ ${PREFIX}/usr_sap_trans/ --update
# 备份系统配置文件
tar czf /tmp/etc_backup_${DATE}.tar.gz /etc/fstab /etc/hosts /etc/sysconfig/
ossutil64 cp /tmp/etc_backup_${DATE}.tar.gz ${PREFIX}/
rm -f /tmp/etc_backup_${DATE}.tar.gz
将该脚本配置到cron定时任务中:
0 3 * * * /opt/scripts/sap_file_backup.sh >> /var/log/sap_file_backup.log 2>&1
4.2.3 文件级增量备份策略
ossutil的sync命令默认支持增量同步:通过 --update 参数,仅同步源端比目标端更新的文件。这意味着每次执行同步时,只有自上次备份以来发生变更的文件才会被上传到OSS,大幅减少备份时间和带宽消耗。
对于需要保留历史版本的场景,可以启用OSS Bucket的版本控制(Versioning)功能,每次文件更新都会自动保留旧版本,可以按需恢复到任意历史版本。
4.3 备份验证与恢复演练
文件备份完成后,建议执行以下验证步骤:
使用ossutil的ls命令检查备份文件是否完整上传到OSS
随机抽取若干文件从OSS下载到临时目录,与源文件进行MD5校验比对
定期(如每季度)执行完整的文件恢复演练,将OSS中的备份数据恢复到测试环境中,验证数据完整性和可用性
恢复流程为反向操作:使用 ossutil sync 将OSS中的备份数据同步到目标服务器的相应目录,恢复文件权限和属主后启动SAP服务。
5. 数据库层备份(SAP HANA)
5.1 SAP HANA备份基础
5.1.1 HANA备份类型
SAP HANA提供三种主要的备份类型:
数据备份(Data Backup):将HANA数据库的持久化数据(数据卷中的数据页和Undo日志)备份到指定目标。数据备份是恢复操作的起点,分为全量备份、增量备份和差异备份三种子类型。
日志备份(Log Backup):将数据库的Redo Log段(Log Segment)备份到指定目标。日志备份在数据备份的基础上,通过回放事务日志实现时间点恢复。HANA在 log_mode 设置为 normal 时自动执行日志备份。
快照备份(Storage Snapshot):利用底层存储的快照能力创建数据库备份。快照备份速度极快,但依赖于存储层的快照功能,且无法单独实现时间点恢复。
5.1.2 备份目标:Backint vs. 文件系统
HANA支持两种备份目标:
对比维度 | Backint接口 | 文件系统 |
备份目标 | 通过Backint代理写入第三方存储(如OSS) | 写入本地或NFS挂载的文件系统目录 |
扩展性 | 近乎无限(受OSS存储容量限制) | 受磁盘空间限制 |
管理复杂度 | 需要安装和配置Backint代理 | 开箱即用,无需额外工具 |
容灾能力 | 天然异地存储(OSS跨地域复制) | 需要额外配置远程复制 |
适用场景 | 生产系统(推荐) | 开发/测试系统或作为本地缓存 |
对于阿里云上的SAP S/4HANA生产系统,推荐使用Backint接口配合OSS作为主要备份目标,以获得更好的扩展性和容灾能力。
5.1.3 多租户数据库容器(MDC)的备份考量
SAP HANA 2.0采用多租户数据库容器(MDC)架构,一个HANA实例可以承载多个租户数据库(Tenant Database)。在MDC架构下,备份操作需要注意以下几点:
System DB和每个Tenant DB需要独立配置备份策略和执行备份操作
System DB的备份包含系统元数据,是恢复整个HANA实例的前提
Tenant DB的备份可以独立恢复到其他HANA实例,支持跨系统的数据库迁移
建议在OSS Backint Agent的配置中使用 storage-prefix 参数区分不同数据库的备份路径
5.2 OSS Backint Agent for SAP HANA
详情请参考阿里云OSS官方文档:OSS Backint Agent for SAP HANA
5.2.1 方案架构与工作原理
OSS Backint Agent是阿里云提供的、符合SAP Backint接口标准的备份代理工具。它使SAP HANA能够通过SAP标准的Backint接口,将备份数据直接传输到阿里云对象存储OSS中。
Backint接口标准:SAP Backint for Oracle/SAP HANA是SAP定义的备份集成接口规范。HANA数据库在执行备份时,通过调用Backint代理程序来完成数据的传输操作。Backint代理负责接收HANA发送的数据流,并将其写入到目标存储系统。
管道传输模式:OSS Backint Agent采用管道(Pipe)模式工作。HANA将备份数据以流的形式通过管道传递给Backint Agent,Agent再以分片并发上传的方式将数据写入OSS。这种模式避免了在本地磁盘上生成临时备份文件,节省了本地存储空间。
数据流路径:HANA Database → Pipe → OSS Backint Agent → Multipart Upload → Alibaba Cloud OSS Bucket。整个过程中备份数据不落地本地磁盘,直接从内存流式传输到OSS。
5.2.2 安装与部署
前提条件:
已部署SAP HANA数据库的阿里云ECS实例
已确定SAP HANA的SID(System Identifier)
已创建用于存储备份数据的OSS Bucket(建议与ECS实例在同一地域,使用内网Endpoint传输以节省流量费用)
ECS实例具备访问OSS的网络连通性
安装步骤:
以用户(如s4hadm)登录HANA所在的ECS实例,执行以下命令:
创建Backint配置目录:
mkdir -p /usr/sap/<SID>/SYS/global/hdb/opt/hdbconfig/
下载安装脚本:
curl -o install.sh https://gosspublic.alicdn.com/hdbbackint/install.sh
执行安装:
chmod +x install.sh && ./install.sh <SID>
验证安装:
/usr/sap/<SID>/SYS/global/hdb/opt/hdbbackint -v
如果安装成功,上述命令将输出OSS Backint Agent的版本信息。
5.2.3 认证方式配置
OSS Backint Agent支持多种认证方式连接阿里云OSS,以下按推荐程度排序:
方式一:ECS RAM角色(推荐)
当HANA部署在阿里云ECS实例上时,推荐使用ECS RAM角色认证。该方式无需在配置文件中保存任何密钥信息,Agent通过ECS实例的元数据服务自动获取临时安全凭证。
# oss-backint-agent.ini
[credentials]
mode = EcsRamRole
前提:需要在阿里云控制台为ECS实例绑定一个RAM角色,并确保该角色具有对目标OSS Bucket的读写权限。
方式二:AccessKey对
直接在配置文件中指定阿里云RAM用户的AccessKey ID和AccessKey Secret。该方式配置简单,但安全性较低,不建议在生产环境中使用。
# oss-backint-agent.ini
[credentials]
access-key-id = <your-access-key-id>
access-key-secret = <your-access-key-secret>
方式三:RAM角色ARN(跨账号场景)
当OSS Bucket属于另一个阿里云账号时,可以使用RAM角色ARN方式,通过STS(Security Token Service)获取临时凭证实现跨账号访问。
# oss-backint-agent.ini
[credentials]
mode = RamRoleArn
access-key-id = <your-access-key-id>
access-key-secret = <your-access-key-secret>
role-arn = acs:ram::<account-id>:role/<role-name>
role-session-name = backint-session
方式四:外部进程自定义认证
通过配置一个外部可执行程序来获取认证凭证。Agent会调用该程序并解析其JSON格式的输出以获取临时凭证。适用于需要集成企业内部密钥管理系统的场景。
# oss-backint-agent.ini
[credentials]
mode = Process
process-command = /usr/local/bin/get_credentials.sh
5.2.4 核心配置参数详解
OSS Backint Agent的配置文件为 oss-backint-agent.ini,以下是各类参数的详细说明:
基础参数
参数 | 必填 | 默认值 | 说明 |
bucket-name | 是 | — | 用于存储备份数据的OSS Bucket名称 |
region | 是 | — | OSS Bucket所在的地域ID(如 cn-hangzhou) |
hana-sid | 是 | — | SAP HANA的系统标识符(SID) |
endpoint | 否 | 自动推断 | OSS的访问域名,建议使用内网Endpoint |
storage-prefix | 否 | SAP-HANA-Backint | 备份对象在OSS中的路径前缀 |
性能调优参数
参数 | 默认值 | 说明 |
job | 5 | 并发备份通道数,每个通道独立传输数据 |
pipe-parallel | 3 | 每个通道内的并发上传线程数 |
pipe-part-size | 6 MiB | 分片上传的分片大小,影响大文件传输效率 |
内存消耗估算公式:峰值内存 ≈ job × pipe-parallel × pipe-part-size。例如默认配置下:5 × 3 × 6 MiB = 90 MiB。对于大型数据库,可以适当增大 pipe-part-size 以提升传输效率,但需注意内存消耗的相应增长。
存储策略参数
参数 | 默认值 | 说明 |
object-storage-class | Standard | 备份对象的存储类型:Standard(标准)、IA(低频)、Archive(归档) |
object-acl | — | 备份对象的访问控制列表 |
object-tagging | — | 为备份对象添加标签,便于成本分摊和生命周期管理 |
加密配置参数
参数 | 默认值 | 说明 |
server-side-encryption | — | 服务端加密方式:AES256、KMS、SM4 |
server-side-encryption-key-id | — | 使用KMS加密时指定的密钥ID |
网络与日志参数
参数 | 默认值 | 说明 |
read-timeout | — | 数据读取超时时间 |
connect-timeout | — | 连接建立超时时间 |
proxy | — | HTTP/HTTPS代理地址 |
skip-verify-cert | false | 是否跳过SSL证书验证(不建议在生产环境启用) |
log-level | info | 日志级别:debug、info、warn、error |
log-file | — | 日志文件路径,便于故障排查 |
5.2.5 启用Backint备份
完成OSS Backint Agent的安装和配置后,需要在HANA数据库中启用Backint作为备份目标。
步骤一:配置HANA使用Backint进行数据备份
以SYSTEM用户连接HANA数据库,执行以下SQL命令:
ALTER SYSTEM ALTER CONFIGURATION ('global.ini', 'SYSTEM')
SET ('backup', 'catalog_backup_using_backint') = 'true'
WITH RECONFIGURE;
ALTER SYSTEM ALTER CONFIGURATION ('global.ini', 'SYSTEM')
SET ('backup', 'data_backup_parameter_file') =
'/usr/sap/<SID>/SYS/global/hdb/opt/hdbconfig/oss-backint-agent.ini'
WITH RECONFIGURE;
ALTER SYSTEM ALTER CONFIGURATION ('global.ini', 'SYSTEM')
SET ('backup', 'log_backup_using_backint') = 'true'
WITH RECONFIGURE;
ALTER SYSTEM ALTER CONFIGURATION ('global.ini', 'SYSTEM')
SET ('backup', 'log_backup_parameter_file') =
'/usr/sap/<SID>/SYS/global/hdb/opt/hdbconfig/oss-backint-agent.ini'
WITH RECONFIGURE;
步骤二:设置日志模式
为支持时间点恢复,需要将HANA的日志模式设置为 normal(默认值为 overwrite):
ALTER SYSTEM ALTER CONFIGURATION ('global.ini', 'SYSTEM')
SET ('persistence', 'log_mode') = 'normal'
WITH RECONFIGURE;
步骤三:验证配置
执行测试备份以验证Backint通道是否正常工作:
BACKUP DATA USING BACKINT ('oss-backint-agent-test');
如果备份成功完成且没有报错,说明OSS Backint Agent已正确配置。可以登录阿里云OSS控制台,在目标Bucket中确认备份文件已生成。
5.2.6 数据备份操作
全量数据备份
通过SAP HANA Studio、HANA Cockpit或SQL命令执行全量数据备份:
BACKUP DATA USING BACKINT ('COMPLETE_DATA_BACKUP');
备注:括号中的字符串为备份前缀(Backup Prefix),用于标识备份用途,可自定义。
增量与差异数据备份
增量备份和差异备份可以显著减少备份时间和存储空间:
-- 增量备份(自上次任意类型备份以来的变更)
BACKUP DATA INCREMENTAL USING BACKINT ('INCR_BACKUP');
-- 差异备份(自上次全量备份以来的变更)
BACKUP DATA DIFFERENTIAL USING BACKINT ('DIFF_BACKUP');
备份调度
建议通过以下方式设置自动备份调度:
SAP DBA Cockpit / DB13:SAP提供的标准数据库管理工具,可以在SAP GUI中配置备份计划。适用于SAP Basis管理员。
操作系统crontab:通过cron定时执行hdbsql命令实现备份调度。灵活性高,适合运维自动化场景。
crontab示例(每日凌晨2点执行全量备份):
0 2 * * * /usr/sap/<SID>/HDB<inst>/exe/hdbsql -U BACKUP_KEY "BACKUP DATA USING BACKINT ('DAILY_FULL')"
5.2.7 日志备份配置
日志备份是实现时间点恢复的关键组件。在HANA的日志模式设置为 normal 且启用了Backint日志备份后,HANA会在日志段(Log Segment)写满时自动触发日志备份。
自动日志备份:当 log_mode = normal 且 log_backup_using_backint = true 时,HANA会自动将写满的日志段通过Backint Agent传输到OSS。
日志备份间隔:可以通过以下参数控制日志备份的最大间隔时间,确保即使在低负载期间(日志段未写满时)也能定期执行日志备份:
ALTER SYSTEM ALTER CONFIGURATION ('global.ini', 'SYSTEM')
SET ('persistence', 'log_backup_timeout_s') = '900'
WITH RECONFIGURE;
上述配置将日志备份的最大间隔设置为900秒(15分钟),即使日志段未写满,也会在15分钟后自动触发备份。根据RPO需求调整此值。
5.2.8 备份监控与管理
HANA Studio / SAP HANA Cockpit监控
SAP HANA Studio和HANA Cockpit提供了图形化的备份监控界面,可以查看备份历史记录、备份状态、备份耗时和备份大小等信息。建议运维团队定期检查备份状态,及时发现并处理备份失败的情况。
备份目录(Backup Catalog)管理
HANA维护一个备份目录(Backup Catalog),记录所有历史备份的元数据信息。随着时间推移,备份目录会持续增长,建议定期清理过期的备份目录条目:
-- 查看备份目录
SELECT * FROM M_BACKUP_CATALOG ORDER BY UTC_START_TIME DESC;
-- 删除指定日期之前的备份目录条目(同时删除OSS中的备份文件)
BACKUP CATALOG DELETE ALL BEFORE TIMESTAMP '2026-01-01 00:00:00'
USING BACKINT COMPLETE;
OSS侧备份文件的生命周期管理
通过阿里云OSS的生命周期规则(Lifecycle Rule),可以自动将老旧的备份数据转换为更低成本的存储类型,或在超过保留期限后自动删除:
近期备份(0-30天):保持标准存储(Standard),保证快速恢复能力
中期备份(30-90天):自动转换为低频访问存储(IA),降低约50%存储成本
长期备份(90天以上):自动转换为归档存储(Archive),存储成本降低至标准存储的约25%
5.3 数据库恢复
5.3.1 全量恢复
全量恢复将数据库恢复到最近一次数据备份的状态。在HANA Studio或Cockpit中选择目标备份进行恢复,或使用命令行方式:
-- 停止HANA数据库
HDB stop
-- 使用hdbnsutil执行恢复
hdbnsutil -recoverSys --command="RECOVER DATA USING BACKINT"
全量恢复适用于数据库完全损坏、需要回滚到已知良好状态等场景。
5.3.2 时间点恢复(Point-in-Time Recovery)
时间点恢复允许将数据库恢复到过去任意时间点的状态,前提是:拥有该时间点之前的一个完整数据备份,以及从该备份到目标时间点之间的所有日志备份。
RECOVER DATABASE UNTIL TIMESTAMP '2026-03-20 14:30:00'
USING BACKINT;
时间点恢复是应对数据误操作(如误删表、错误的批量更新)最有效的恢复手段。
5.3.3 归档存储类型对象的解冻注意事项
如果备份数据已通过生命周期规则转换为归档存储类型(Archive),在执行恢复操作前,必须先将相关备份对象解冻(Restore/Unfreeze)。归档存储的解冻通常需要1-5分钟(快速解冻模式)或数小时(标准解冻模式),这将直接影响恢复的RTO。
建议在OSS生命周期策略中,为可能需要紧急恢复的近期备份保留标准存储类型,仅对确定不需要快速恢复的长期备份使用归档存储。
5.3.4 恢复演练建议
备份方案的有效性必须通过定期恢复演练来验证。建议:
每季度至少执行一次完整的数据库恢复演练,覆盖全量恢复和时间点恢复两种场景
恢复演练应在独立的测试环境中进行,避免影响生产系统
记录每次恢复演练的耗时、遇到的问题和改进措施,持续优化恢复流程
将恢复演练纳入运维团队的标准操作流程(SOP),确保相关人员熟悉恢复步骤
6. 备份方案整体架构
6.1 各层备份方式的协同关系
综合前述各章节的内容,阿里云上SAP S/4HANA系统的完整备份方案由存储层、文件系统层和数据库层三个维度共同构成,各层之间互为补充,形成纵深防御的数据保护体系。
备份层面 | 备份方式 | 保护对象 | 恢复粒度 | 典型RTO |
存储层 | ECS云盘快照 | 整个磁盘卷 | 卷级别 | 分钟级 |
文件系统层 | ossutil同步至OSS | SAP应用文件与配置 | 文件级别 | 小时级 |
数据库层 | HANA Backint至OSS | HANA数据库数据与日志 | 数据库/时间点 | 小时级 |
在实际故障恢复中,应根据故障类型选择对应的恢复路径。对于磁盘故障,优先使用云盘快照进行卷级恢复;对于数据库数据丢失或损坏,使用HANA Backint备份进行数据库级恢复;对于应用层配置丢失,使用文件系统备份恢复相关目录。
6.2 备份架构参考
典型的备份架构包含以下关键组件和数据流:
SAP S/4HANA应用服务器(ECS实例):运行SAP应用层服务,其关键目录通过ossutil定时同步到OSS
SAP HANA数据库服务器(ECS实例):运行HANA数据库,通过OSS Backint Agent将数据备份和日志备份直接传输到OSS
阿里云OSS Bucket(主地域):集中存储所有备份数据,配置生命周期策略实现分层存储
阿里云OSS Bucket(灾备地域):通过跨地域复制接收备份数据副本,提供异地容灾能力
ECS云盘快照:为所有关键云盘配置自动快照策略,提供快速的卷级恢复能力
6.3 备份数据的分层存储策略
利用阿里云OSS的多种存储类型,可以根据备份数据的访问频率实施分层存储策略,在保障恢复能力的同时优化存储成本:
存储层级 | OSS存储类型 | 适用数据 | 恢复时效 | 相对成本 |
热数据层 | 标准存储(Standard) | 近7天的备份 | 即时可用 | 100% |
温数据层 | 低频访问(IA) | 7-90天的备份 | 即时可用 | ~50% |
冷数据层 | 归档存储(Archive) | 90天以上的备份 | 需解冻(分钟-小时级) | ~25% |
通过OSS生命周期规则自动化实现存储类型的流转,无需人工干预。建议在配置生命周期规则时,结合业务的RTO和RPO需求确定各层级的时间阈值。
7. 安全与合规
7.1 备份数据传输加密
OSS Backint Agent与阿里云OSS之间的数据传输默认使用HTTPS协议(SSL/TLS加密),确保备份数据在网络传输过程中不被窃听或篡改。建议保持 skip-verify-cert = false 的默认设置,不要跳过SSL证书验证。
对于文件系统备份,ossutil同样默认使用HTTPS协议与OSS通信。在网络配置层面,建议通过阿里云VPC内网Endpoint访问OSS,备份流量不经过公网,进一步提升安全性并降低延迟。
7.2 备份数据静态加密
阿里云OSS支持多种服务端加密(Server-Side Encryption)方式,对存储在OSS中的备份数据进行静态加密:
SSE-AES256:使用AES-256算法进行加密,密钥由OSS管理。配置最简单,适用于一般安全需求。
SSE-KMS:使用阿里云密钥管理服务(KMS)管理加密密钥。支持自定义密钥(CMK),提供更细粒度的密钥管理能力,支持密钥轮转和审计。推荐对安全合规要求较高的企业使用。
SSE-SM4:使用国密SM4算法进行加密。适用于有国密算法合规要求的行业和企业。
在OSS Backint Agent的配置文件中,通过 server-side-encryption 参数指定加密方式,使用KMS时还需通过 server-side-encryption-key-id 参数指定密钥ID。
7.3 访问控制与权限最小化
遵循最小权限原则(Principle of Least Privilege),为备份相关的RAM角色或用户配置必要的最小权限集。以下是针对OSS Backint备份场景的RAM策略示例:
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"oss:PutObject",
"oss:GetObject",
"oss:DeleteObject",
"oss:ListObjects",
"oss:AbortMultipartUpload",
"oss:ListMultipartUploads"
],
"Resource": [
"acs:oss:*:*:sap-backup-bucket",
"acs:oss:*:*:sap-backup-bucket/*"
]
}
]
}
建议为不同的备份用途(如数据备份、日志备份、文件备份)创建独立的RAM角色,分别授权到对应的OSS路径前缀,避免权限交叉。
7.4 备份审计与日志记录
建议启用以下审计和日志记录机制,满足合规审计需求:
OSS访问日志:开启OSS Bucket的访问日志记录功能,记录所有对备份数据的访问操作(读、写、删除)。日志存储在单独的日志Bucket中,可用于事后审计。
ActionTrail操作审计:通过阿里云操作审计服务记录RAM用户和角色对OSS资源的API调用记录,包括谁在什么时间执行了什么操作。
Backint Agent日志:通过配置文件中的 log-level 和 log-file 参数,记录Backint Agent的运行日志,便于备份任务的故障排查和执行审计。
8. 运维最佳实践
8.1 备份任务监控与告警配置
备份任务的可靠执行是数据保护的基础。建议建立多层次的监控体系:
HANA层面:通过SAP HANA Cockpit或HANA Studio定期检查备份状态,关注备份失败告警。可以配置HANA的告警机制,在备份失败时自动发送邮件通知。
操作系统层面:对于通过crontab调度的备份脚本,将脚本输出重定向到日志文件,通过日志监控工具(如logrotate + 脚本巡检)检测异常。
云平台层面:利用阿里云云监控(CloudMonitor)服务,配置自定义监控指标和告警规则。可以监控OSS Bucket的请求成功率、存储容量增长趋势等指标。
8.2 定期恢复演练的流程建议
恢复演练是验证备份有效性的唯一手段,建议制定并遵循以下演练流程:
制定演练计划:明确演练目标(全量恢复 / 时间点恢复)、演练环境、参与人员和预期时间窗口
准备演练环境:在独立的ECS实例上部署与生产系统相同版本的HANA数据库,配置对应的OSS Backint Agent
执行恢复操作:按照恢复SOP执行数据库恢复,记录每个步骤的耗时
验证数据一致性:恢复完成后,检查数据库的关键表数据、行数统计和业务校验规则是否符合预期
编写演练报告:记录演练过程中发现的问题、实际RTO、改进建议,更新恢复SOP
8.3 备份性能调优指南
OSS Backint Agent的备份性能受多个参数的共同影响。以下是性能调优的关键思路:
内存消耗估算:Agent运行时的峰值内存消耗约为 job × pipe-parallel × pipe-part-size。默认配置(5 × 3 × 6 MiB)约消耗90 MiB内存。在HANA服务器内存资源充足时,可以适当增大这些参数以提升备份速度。
大数据库优化:对于数据量超过1 TB的HANA数据库,建议增大 pipe-part-size(如调整为64 MiB或128 MiB),并适当增加 job 数量,以充分利用网络带宽和并发传输能力。单个管道的默认最大传输量约为60 GB,超过此限制需要增大 pipe-part-size。
网络带宽:确保ECS实例到OSS之间的网络带宽充足。使用VPC内网Endpoint访问OSS可以获得稳定的高带宽、低延迟连接。如果备份速度受限于网络,可以考虑升级ECS实例的网络规格。
8.4 常见问题排查
问题现象 | 可能原因 | 解决方案 |
备份失败:连接OSS超时 | 网络不通或Endpoint配置错误 | 检查VPC安全组规则,确认OSS Endpoint正确,优先使用内网Endpoint |
备份失败:权限拒绝 | RAM角色或AccessKey权限不足 | 检查RAM策略是否包含所需的OSS操作权限,确认Bucket名称和路径正确 |
备份速度慢 | 参数配置不当或网络带宽不足 | 增大job、pipe-parallel和pipe-part-size参数,检查网络带宽利用率 |
恢复失败:对象不可访问 | 备份数据已转为归档存储类型 | 先通过OSS控制台或API解冻(Restore)相关对象,再执行恢复 |
9. 附录
9.1 完整配置文件示例
以下是一个完整的 oss-backint-agent.ini 配置文件示例,采用ECS RAM角色认证方式:
# ===================================================
# OSS Backint Agent Configuration
# SAP HANA Backup to Alibaba Cloud OSS
# ===================================================
[credentials]
mode = EcsRamRole
[oss]
bucket-name = sap-hana-backup-prod
region = cn-hangzhou
endpoint = https://oss-cn-hangzhou-internal.aliyuncs.com
hana-sid = S4H
storage-prefix = SAP-HANA-Backint
[storage]
object-storage-class = Standard
# object-tagging = env=prod&app=sap
[encryption]
server-side-encryption = KMS
server-side-encryption-key-id = <your-kms-key-id>
[performance]
job = 5
pipe-parallel = 3
pipe-part-size = 6
[network]
# proxy = http://proxy.example.com:8080
# connect-timeout = 30
# read-timeout = 60
skip-verify-cert = false
[logging]
log-level = info
log-file = /var/log/sap/oss-backint-agent.log
9.2 常用SQL命令速查表
操作 | SQL命令 |
执行全量数据备份 | BACKUP DATA USING BACKINT (''); |
执行增量数据备份 | BACKUP DATA INCREMENTAL USING BACKINT (''); |
执行差异数据备份 | BACKUP DATA DIFFERENTIAL USING BACKINT (''); |
查看备份目录 | SELECT * FROM M_BACKUP_CATALOG ORDER BY UTC_START_TIME DESC; |
查看备份进度 | SELECT * FROM M_BACKUP_PROGRESS; |
清理备份目录 | BACKUP CATALOG DELETE ALL BEFORE TIMESTAMP '' USING BACKINT COMPLETE; |
时间点恢复 | RECOVER DATABASE UNTIL TIMESTAMP '' USING BACKINT; |
设置日志备份间隔 | ALTER SYSTEM ALTER CONFIGURATION ('global.ini','SYSTEM') SET ('persistence','log_backup_timeout_s')='900' WITH RECONFIGURE; |
启用Backint数据备份 | ALTER SYSTEM ALTER CONFIGURATION ('global.ini','SYSTEM') SET ('backup','catalog_backup_using_backint')='true' WITH RECONFIGURE; |