内容简介:本文主要对goInception工具做一些简单介绍,并举例说明其主要做什么。goInception是一个集审核、执行、备份及生成回滚语句于一身的MySQL运维工具, 通过对执行SQL的语法解析,返回基于自定义规则的审核结果,并提供执行和备份及生成回滚语句的功能。goInception基于TiDB的语法解析器,和业内有名的inpcetion审核工具重构。
本文主要对goInception工具做一些简单介绍,并举例说明其主要做什么。
介绍
goInception是一个集审核、执行、备份及生成回滚语句于一身的 MySQL 运维工具, 通过对执行 SQL 的语法解析,返回基于自定义规则的审核结果,并提供执行和备份及生成回滚语句的功能。
goInception基于TiDB的语法解析器,和业内有名的inpcetion审核 工具 重构。
面向读者:该文主要面向于后端开发、DBA或运维小伙伴,通过举例说明goInception大概做了哪些事,关于安装和使用等均可以查看 使用文档 或 github项目首页 。另外, 除安装以外 ,现在很多inception相关的资料和文章等,均可查阅,很多都是通用的。
架构图:(摘自inception)
goInception类似于mysql服务,可以连接到服务端口,执行SQL语句。 接下来通过一个示例来说明goInception具体做了哪些操作。
审核示例
在调用goInception时,需要指定要访问的生产库地址,所以需要一种特殊语法形式, goInception延用inception的使用方式,在审核的sql开始前添加注释来指定远端服务器,并在sql的前后添加特殊标识以区分待审核语句,示例如下:
/*--host=127.0.0.1;--port=3306;--user=xxx;--password=xxx;--check=0;*/ inception_magic_start; use db; 一个或多个sql,支持大多数DDL和DML语法; inception_magic_commit; 复制代码
各选项说明
参数 | 默认值 | 数据类型 | 说明 |
---|---|---|---|
host | '' | string | 线上数据库IP地址 |
port | 0 | int | 线上数据库端口 |
user | '' | string | 线上数据库用户名 |
password | '' | string | 线上数据库密码 |
check | false | bool | 开启审核功能 |
execute | false | bool | 开启执行功能 |
backup | false | bool | 开启备份功能,仅在执行时生效 |
ignore_warnings | false | bool | 是否忽略警告,仅在执行时生效。该参数控制有警告时是继续执行还是中止 |
要审核的语句:
create table dbtest.table1( id int unsigned auto_increment primary key, name varchar(20) ) engine = innodb default character set utf8; insert into dbtest.table1 values(1,'aaa'),(2,'bbb'); 复制代码
那调用时可以变为如下形式:
/*--host=127.0.0.1;--port=3306;--user=xxx;--password=xxx;--execute=1;--backup=1;--ignore_warnings=1;*/ inception_magic_start; use dbtest; create table table1( id int unsigned auto_increment primary key, name varchar(20) ) engine = innodb default character set utf8; insert into table1 values(1,'aaa'),(2,'bbb'); inception_magic_commit; 复制代码
其中,
- 为了方便,可以通过use切换数据库,上下文自动保持该数据库
- 为讲述更多涉及的功能,我们开启了执行和备份参数,此时仍会先进行审核,只有在审核通过之后才会真正执行
goInception内部会进行三个阶段的操作,分别是审核阶段,执行阶段和备份阶段,接下来逐一讲解。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- Go优雅重启Web server示例-讲解版
- 深入讲解Flutter应用模板源码:计数器示例
- Arduino+Avr libc制作Badusb原理及示例讲解
- WebSocket技术讲解
- Fetch 的实例讲解
- SnapHelper硬核讲解
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。