首页 资讯频道 互联频道 智能频道 网络 数据频道 安全频道 服务器频道 存储频道

敲黑板!推荐一款SQL审核利器:goinception

2020-09-18 09:25:00 来源 : 民工哥技术之路公众号

goinception介绍

goInception是一个集审核、执行、备份及生成回滚语句于一身的MySQL运维工具, 通过对执行SQL的语法解析,返回基于自定义规则的审核结果,并提供执行和备份及生成回滚语句的功能。

goinception架构

goinception安装

官方提供了几种的安装方式,如下。

1、源码安装

源码安装需要有go V1.2版本以上的环境,使用go mod作依赖管理。

[[email protected]~]#gitclonehttps://github.com/hanchuanchuan/goInception.git

[[email protected]~]#cdgoInception

[[email protected]~]#makeparser

[[email protected]~]#gobuild-ogoInceptiontidb-server/main.go

2、docker方式

[[email protected]~]#dockerpullhanchuanchuan/goinception

3、二进制安装(推荐)

[[email protected]~]#mkdirgoinception

[[email protected]~]#tarzxfgoInception-linux-amd64-v1.2.3.tar.gz-C./goinception/

[[email protected]~]#cdgoinception/

[[email protected]]#ll

total38476

drwxr-xr-x2rootroot33Aug3003:48config

-rwxr-xr-x1501games39399424May2207:45goInception

解压完成后,在config目录下会看到一个默认的配置文件:config.toml.default,大家可以根据实际情况修改。

goInception采用TiDB源码重构,所以部分参数可参考TiDB相关文档

config.toml文件由几部分组成,分别为最外层配置如host,port等,以及各分组如[inc],[log]等。

host="0.0.0.0"

port=4000

path="/tmp/tidb"

[log]

#日志参数

level="info"

format="text"

[log.file]

#日志文件参数

filename=""

max-size=300

[inc]

#审核选项

enable_nullable=true

enable_drop_table=false

check_table_comment=false

check_column_comment=false

#等等...

[osc]

#pt-osc参数

osc_on=false

osc_min_table_size=16

[ghost]

#gh-ost参数

ghost_allow_on_master=true

配置修改完成后,就可以正常启动了。

[[email protected]]#./goInception-config=config/config.toml

[[email protected]~]#netstat-lntp|grep4000

tcp600:::4000:::*LISTEN1250/./goInception

使用实例

/*--user=root;--password=root;--host=127.0.0.1;--check=1;--port=3306;*/

inception_magic_start;

usetest;

createtablet1(idintprimarykey);

inception_magic_commit;

其它介绍

1、结果信息

给用户返回的信息有两种,

一种是提交给goInception的基础信息存在错误,比如源信息不全,或者源信息有错误等,这种情况下,直接报异常,包括错误码及错误信息,与MySQL服务器的异常是一样的,在外面正常处理即可。

二是如果没有上面的问题,都会以结果集的方式将检查结果告诉客户端。和mysql原生结果集一致。返回的结果集中,每一个行数据,就是一条提交的SQL语句,goInception内部将所有提交的语句块一条条的拆开,以结果集的方式返回,针对每一条语句,有什么问题或者状态,在结果集中是一目了然。

注意:如果在语句中出现语法错误,则不能继续了,因为goInception已经不能将剩下的语句分开了,那么此时前面已经正常检查的多行为多个结果集的行返回,后面出错的语句为一行返回,当然这个的错误信息是语法错误。

2、自带备份功能

自带备份功能,首先服务启动时配置config.toml(放在 [inc] 段)

参数 默认 可选范围 说明
       
backup_host "" string 备份数据库IP地址
backup_port 0 int 备份数据库端口
backup_user "" string 备份数据库用户名
backup_password "" string 备份数据库密码

并且在执行sql时,添加 --backup=true 或 --backup=1 选项。

3、审核规则

对比Inception

1、功能对比

2、速度

3、使用

这类工具在一定程度上解放了DBA的双手,而且还能在很大程度上避免出错的情况,从而保证SQL的执行正确率,同时还提供SQL回滚功能,在出错时进行回滚,保证数据安全与完整性。

关键词:SQL审核 goinception

最近更新