前言:

  MySQL语句需要审核,这一点每个DBA及开发人员都懂,但介于语句及环境的复杂性,大部分人都是望而却步,对其都是采取妥协的态度,从而每个公司都有自己的方法。 大多数公司基本都是半自动化(脚本+人工)及人肉法,耗尽大多数DBA的日常时间,

让时间碎片化,也是最让人头疼的事。

  Inception是一款自动化运维的利器,有别与现在各个公司使用的方式,使用Inception,将会给DBA带来最大的便利性,将DBA从繁冗的工作中解放出来,做一些更多的自动化工作,或者从架构方面研究如何更大程度的保证数据库的高可用等等。

  其实最让我感同身受的就是以下文档中的一部分话:(文档地址:http://mysql-inception.github.io/inception-document/)

  

  在MySQL审核方法中,有一种方法是最传统,门槛最低,同时也是与半自动化方法共存的一种方法,那就是人肉法,所谓“人肉法”,就是所有的审核工作都是由人工来完成,下面先看看一般的人工审核的工作方式图: 

  这种方法的交流方式一般是邮件,需要执行变更时,DEV/QA写邮件向DBA发起变更,在DBA收到之后,用“火眼金睛”目测他们写的SQL是不是有问题,这里的问题要包括下面几个方面:

  • 语法错误:这些错误其实真是难为我们DBA了,即使我们都是“火眼金睛”,那还是看不出来,终究不是机器人啊,比如经常有开发没有经过测试就发给DBA,会丢失分号,或者“`”写为“'”,这可真看不出来,只有真正到线上实践后,才会发现错误。
  • 语义错误:这种错误,需要DBA时刻要到线上把表结构、数据量等拿出来,然后再与SQL语句中用到的对象比对,看看SQL语句中用到的列、表、库等是不是正确,那么此时也是需要DBA的高超的目测能力(也就是我们熟知的找茬能力)的,想想在一个列名中多一个字母或者少一个字母或者空格,这能看得出来么?我想未必。
  • 规则错误:我们对MySQL的SQL语句进行审核的目的就是想让SQL语句尽可能的统一,尽可能的减少错误,尽可能的优化SQL性能,尽可能的提高DBA运维效率,实际上,DBA定义了越多的规则,DBA越累,因为对所有的SQL语句,都要与我们的规则比对,找到不符合规则的语句及问题,那么这有点类似一个成语叫“作茧自缚”。DBA在每次拿到SQL语句后,心中都要遍历好多遍的“规则宝典”,在审核一个大项目之后,DBA长时间的高Load运算导致精疲力尽,同时又花了大半天的时间,也就是说DBA的大部分时间都花在了审核上面,这效率太低了,DBA的产出也太低了(但这些问题又不能不做啊)。
  • 循环审核:DBA在辛辛苦苦的找到力所能找到的错误之后,发邮件给DEV,总算能休息一会儿了,同时希望这是倒数第二次审核(因为DEV再回邮件之后,一审核,哇,都改了并且没有新问题,这多好啊,所以谓之倒数第二次审核),但经常是事与愿违,这么好的DEV能有几个啊,叮咚,邮件回过来了,说一句能改的都改好了(哎,我能知道哪些是不能改的么?),DBA需要带着之前审核出来的结果,看这些有没有改好,一个个比对(不管改好没改好,都要看一遍,因为DBA也不知道他改了哪些),实际上做的是又一次完全审核,因为这存在两方面工作,一方面是审核之前提出来的问题有没有改好,第二方面是在改的过程中,有没有引入新的问题。从上面的过程可以知道,DBA在这方面的工作量是非常大的,工作时间也基本都花在这上面,效率低下。
  • 主观性:对于已经定义的规则,虽然明明白白写在那里,但不同的DBA对同一条规则的理解其实是不同的,所以存在宽松不均的问题,同一个开发,面对不同DBA时,有时很轻松的通过,但有时又是铁律,搞得DEV/QA摸不着头脑,最终导致规则不成规则,很难推行下去。
  • 执行前检查:在上面久经折腾之后,好不容易审核通过了,可以执行了,那现在DBA需要做的事情是先对线上环境做一次检查,比如DEV写得IP是读库的虚IP还是写库的,执行语句时对线上的影响多大,对于DML语句,如果影响行数太多,可能还需要拆开再去执行,而如果是DDL,可能需要考虑晚上再去执行,或者用OSC(pt-online-schema-change)工具来执行等等。这些问题确定之后,再考虑开始执行。
  • 执行前备份:备份是必要的,因为语句在没有执行时,都是想不到他有影响会有多大,一般是不需要,而需要时,才知道备份是多么的重要,这也正是应了一句谚语:“书到用时方恨少;事非经过不知难。”,但这个工作也很是让人为难,应该备份全表呢?还是把影响的查出来备份呢?DBA在这个时候肯定是很不愿意这样做,但万一出问题怎么办?都懂得,不说了。
  • 执行出错:终于到执行阶段了,可是万万没想到,执行出错了,比较多的是语法/语义错误,此时可能要与DEV沟通,为什么发起时没有测试,通常他们会告诉你,测试过了,但贴到邮件时贴错了,此时DBA可能需要手动一个一个把出现错误的地方修改过来再执行,而需要注意的是,出现之前的那些语句已经执行完了,需要把那些语句去掉,而如果这样的问题在一次执行中出现多次的话,执行过程也会耗费掉不少时间。
  • 执行后检查:这个工作一般就是DEV/QA的事情了,DBA在执行完后,通知执行完成,并做检查,之后DBA的事情是等待(类似信号等待),或者可以切换到其它线程去处理其它数据变更请求。当DEV/QA告诉你检查没事儿了,这个事儿才算结束。

  一个DBA一天的时间往往都被这些不想做而必须要去做的事情困扰着,同时DB组还发现人力根本不够,还需要招人(难道招人来了还是去干这些事情么?),DBA难道就是只干这些事情的人么?不是!!!

  好了,以上各位看官可以忽略。下面正式安装Inception:

1、下载

https://github.com/mysql-inception/inception   download zip

2、安装依赖

yum -y install gcc gcc-c++ cmake bison openssl-devel ncurses-devel  mysql-devel

3、安装

unzip inception-master.zip
cd inception-master
./inception_build.sh debug [Xcode] #[Xcode] 指定平台 默认linux

  

4、编辑配置文件

vim /etc/inc.cnf

[inception]
general_log=1
general_log_file=inc.log
port=6669
socket=/tmp/inc.socket
character-set-client-handshake=0
character-set-server=utf8
inception_remote_system_password=admin
inception_remote_system_user=myadmin
inception_remote_backup_port=3308
inception_remote_backup_host=127.0.0.1
inception_support_charset=utf8
inception_enable_nullable=0
inception_check_primary_key=1
inception_check_column_comment=1
inception_check_table_comment=1
inception_osc_min_table_size=1
inception_osc_bin_dir=/usr/bin
inception_osc_chunk_time=0.1
inception_ddl_support=1
inception_enable_blob_type=1
inception_check_column_default_value=1
#手册说明参数意义http://mysql-inception.github.io/inception-document/

4、启动服务

/etc/dbbin/inception-master/debug/mysql/bin/Inception --defaults-file=/etc/inc.cnf &

5、登录

mysql –h127.0.0.1 –P6669 –uroot
inception get variables;

6、inception_web安装

环境python2.7+flask
源码地址:https://github.com/dbalihui/inception_web
#一般系统环境是2.6 需要先升级python环境 安装完注意修改vim `which yum` 把#!/usr/bin/python替换成#!/usr/bin/python2.6,否则可能造成yum失效。(yum依赖2.6版本python)

wget https://bootstrap.pypa.io/ez_setup.py --no-check-certificate #下载一个ez_setup 安装pip2.7版本的
python2.7 ez_setup.py
easy_install-2.7 pip
pip2.7 install flask_wtf
pip2.7 install flask-script
pip2.7 install flask-debugtoolbar
pip2.7 install MySQL-python


7、修改配置文件

unzip inception_web-master.zip
cd inception_web-master/app
vim inception.py
修改账号、密码及数据库名为自己测试环境名。

8、启动

./run.py runserver --host 0.0.0.0

浏览器IP+5000端口

安装成功, 后续使用过程中需要什么自己开发功能向框架里添加就ok了。不想自己写可以使用git上的archer。

Inception安装的更多相关文章

  1. inception安装步骤---自己整理的安装步骤

    inception安装步骤---自己整理的安装步骤2015-09-18 15:51 6185人阅读 评论(1) 收藏 举报 分类: inception相关版权声明:本文为博主原创文章,未经博主允许不得 ...

  2. inception安装使用

    一个集审核.执行.备份及生成回滚语句于一身的MySQL自动化运维工具,由去哪网开源 安装 CentOS 7 Python 3.6 安装基础环境 yum -y install cmake libncur ...

  3. MYSQL SQL 审核工具 (inception安装步骤)

    http://blog.csdn.net/wulantian/article/category/5825391

  4. Inception体验之安装

    Inception介绍 MySQL Inception是数据库管理员的工具.它允许DBA构建好的SQL语句,在只读数据集上测试它们,并最终针对生产数据库运行这些SQL语句,并且能够在SQL语句出于某种 ...

  5. centos 7 安装sql 审核工具 inception + archer

    系统环境: Centos7 + python2.7 + python3 .... 下载 源码地址:https://github.com/mysql-inception/inception Incept ...

  6. Inception使用详解

    一.Inception简介一款用于MySQL语句的审核的开源工具,不但具备自动化审核功能,同时还具备执行.生成对影响数据的回滚语句功能. 基本架构: 二.Inception安装 1.软件下载 下载链接 ...

  7. MySQL数据库Inception工具学习与测试 笔记

    MySQL语句的审核,在业界都已经基本被认同了,实际上也是对MySQL语句写法的统一化,标准化,而之前的人工审核,针对标准这个问题其实是很吃力的,标准越多,DBA越累,开发也越累. 那么在这个都追求自 ...

  8. Inception介绍(MySQL自动化运维工具)

    Inception介绍 GitHub:https://github.com/mysql-inception/inception 文档:https://mysql-inception.github.io ...

  9. 部署MySQL自动化运维工具inception+archer

    ***************************************************************************部署MySQL自动化运维工具inception+a ...

随机推荐

  1. 实现一个scnprinf

    #include <stdio.h> #include <stdarg.h> /* 该函数ret = min(size, 实际写入长度) - 1,即ret永远小于size * ...

  2. 简直offer-第四章解决面试题思路(二叉树中和为某一值的路径)

    题目:输入一颗二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径.从树的根节点往下一直到叶子节点形成一条路径. 思路:很明显用前序遍历可以从根节点开始遍历到叶子节点,然后将遍历的节点添加到 ...

  3. [CF662C]Binary Table

    luogu 题意 你有一个\(n*m\)的\(01\)矩阵.你可以把任意一行或者一列的\(01\)取反.求矩阵中最少的\(1\)的数量. \(n\le20,m\le10^5\) sol 很自然地有一个 ...

  4. z变换的性质

    z变换的许多重要性质在数字信号处理中常常要用到. 序列 z变换 收敛域 1)x(n) X(z) Rx-< |z| <Rx+ 2)y(n) Y(z) Ry-< |z| <Ry+ ...

  5. 一次SQL Server 10054 Troubleshooting

    问题 对某个库新增了一个订阅节点,然后需要把一些应用切到新订阅库,以分散负载.当应用切换后,有一个应用每次启动不到30秒,总是报超时的错误,而error log中又没有任何记录: Timeout ex ...

  6. 脚本工具---自动解析mysql建表语句,生成sqlalchemy表对象声明

    常规建表语句: CREATE TABLE `test_table` ( `id` int(11) NOT NULL, `name` char(64) NOT NULL, `password` char ...

  7. 一个靠谱的maven仓库镜像地址

    <mirror>   <id>sprintio</id>  <mirrorOf>central</mirrorOf>  <name&g ...

  8. sql server中类似oracle中decode功能的函数

    sqlserver 2008 写法 select t.PROJECTNAME, t.BUILDCONTENTSCALE, CASE t.PROJECTLEVEL ' THEN '国家重点' ' THE ...

  9. BROCADE交换机配置

    BROCADE交换机配置一 与交换机交互,可以使用三种方式: 串口 以太网口 光纤口 缺省的串口参数是:9600,N,8,1 缺省IP访问方式是: IP地址: 10.77.77.77 用户名: adm ...

  10. FTP文件传输协议两种模式 ftp协议集,错误码集,ftp客户端命令集

    TCP/IP协议中,FTP标准命令TCP端口号为21,Port方式数据端口为20.FTP协议的任务是从一台计算机将文件传送到另一台计算机,它与这两台计算机所处的位置.联接的方式.甚至是是否使用相同的操 ...