一個集審覈、執行、備份及生成回滾語句於一身的MySQL自動化運維工具

在這以前,民工哥也給你們介紹過一款開源的SQL管理工具:自動補全、回滾!介紹一款可視化 sql 診斷利器html

今天,民工哥再給你們推薦一款SQL審覈利器:goinception。mysql

goinception介紹

goInception是一個集審覈、執行、備份及生成回滾語句於一身的MySQL運維工具, 經過對執行SQL的語法解析,返回基於自定義規則的審覈結果,並提供執行和備份及生成回滾語句的功能。linux

github地址:https://github.com/hanchuanch...git

文檔:https://hanchuanchuan.github....github

goinception架構

goinception安裝

官方提供了幾種的安裝方式,以下。sql

  • 一、源碼安裝

源碼安裝須要有go V1.2版本以上的環境,使用go mod做依賴管理。docker

[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
  • 二、docker方式
[root@centos7 ~]# docker pull hanchuanchuan/goinception
  • 三、二進制安裝(推薦)

直接上官方提供的地址:https://github.com/hanchuanch...,下載完成後直接解壓運行便可。centos

[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/hanchuanch...

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;

其它介紹

一、結果信息

給用戶返回的信息有兩種,

  • 一種是提交給goInception的基礎信息存在錯誤,好比源信息不全,或者源信息有錯誤等,這種狀況下,直接報異常,包括錯誤碼及錯誤信息,與MySQL服務器的異常是同樣的,在外面正常處理便可。
  • 二是若是沒有上面的問題,都會以結果集的方式將檢查結果告訴客戶端。和mysql原生結果集一致。返回的結果集中,每個行數據,就是一條提交的SQL語句,goInception內部將全部提交的語句塊一條條的拆開,以結果集的方式返回,針對每一條語句,有什麼問題或者狀態,在結果集中是一目瞭然。

注意:若是在語句中出現語法錯誤,則不能繼續了,由於goInception已經不能將剩下的語句分開了,那麼此時前面已經正常檢查的多行爲多個結果集的行返回,後面出錯的語句爲一行返回,固然這個的錯誤信息是語法錯誤。

二、自帶備份功能

自帶備份功能,首先服務啓動時配置config.toml(放在 [inc] 段)

image.png

而且在執行sql時,添加 --backup=true 或 --backup=1 選項。

三、審覈規則

相關的審覈規則,審覈選項等詳細信息,能夠參考:https://hanchuanchuan.github....

對比Inception

一、功能對比

二、速度

三、使用

這類工具在必定程度上解放了DBA的雙手,並且還能在很大程度上避免出錯的狀況,從而保證SQL的執行正確率,同時還提供SQL回滾功能,在出錯時進行回滾,保證數據安全與完整性。

image

相關文章
相關標籤/搜索