平台的核心功能是SQL操作,SQL语句优化。可以做到这些点,得益于开源力量的强大,在此感谢开源项目Inception及SQLAdvisor团队!
1 开源项目简介
Inception:一个集审核、执行、备份及生成回滚语句于一身的MySQL自动化运维工具。
SQLAdvisor:基于MySQL原生态词法解析,结合分析SQL中的where条件、聚合条件、多表Join关系 给出索引优化建议。
关于inception的意义,inception作者的一段话讲的很棒:
DBA从此就从繁重的审核、登上去执行,出错了很难回滚(如果提前没有备份的话)的被动局面解放了出来,突然发现,做DBA原来可以这么轻松,工作可以不饱和了,那就有更多的自由时间学习、进一步向自动化运维平台的实现等更智能化的方向去发展,是具有里程碑意义的。
2 See项目介绍
开发环境
后端:
Python 3.6
Django 2.0
前端:
Vue.js 2.9
iview-admin 1.3
以一张简图开始,图片中django web即是See项目,它接收用户处理SQL的请求,交给inception或者sqladvisor后请求到数据库,得到数据库的结果做进一步的处理。
这个是权限逻辑部分,开发、经理,DBA会略有不同, 都是傻瓜式的操作,点点点即可完成。inception审核过的工单,经理确认即为审批,审批后DBA可以在生产上执行。另外还提供了一个测试环境,此环境无需审批流程,发起工单的人即可执行,用于在上线前可以先在测试环境跑一遍sql,之后再生产环境操作。逻辑图如下:
See平台功能
1, SQL审核,选择目标数据库,点击提交即可,语法正确或错误的SQL都会返回相应的信息,成功后生成一个SQL工单
2, 工单处理页,审批人可以审批SQL工单,执行人可以对审批过的SQL工单做执行操作
3, SQL工单详情页
4, 权限规则,不同角色的人员拥有不同的权限
5, 流程设置,可以开启或关闭流程
6, 设置目标数据库(需要进行操作的数据库)
7, 用户管理页,用户信息特别是身份在此设置
8, 组管理
9, 表结构,SQL语句查询
10, 数据报表展示
后续功能规划
一. 日志功能,用ELK收集mysql慢日志,接入ELK做日志数据分析展示功能 。
二. 监控功能,接入监控系统数据,做监控状态的页面端展示,报警仍由监控系统去做。
三. ...
开源
See项目已开源啦,地址:
https://github.com/myide/see
欢迎start或提供支持。