【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

如何利用 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:52689

评论

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

第十周总结

fmouse

极客大学架构师训练营

尾调用与尾递归

helbing

算法

架构师训练营—第十周作业

Geek_shu1988

食堂就餐卡系统设计

cc

刘华:我最近听到最对味的话,就是“先Scale down再Scale out”

刘华Kenneth

DevOps 敏捷

架构师训练营第 6 周学习总结

菜青虫

极客大学架构师训练营

架构师训练营第 6 周课后练习

菜青虫

极客大学架构师训练营

架构师训练营第十周作业

_

极客时间架构师一期 第十周作业

LeetCode题解:860. 柠檬水找零,模拟情境,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

第十周作业

fmouse

极客大学架构师训练营

架构师训练营 1 期第 10 周:模块分解 - 总结

piercebn

极客大学架构师训练营

如果不想你被称做掉包侠,那么请有效地学习机器学习算法知识

计算机与AI

学习

架构师训练营第 1 期第 10 周作业

好吃不贵

极客大学架构师训练营

redis 基础数据 sets 业务场景分析

sinsy

redis 业务场景分析

大家都知道jmeter,但是它会让你的工作效率至少提升80%

996小迁

Java 编程 程序员 架构 面试

在Spring data中使用r2dbc

程序那些事

WebFlux R2DBC 程序那些事 spring data spring-data-r2dbc

架构师训练营第十周总结

_

总结 极客大学架构师训练营

Java-Mock简化单元测试

落日楼台H

Java 测试 单元测试 Mock Mock测试框架

架构师训练营—第十周学习总结

Geek_shu1988

刘华:上云后,你的架构设计可以更飞

刘华Kenneth

云计算 架构设计 技术选型 云平台

架构师训练营第六周作业

丁乐洪

在网上的AG账户登录异常说是涉嫌套利不给办理取出怎么办?

Geek_a6658e

专业出黑团队

作业-第6周

arcyao

初学小白你不知道的C语言经典算法(附带答案)

ShenDu_Linux

c++ 程序员 算法 C语言 数据结构与算法

架构师训练营第 1 期 -- 第十周作业

发酵的死神

极客大学架构师训练营

架构师训练营第 1 期第 10 周学习总结

好吃不贵

极客大学架构师训练营

架构师训练营一期学习心得

cc

试试,阿里P7的笔试题:多线程按序打印如何实现?

Java架构师迁哥

《华为数据之道》读书笔记:第 5 章 面向“联接共享”的数据底座建设

方志

大数据 数据中台 数据仓库 数字化转型

设备日志的用途

日志 snmp

第六章作业

孤星

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