阅读 858

贝聊SQL自动审核系统


文章作者:刘汉华,贝聊高级运维工程师



下面是我的第一次需求分析及原型设计作品,这里整理了一下跟有需要的朋友们分享!

一、 需求背景

1.1 需求要解决什么问题
针对MySQL语句写法的统一化标准,人工审核吃力,标准越多,有效落实越来越困难,并且效率低下。

1.2 方案是否能解决这个问题?
我这里这个方案基于Inception,开发一个web集sql提交、查询、流程化定制功能的系统;
实现SQL提交审核流程自动化,高效落实Mysql语句写法的统一化标准,实现SQL语句优化。

去哪儿的Inception是集审核、执行、回滚于一体的一个自动化运维系统,它是根据MySQL代码修改过来的,用它可以很明确的,详细的,准确的审核MySQL的SQL语句,它的工作模式和MySQL完全相同,可以直接使用MySQL客户端来连接,但不需要验证权限,它相对应用程序(上层审核流程系统等)而言,是一个服务器,在连接时需要指定服务器地址及Inception服务器的端口即可,而它相对要审核或执行的语句所对应的线上MySQL服务器来说,是一个客户端,它在内部需要实时的连接数据库服务器来获取所需要的信息,或者直接在在线上执行相应的语句及获取binlog等,Inception就是一个中间性质的服务。

但是去哪儿的Inception及一些开源的相应系统只有简单Inception表结构评审的功能,无法满足我们需求,
所以不得不自已提出相应需求及产品原型设计,交付平台组大神们开发!

二、 功能概述

1、 SQL提交流程如图



线上RDS提交过程:
由开发者提交sql语句,必须经过Inception进行sql语法规范检查,
才能提交下一步项目主管内容审核,
最后经DBA审核,并根据线上RDS状态决定是否立即执行sql语句。

2、 《项目配置管理》web界面支持RDS开发、测试、线上RDS项目配置查询、新建、修改等管理功能
2.1 项目配置管理只有DBA才有权限调整,能决定各种环境sql提交的流程及配置.




我们这里开发、测试环境无需内容审核及DBA审核,只要通过自动审核(Inception进行sql语法规范检查),即可发布开发、测试环境;

自动审核通过调用“自动审核关联脚本”访问Inception,(支持rds及mysql配置绑定与连接),来实现sql语法规范检查。

host为rds或mysql地址,User为账号 ,pass为密码 ,port为端口, execute为1时执行sql,execute为0时不执行只检查,
mysql_structure为sql语句

调用的python连接Inception只有一个通用接受传参的脚本,调用后并接受python脚本反馈执行内容.

3、《sql上线单》功能:新建上线单提交、编辑、复制、查询、搜索、、检查

第一步: 开发者选择需提交的数据库名及对应环境,录入下面相应信息。



点击检查时,Inception接受到的execute值为0,进行Inception进行sql语法规范检查,

检查通过后,点击提交,等待项目主管内容审核


第二步: 由项目主管点击"查看",根据sql内容决定是否要允许通过,如审核通过,则进行下一步





第三步: 由DBA审核,点击审核通过后,再依据线上RDS或MYSQL负载情况决定是否马上执行sql语句


4、 《操作记录查询》能快速导出某个库的操作记录及SQL语句,能定位到SQL语句及提交的个人、时间及提交审核记录


点击查看能看到更多审核流程记录



下面是导出的详细sql语句及相关记录


5、《SMTP发件设置》: 支持上线邮件通知到指定多人



6、关联Inception自动审核:web传递SQL语句,并调用相应python脚本访问Inception接口,提交SQL代码到开发及测试环境。

7、 SQL提交者账号:有开发者、项目负责人、DBA

8、 另外sql提交过滤:

Sql提交语句中含drop、truncate 危险操作字段,凡发现这些语句自动提交不通过

最后这里再次感谢贝聊平台组大神们的支持,再次感谢林毅及李海文同学的帮助及支持!


关注下面的标签,发现更多相似文章
评论