[编者的话] SQL 审核与执行, 作为 DBA 日常工作中相当重要的一环, 一直以来我们都是通过人工的方式来处理, 效率低且质量没办法保证. 为了规范操作, 提高效率, 我们决定引入目前市面上非常流行的 SQL 自动审核工具 Inception.
花了一周看了 Inception 官方文档并搭建了测试环境简单测试, 又花了 3 天写了 webui(内部起名叫 overmind, 以下也简称 overmind), 目前正在进行各种测试以及手册的编写, 还未正式跟我们的流程结合起来投入使用, 后续正式使用后再更新使用经验.
- Inception
- GitHub: https://github.com/mysql-inception/inception
官方文档: http://mysql-inception.github. ... ument
Inception 是一个开源的 MySQL 自动化工具, 具有 SQL 审核, 执行, 回滚等实用的功能, 由国内大神基于 MySQL 源码开发, 可以很明确的, 详细的, 准确的审核 MySQL 的 SQL 语句, 工作模式与 MySQL 完全相同, 可以直接使用 MySQL 客户端来连接. 但遗憾的是 2 年前已停止更新, 不过兼容大部分的 MySQL 版本, 仍然是开源 SQL 审核工具的翘楚.
Inception 的架构如下:
Overmind
审核流程
我们的审核流程现在主要分两部分:
Dev 和 QA 等线下测试环境: 为了简化流程, 开发测试环境, 可以由开发直接通过 overmind 系统进行审核或执行
Prod 生产环境: 生产环境以安全为主, 在 Dev 和 QA 环境执行成功后详情页面会有个 "申请上线" 按钮, 点击申请上线自动发送邮件给 DBA, 待 DBA 审核通过后方可上线
系统介绍
基本配置页面: 可以直接在页面上配置 Inception 的信息, 方便迁移.
基本配置页
数据库信息录入: 相当于一个简单数据库的 CMDB 系统, 可以管理数据库信息.
数据库信息录入
审核任务提交: 支持审核和执行两种模式, 审核模式只给审核结果, 执行模式在执行之前会先审核.
审核任务提交
审核结果展示: 详细展示 SQL 审核的所有信息, 包括提交用户, 执行操作, 审核结果等等.
审核结果展示
任务列表页面: 可以很方便只查看自己提交的任务, 或者查看固定项目的, 固定环境的任务
任务列表页
关于开源
开源在我看来是一件很隆重的事情, 之前刚学 Python 的时候开源了自己写的一个简单后台 sadmin(GitHub 或 Gitee 可以搜索到), 因为一些原因停止更新了. 目前没有时间和精力来做长久的支持和维护, 所以暂时不打算把源代码放到 GitHub 上. 另外同类型的已经有一个非常棒的开源产品 Yearning 了, 可以 GitHub 搜索安装学习.
写在最后
先说感谢! 感谢大神开发的 Inception, 绝对是 DBA 界的福音.
之所以能就花了 3 天时间写了 Overmind, 主要还是借助了之前已写好的其他项目框架, 在此基础上做修改, 还是很快的.
工具部署与页面编写都是比较简单的, 团队内部都可以搞定, 要把工具推出去, 融入到现在的流程中是一件比较困难的事情, 给团队内定的规则就是: a. 完善的文档, 用户在审核前就知晓哪些 SQL 通不过, 在审核失败时知晓如何修改能成功; b. 对用户的感知应降到最低, 不要因为用了 Overmind 而造成额外的麻烦, 要让用户用的爽.
希望作者或其他大神能持续更新 Inception, 继续造福广大 DBA.
来源: http://www.tuicool.com/articles/uYBny2Q