中小團隊快速構建SQL自動稽核系統

運維咖啡吧發表於2018-07-26

SQL稽核與執行,作為DBA日常工作中相當重要的一環,一直以來我們都是通過人工的方式來處理,效率低且質量沒辦法保證。為了規範操作,提高效率,我們決定引入目前市面上非常流行的SQL自動稽核工具Inception。

花了一週看了inception官方文件並搭建了測試環境簡單測試,又花了3天寫了webui(內部起名叫overmind,以下也簡稱overmind),目前正在進行各種測試以及手冊的編寫,還未正式跟我們的流程結合起來投入使用,後續正式使用後再更新使用經驗。

Inception

Inception是一個開源的Mysql自動化工具,具有SQL稽核、執行、回滾等實用的功能,由國內大神基於mysql原始碼開發,可以很明確的,詳細的,準確的稽核Mysql的SQL語句,工作模式與Mysql完全相同,可以直接使用mysql客戶端來連線。但遺憾的是2年前已停止更新,不過相容大部分的mysql版本,仍然是開源SQL稽核工具的翹楚。

Inception的架構如下:

inception架構圖

Overmind

稽核流程

我們的稽核流程現在主要分兩部分:

1.Dev和Qa等線下測試環境:為了簡化流程,開發測試環境,可以由開發直接通過overmind系統進行稽核或執行

2.Prod生產環境:生產環境以安全為主,在Dev和Qa環境執行成功後詳情頁面會有個“申請上線”按鈕,點選申請上線自動傳送郵件給DBA,待DBA稽核通過後方可上線

系統介紹

  • 基本配置頁面:可以直接在頁面上配置inception的資訊,方便遷移

    基本配置頁

  • 資料庫資訊錄入:相當於一個簡單資料庫的cmdb系統,可以管理資料庫資訊

    資料庫資訊錄入

  • 稽核任務提交:支援稽核和執行兩種模式,稽核模式只給稽核結果,執行模式在執行之前會先稽核

    稽核任務提交

  • 稽核結果展示:詳細展示SQL稽核的所有資訊,包括提交使用者、執行操作、稽核結果等等

    稽核結果展示

  • 任務列表頁面:可以很方便只檢視自己提交的任務,或者檢視固定專案的,固定環境的任務

    任務列表頁

關於開源

開源在我看來是一件很隆重的事情,之前剛學python的時候開源了自己寫的一個簡單後臺sadmin(github或gitee可以搜尋到),因為一些原因停止更新了。目前沒有時間和精力來做長久的支援和維護,所以暫時不打算把原始碼放到github上。另外同型別的已經有一個非常棒的開源產品Yearning了,可以github搜尋安裝學習。

寫在最後

  1. 先說感謝!感謝大神開發的Inception,絕對是DBA界的福音
  2. 之所以能就花了3天時間寫了overmind,主要還是藉助了之前已寫好的其他專案框架,在此基礎上做修改,還是很快的
  3. 工具部署與頁面編寫都是比較簡單的,團隊內部都可以搞定,要把工具推出去,融入到現在的流程中是一件比較困難的事情,給團隊內定的規則就是a.完善的文件,使用者在稽核前就知曉哪些sql通不過,在稽核失敗時知曉如何修改能成功,b.對使用者的感知應降到最低,不要因為用了overmind而造成額外的麻煩,要讓使用者用的爽
  4. 希望作者或其他大神能持續更新Inception,繼續造福廣大DBA

掃碼關注公眾號檢視更多原創文章

相關文章