让RDS(for MySQL)数据库的慢日志、审计日志跨空间转存OBS变得更加自动化

举报
HuaweiCloudDeveloper 发表于 2022/06/22 14:57:00 2022/06/22
【摘要】 本项目将展示如何使用华为云产品RDS(for MySQL)、OBS提供的SDK方法将数据库产生的慢日志、审计日志通过网络流的方式直接将日志文件转存至OBS中进行备份存储,项目过程中能够让您熟悉OBS和RDS的SDK,详细内容可阅读文章进行了解。

《目录》

  1. 背景
  2. 开发环境
  3. 云服务介绍
  4. 方案设计
    1. 方案简述
    2. 方案架构图
    3. 时序图
  5. 代码参数指南
  6. 代码实现
  7. 结果反馈

1、背景

在业务系统的运行过程中,数据库会产生一些日志,其中包括慢日志、审计日志,有时我们需要对这些日志手动的进行下载存储,有些繁琐。为了解决手动存储的弊端,希望可以通过调用接口的方式来实现定时的自动转存储至OBS效果。

2、开发环境

Snipaste_2022-06-22_11-44-55.png

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架构图(白底板).png

慢日志转存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时序图(白底版).png

审计日志转存OBS时序图

审计日志转存OBS时序图(白底版).png

5、代码参数指南

公共参数获取方式

1. endPoint,ak,sk,areaCode,instanceID,obsName。

  1. endPoint获取方式参考:https://developer.huaweicloud.com/endpoint获取对应的endPoint值 。注意:endpoint值由很多,要找到OBS下面的endpoint。

  2. ak与sk获取方式可参考:https://support.huaweicloud.com/iam_faq/iam_01_0618.html 

  3. areaCode区域码获取方式,可在这查询:https://developer.huaweicloud.com/endpoint 

  4. instanceID实例ID需要在华为云的RDS实例管理界面中获取实例ID如图所示:
    实例id.png

  5. obsName为OBS桶名。

RDSSlowlogUploadOBS参数详情
  1. endPoint,ak,sk,areaCode,instanceID,obsName获取方式请参考公共参数
RDSAuditlogUploadOBS参数详情
  1. endPoint,ak,sk,areaCode,instanceID,obsName,startTime,endTime。
    1. endPoint,ak,sk,areaCode,instanceID,obsName获取方式请参考公共参数
    2. startTime:起始时间(格式:2018-08-06T10:41:14+0800)
    3. endTime:终点时间(格式:2018-08-06T10:41:14+0800)
    4. offset:起始查询位置(0表示从第一个开始查询)
    5. limit:查询数量(一次最多能查50个)

6、代码实现

实现代码可参考慢日志、审计日志转存OBS

7、结果反馈

慢日志转存OBS

慢日志.png

审计日志转存OBS

审计日志.png

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。