点击上方“民工哥技术之路”,选择“设为星标”

回复“1024”获取独家整理的学习资料!

在这之前,民工哥也给大家介绍过一款开源的SQL管理工具:自动补全、回滚!介绍一款可视化 sql 诊断利器。

今天,民工哥再给大家推荐一款SQL审核利器:goinception。

goinception介绍

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

github地址:https://github.com/hanchuanchuan/goInception

文档:https://hanchuanchuan.github.io/goInception/

goinception架构

goinception安装

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

  • 1、源码安装

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

[root@centos7 ~]# git clone https://github.com/hanchuanchuan/goInception.git
[root@centos7 ~]# cd goInception
[root@centos7 ~]# make parser
[root@centos7 ~]# go build -o goInception tidb-server/main.go
  • 2、docker方式

[root@centos7 ~]# docker pull hanchuanchuan/goinception
  • 3、二进制安装(推荐)

直接上官方提供的地址:https://github.com/hanchuanchuan/goInception/releases/download/去下载对应的版本文件,下载完成后直接解压运行即可。

[root@centos7 ~]# mkdir goinception
[root@centos7 ~]# tar zxf goInception-linux-amd64-v1.2.3.tar.gz -C ./goinception/
[root@centos7 ~]# cd goinception/
[root@centos7 goinception]# ll
total 38476
drwxr-xr-x 2 root root        33 Aug 30 03:48 config
-rwxr-xr-x 1  501 games 39399424 May 22 07:45 goInception

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

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

config.toml文件由几部分组成,分别为最外层配置如host,port等,以及各分组如[inc],[log]等。示例(该示例仅为展示config.toml文件结构,详细参数请参考):https://github.com/hanchuanchuan/goInception/blob/master/config/config.toml.default

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

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

[root@centos7 goinception]# ./goInception -config=config/config.toml
[root@centos7 ~]# netstat -lntp|grep 4000
tcp6   0   0 :::4000    :::*    LISTEN    1250/./goInception

使用实例

/*--user=root;--password=root;--host=127.0.0.1;--check=1;--port=3306;*/
inception_magic_start;
use test;
create table t1(id int primary key);
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、审核规则

相关的审核规则,审核选项等详细信息,可以参考:https://hanchuanchuan.github.io/goInception/rules.html

对比Inception

1、功能对比

2、速度

3、使用

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

推荐阅读 点击标题可跳转

Bug!Redis 6.0.8紧急发布,请尽快升级!

在华为鸿蒙OS上尝鲜,我的第一个“hello world”

最全Linux/C/C++学习思维导图,请收藏!

只需一步,永久白嫖!请低调使用!

Docker容器网络-基础篇

为什么 HTTPS 是安全的?

SSH 只能用于远程 Linux 主机?那说明你见识太小了!

超赞!墙裂推荐一个 MySQL 自动化运维工具!相关推荐

  1. mysql 自动化运维工具_部署MySQL自动化运维工具inception+archer

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

  2. mysql 自动化运维工具_MySQL使用工具Inception实现自动化运维

    MySQL使用工具Inception实现自动化运维 发布时间:2020-05-27 17:11:14 来源:51CTO 阅读:180 作者:三月 下面一起来了解下MySQL使用工具Inception实 ...

  3. 墙裂推荐一个高质量的数据分析学习平台

    墙裂推荐一个高质量的数据分析学习平台 大家好,我是Peter呀~ 这是一篇无关任何技术的文章,主要是将近期自己写作的文章和资料进行了整理和汇总.也推荐下一个python数据分析的平台:尤而小屋 Pan ...

  4. 有赞MySQL自动化运维之路—ZanDB

    有赞MySQL自动化运维之路-ZanDB 一.前言 在互联网时代,业务规模常常出现爆发式的增长.快速的实例交付,数据库优化以及备份管理等任务都对DBA产生了更高的要求,单纯的凭借记忆力去管理那几十套D ...

  5. 简单介绍自动化运维工具clip

    Clip是一款自动化运维工具,适用于海量服务器的管理场景,可以降低系统误操作风险,提高工作效率等.Clip将传统的IP管理纬度替换为String管理纬度,管理方式的改变使海量运维时更加的便捷.可靠与高 ...

  6. 轻量级自动化运维工具Fabric的安装与实践

    一.背景环境 在运维工作中,经常会遇到重复性的劳动,这个时候为了效率就必须要使用自动化运维工具. 这里我给大家介绍轻量级自动化运维工具Fabric,Fabric是基于Python语言开发的,是开发同事 ...

  7. 自动化运维工具Ansible详细部署

    一.基础介绍 ================================================================================= 1.简介 ansibl ...

  8. Ansible自动化运维工具介绍

    介绍 Ansible自动化运维工具,是基于Python开发的,可以实现批量系统配置,批量程序部署.批量运行命令等等. ansible是基于模块工作的,本身没有批量部署的能力.真正具有批量部署的是ans ...

  9. 自动化运维工具——ansible安装及模块介绍

    ansbile 前言 一.主流自动化运维工具简介 1.1 Puppet 1.2 Saltstack 1.3 Ansible 二.Ansible 运维工具原理 三.Ansible安装 3.1 下载软件包 ...

  10. 自动化运维工具Ansible实战(一)简介和部署

    一.Ansible的介绍 Ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.cfengine.chef.func.fabric)的优点.实现了批量系统配置 ...

最新文章

  1. 纯真IP库的结构分析及一个查询类
  2. 1.3 更多边缘检测内容-深度学习第四课《卷积神经网络》-Stanford吴恩达教授
  3. mysql安装1335_Mysql 安装问题。提示MySQL Server 5.1 -- Error 1335.
  4. 乐观锁的颗粒度_MySql数据库锁机制详解
  5. webase crud查看所有表_Laravel-Gii 可视化代码生成工具 CRUD +GUI
  6. python 列表、元组、集合、字典、循环遍历数据结构
  7. Collections.sort的两个方法
  8. Java学习笔记1.1.1 搭建Java开发环境 - Java概述
  9. 1 python简介与安装
  10. 成为Android高手的十个建议
  11. php短信接口开发(http协议)
  12. 路网自动构建路段拓扑
  13. 易企秀H5 json配置文件解密分析
  14. ndims matlab,MATLAB的size(),length(),ndims()函数
  15. 装逼神器,逼真黑客范儿
  16. c#语言猜数字游戏,C#实现猜数字游戏
  17. 2008中国十佳IC设计公司(二):土鳖博士创业一样成功
  18. ECHO、IF、REM等命令介绍
  19. Cesium地图标记显示与实现(六)
  20. 动态规划及动态规划的应用

热门文章

  1. 201671010119 2016-2017-2《Java程序设计》第十六周学习心得
  2. Java使用POI导出excel(下)——实例与小技巧
  3. .NET回归 HTML----表单元素(1)和一些常用的标记
  4. Java设计模式——代理模式实现及原理
  5. _block 的使用 详细介绍
  6. TagSL框架设计(1)----先来点简介
  7. NickLee.FortuneBase(2010.1_B) For Oracle92i/10g/11g
  8. Effects with the Pixel Bender Toolkit
  9. 重心坐标到纹理映射(Texture Mapping)
  10. 安装python版opencv遇到ModuleNotFoundError: No module named ‘skbuild‘