本文主要對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
微信: