贝聊SQL自动审核系统


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



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

1、 需求背景

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

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

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

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

2、 功能概述

一、 SQL提交流程如图
mysql



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

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




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

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

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

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

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

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

sql



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

检查经过后,点击提交,等待项目主管内容审核服务器


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





第三步: 由DBA审核,点击审核经过后,再依据线上RDS或MYSQL负载状况决定是否立刻执行sql语句测试


四、 《操做记录查询》能快速导出某个库的操做记录及SQL语句,能定位到SQL语句及提交的我的、时间及提交审核记录
优化


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



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


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


六、关联Inception自动审核:web传递SQL语句,并调用相应python脚本访问Inception接口,提交SQL代码到开发及测试环境。七、 SQL提交者帐号:有开发者、项目负责人、DBA八、 另外sql提交过滤:Sql提交语句中含drop、truncate 危险操做字段,凡发现这些语句自动提交不经过最后这里再次感谢贝聊平台组大神们的支持,再次感谢林毅及李海文同窗的帮助及支持!

相关文章
相关标签/搜索