写点什么

如何利用 S3 备份 SAP HANA 数据库

  • 2020-03-04
  • 本文字数:4183 字

    阅读完需:约 14 分钟

如何利用 S3 备份 SAP HANA 数据库

概述

在使用 SAP 的系统时,SAP HANA 作为底层的数据库对于支撑整个业务系统是十分重要的。在本篇博客中我们会介绍一下如何利用 AWS S3 服务进行数据库的备份。在利用 S3 进行备份之前,所有的备份文件都会存放在安装有 HANA 实例的 EBS 卷中,结构如下所示:


操作细节

利用 S3 进行备份我们会用到 Incron 作为工具,Incron 除了可以像 Cron 一样根据时间运行命令,还可以根据文件或者目录变化进行触发。因此在本篇博客中我们会监控 /backup 目录来触发备份行为。



假设我们备份文件的路径位/backup, 则目录下文件的详细信息如下:


col 1col 2col 3col 4col 5


  | 计划                       | 本地路径                                                               | 本地保留时间  | S3上保留时间
复制代码


数据备份 | 增量数据备份 – 每天


权量数据备份 – 每周 | System DB: /backup/data/SYSTEMDB


Tenant DB: /backup/data/DB_ | 7 或 15 天 | 依据业务而定日志备份 | 每 15 分钟自动备份 | System DB – /hana/log/SYSTEMDB


Tenant DB – /hana/log/DB_ | 7 或 15 天 | 依据业务而定


注意:实际上在后续的实际操作环节我所用到备份路径为:


/usr/sap/AWS/HDB00/backup/

安装 Incron

确认 Incron 是否已经安装:


Bash


# rpm -qa | grep -i incron
复制代码



如果没有安装,可以利用一下命令安装。


Bash


SLES # zypper install incron
复制代码


如果没有找到 incron,可能首先需要添加安装包库,命令如下:


Bash


zypper addrepo https://download.opensuse.org/repositories/utilities/SLE_12_SP4_Backports/utilities.repo zypper refresh zypper install incron
复制代码

配置 Incron

成功安装后,通过 incrontab -e 命令开始编辑脚本,命令会打开一个编辑器。


incrontab 的命令格式如下


– 想要监控的路径. Incron 不能自动监控子目录,所以我们要指定到具体文件所在的录上。


– This is one of several options:


  • IN_ACCESS,即文件被访问

  • IN_MODIFY,文件被 write

  • IN_ATTRIB,文件属性被修改,如 chmod、chown、touch 等

  • IN_CLOSE_WRITE,可写文件被 close

  • IN_CLOSE_NOWRITE,不可写文件被 close

  • IN_OPEN,文件被 open

  • IN_MOVED_FROM,文件被移走,如 mv

  • IN_MOVED_TO,文件被移来,如 mv、cp

  • IN_CREATE,创建新文件

  • IN_DELETE,文件被删除,如 rm

  • IN_DELETE_SELF,自删除,即一个可执行文件在执行时删除自己

  • IN_MOVE_SELF,自移动,即一个可执行文件在执行时移动自己

  • IN_UNMOUNT,宿主文件系统被 umount

  • IN_CLOSE,文件被关闭,等同于(IN_CLOSE_WRITE | IN_CLOSE_NOWRITE)

  • IN_MOVE,文件被移动,等同于(IN_MOVED_FROM | IN_MOVED_TO)


– 当事件被触发后所运行的命令。可以使用通配符来简化命令


$符号


$@ – 添加监控文件系统路径


$# – 添加事件相关文件名称


$% – 添加事件标记(文字)


$& – 添加事件标记 (数字)


# incrontab -l


利用 root 用户执行此命令查看当前脚本



# incrontab -e


打开编辑模版并将下面四个命令写入


Bash


/usr/sap/AWS/HDB00/backup/data/SYSTEMDB IN_MOVED_TO aws s3 cp $@/$# s3://hanabackup4me$@/$# --sse /usr/sap/AWS/HDB00/backup/data/DB_AWS IN_MOVED_TO aws s3 cp $@/$# s3://hanabackup4me$@/$# --sse /usr/sap/AWS/HDB00/backup/log/SYSTEMDB IN_MOVED_TO aws s3 cp $@/$# s3://hanabackup4me$@/$# --sse /usr/sap/AWS/HDB00/backup/log/DB_AWS IN_MOVED_TO aws s3 cp $@/$# s3://hanabackup4me$@/$# --sse
复制代码


命令解释:


/usr/sap/AWS/HDB00/backup/data/SYSTEMDB 被监控的文件目录,可以根据服务器上备份文件位置不同修改。


IN_MOVED_TO 触发事件,当有文件写入的时候出发命令 ()


aws s3 cp 事件出发后运行的命令


$@/ – /usr/sap/AWS/HDB00/backup/data/SYSTEMDB


$# – COMPLETE_DATA_BACKUP_databackup_0_1


s3://hanabackup4me# – s3://hanabackup4me usr/sap/AWS/HDB00//backup/data/SYSTEMDB/COMPLETE_DATA_BACKUP_databackup_0_1


sse – AWS S3 Server-side encryption


注意:在设置监控前就已经存在的文件不会被写入 S3.

S3 桶策略设置

对于前面提到的 S3 写入操作所需要的权限,我们可以通过将包含有下面策略的角色(IAM Role)绑定给 HANA 所在 EC2 实例来完成,策略大致如下:


Bash


{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowListAllBuckets",
"Action": [
"s3:ListAllMyBuckets"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::*"
},
{
"Sid": "AllowGetandPut",
"Action": [
"s3:GetObject",
"s3:PutObject",
"s3:ListBucket"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::hanabackup4me",
"arn:aws:s3:::hanabackup4me/*"
]
}
]
}
复制代码


监控 Incron 运行情况

可以通过在 /var/log/messages 中查看入下图所示消息来确保 Incron 正常运行



检查 S3 桶中文件


通过 aws s3 ls s3://{bucketname}/{path}/可以产看相应文件

从 s3 恢复文件

通过命令 aws s3 ls s3://bucketname/backup/data/SYSTEMDB/可以取回备份文件并利用相应工具恢复 HANA 数据库

参考文档

https://blogs.sap.com/2019/05/10/hana-backup-recovery-strategy-in-aws/


https://blogs.sap.com/2018/01/22/sap-hana-2.0-server-installation-and-update-by-the-sap-hana-academy/


https://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html


作者介绍:郭腾,AWS 中国团队的解决方案架构师,负责基于 AWS 的云计算方案架构咨询和设计。同时致力于 AWS 云服务在国内的应用和推广。在加入 AWS 之前,他曾就职于 SAP,从事技术支持和咨询相关工作。


原文链接:https://amazonaws-china.com/cn/blogs/china/how-to-back-up-hana-database-with-s3/


2020-03-04 20:52993

评论

发布
暂无评论
发现更多内容

持续交付的优势有哪些

Chihiro

#DevOps

DeepSeek + 焱融存储:王炸组合重构企业 AI 核心竞争力

焱融科技

高性能存储 AI存储 DeepSeek 焱融存储

Plaid | 数据库切换历程:从 AWS Aurora MySQL 到 TiDB 的迁移之旅

TiDB 社区干货传送门

迁移

KeyShot 2024.3 for mac(3D渲染和动画制作软件) 中文版系统要求

Rose

DevOps如何实现持续交付

Chihiro

#DevOps

NLLB 与 ChatGPT 双向优化:探索翻译模型与语言模型在小语种应用的融合策略

vivo互联网技术

人工智能 大语言模型 LORA微调

面向 Data+AI 的新一代智能数仓平台

阿里云大数据AI技术

大数据 Serverless 数据仓库 SaaS MaxCompute

英特尔至强6加持,以1台服务器抵7台性能

E科讯

DeepSeek 正重构人形机器人和具身大模型赛道!

机器人头条

科技 大模型 人形机器人 具身智能 DeepSeek

DuckDB x TiDB -- 使用 DuckDB 唤醒 CSV 文件

TiDB 社区干货传送门

迁移

【观测先锋·制造业卓越可观测建设案例】 中顺洁柔—基于Bonree ONE实现AI大模型高级一体化可观测运维监控解决方案

博睿数据

可观测性 AI 人工智能 DeepSeek

【GreatSQL优化器-13】直方图

GreatSQL

如何在`created`生命周期钩子中使用`sessionStorage`实现缓存

Chihiro

缓存 Vue 3

适合小型企业的库存管理工具推荐(含免费、开源)

NocoBase

开源 低代码 无代码 库存管理 小企业发展

【纯干货】手把手教你测试1688代采下单系统(附真实操作案例)

代码忍者

1688代采集运系统

汽车之家 v5.1 到 v7.5 超详细 TiDB 版本升级实践,性能稳定性双提升!

TiDB 社区干货传送门

版本升级

53倍性能提升!TiDB 全局索引如何优化分区表查询?

TiDB 社区干货传送门

性能测评 新版本/特性解读 OLTP 场景实践

CST均匀头模型和天线SAR比吸收率仿真案例

思茂信息

cst cst电磁仿真 CST软件

新架构 TiCDC 简介

TiDB 社区干货传送门

QGIS开发框架的特点

北京木奇移动技术有限公司

软件外包公司 GIS开发 QGIS开发

关于 “DevOps 实践的深入剖析:从持续集成到持续交付” 相关内容的详细

Chihiro

#DevOps

DuckDB x TiDB -- 将 MongoDB 数据导入 TiDB

TiDB 社区干货传送门

迁移

5次登上HackerNews首页,我们怎么做开源运营

小猿姐

开源 Kubernetes 云原生

缺陷分析方法简介

天翼云开发者社区

测试发开 测试方法 缺陷分析

windows查看端口占用情况

Geek_7ubdnf

端口

支付宝 IoT 设备入门宝典(上)设备管理篇

盐焗代码虾

支付宝 物联网 IoT 设备管理 应用分发

QCon 是一个在软件开发领域具有广泛影响力的技术盛会,以下为你详细介绍:

Chihiro

Qcon

QGIS 的性能优化

北京木奇移动技术有限公司

软件外包公司 GIS开发 QGIS开发

tidb 4.0.13 VS 7.5.5,基准测试结果有点意外

TiDB 社区干货传送门

性能测评 7.x 实践

如何利用 S3 备份 SAP HANA 数据库_数据库_AWS_InfoQ精选文章