本文主要对goInception工具作一些简单介绍,并举例说明其主要作什么。mysql
goInception是一个集审核、执行、备份及生成回滚语句于一身的MySQL运维工具, 经过对执行SQL的语法解析,返回基于自定义规则的审核结果,并提供执行和备份及生成回滚语句的功能。git
goInception基于TiDB的语法解析器,和业内有名的inpcetion审核工具重构。github
面向读者:该文主要面向于后端开发、DBA或运维小伙伴,经过举例说明goInception大概作了哪些事,关于安装和使用等都可以查看 使用文档 或 github项目首页。另外,除安装之外,如今不少inception相关的资料和文章等,都可查阅,不少都是通用的。sql
架构图:(摘自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;
复制代码
其中,运维
goInception内部会进行三个阶段的操做,分别是审核阶段,执行阶段和备份阶段,接下来逐一讲解。
inception_magic_start
语法开始use dbtest
,会经过show databases
判断数据库是否存在create table table1...
,接下来进行建表的校验
insert into table1 ...
,接下来进行insert的校验
inception_magic_commit
,判断全部的审核是否成功,若是有错误时,直接返回,而有警告时会判断是否开启了忽略警告的参数,以判断是否进行下一步desc table1;
语法接下来继续说明执行阶段:
备份功能的详细说明请查看 备份功能
SUPER
权限欢迎经过Github Issues提交问题报告与建议
QQ群: 499262190
微信: