让RDS(for MySQL)数据库的慢日志、审计日志跨空间转存OBS变得更加自动化
《目录》
- 背景
- 开发环境
- 云服务介绍
- 方案设计
- 方案简述
- 方案架构图
- 时序图
- 代码参数指南
- 代码实现
- 结果反馈
1、背景
在业务系统的运行过程中,数据库会产生一些日志,其中包括慢日志、审计日志,有时我们需要对这些日志手动的进行下载存储,有些繁琐。为了解决手动存储的弊端,希望可以通过调用接口的方式来实现定时的自动转存储至OBS效果。
2、开发环境
3、云服务介绍
云数据库 RDS for MySQL:MySQL是目前最受欢迎的开源数据库之一,其性能卓越,搭配LAMP(Linux + Apache + MySQL + Perl/PHP/Python),成为WEB开发的高效解决方案。 云数据库 RDS for MySQL拥有稳定可靠、安全运行、弹性伸缩、轻松管理、经济实用等特点。
华为云OBS:对象存储服务(Object Storage Service,OBS)是一个基于对象的海量存储服务,为客户提供海量、安全、高可靠、低成本的数据存储能力,使用时无需考虑容量限制,并且提供多种存储类型,满足客户各类业务场景诉求。
4、方案设计
i、方案简述
通过调用SDK提供的接口,先获取慢日志或审计日志的下载路径,然后通过网络流上传的方式直接将链接日志下载存储至OBS指定的位置。
ii、方案架构图
两种日志均是转存至OBS,但是因为其获取途径不一样,在某些细节实现有一些区分,如慢日志转存OBS,因没有提供时间筛选,无法控制其增量行为,所以需要通过比对前后文件来判断是否需要上传;而审计日志则是可以通过时间筛选的方法来控制,具体实现如下:
慢日志转存OBS架构图
慢日志转存OBS实现思路:
1、通过SDK提供的接口获取日志下载链接。
2、然后new URL(fileLink).openConnection().getContentLength()获取链接文件。
3、再通过OBS SDK提供的接口方法获取OBS位置已存储的文件。
4、如果两者文件一样,则拉取下来的网络流通过OBS客户端上传至OBS指定位置进行存储
审计日志转存OBS架构图
审计日志转存OBS实现思路:
1、通过SDK提供的接口方法传入时间等参数获取某一个时间段的审计日志的ID。
2、然后通过日志ID找到我们每一个日志文件的下载链接。
3、最后通过网络流将日志文件拉取下来,通过OBS客户端上传至OBS指定位置进行存储。
iii、方案时序图
慢日志转存OBS时序图
审计日志转存OBS时序图
5、代码参数指南
公共参数获取方式
1. endPoint,ak,sk,areaCode,instanceID,obsName。
-
endPoint获取方式参考:https://developer.huaweicloud.cn/endpoint获取对应的endPoint值 。注意:endpoint值由很多,要找到OBS下面的endpoint。
-
ak与sk获取方式可参考:https://support.huaweicloud.cn/iam_faq/iam_01_0618.html 。
-
areaCode区域码获取方式,可在这查询:https://developer.huaweicloud.cn/endpoint 。
-
instanceID实例ID需要在华为云的RDS实例管理界面中获取实例ID如图所示:
-
obsName为OBS桶名。
RDSSlowlogUploadOBS参数详情
- endPoint,ak,sk,areaCode,instanceID,obsName获取方式请参考公共参数。
RDSAuditlogUploadOBS参数详情
- endPoint,ak,sk,areaCode,instanceID,obsName,startTime,endTime。
- endPoint,ak,sk,areaCode,instanceID,obsName获取方式请参考公共参数。
- startTime:起始时间(格式:2018-08-06T10:41:14+0800)
- endTime:终点时间(格式:2018-08-06T10:41:14+0800)
- offset:起始查询位置(0表示从第一个开始查询)
- limit:查询数量(一次最多能查50个)
6、代码实现
实现代码可参考慢日志、审计日志转存OBS
7、结果反馈
慢日志转存OBS
审计日志转存OBS
- 点赞
- 收藏
- 关注作者
评论(0)