貝聊SQL自動審覈系統


文章做者:劉漢華,貝聊高級運維工程師python



下面是個人第一次需求分析及原型設計做品,這裏整理了一下跟有須要的朋友們分享!

1、 需求背景

1.1 需求要解決什麼問題
針對MySQL語句寫法的統一化標準,人工審覈吃力,標準越多,有效落實愈來愈困難,而且效率低下。

1.2 方案是否能解決這個問題?
我這裏這個方案基於Inception,開發一個web集sql提交、查詢、流程化定製功能的系統;
實現SQL提交審覈流程自動化,高效落實Mysql語句寫法的統一化標準,實現SQL語句優化。

去哪兒的Inception是集審覈、執行、回滾於一體的一個自動化運維繫統,它是根據MySQL代碼修改過來的,用它能夠很明確的,詳細的,準確的審覈MySQL的SQL語句,它的工做模式和MySQL徹底相同,能夠直接使用MySQL客戶端來鏈接,但不須要驗證權限,它相對應用程序(上層審覈流程系統等)而言,是一個服務器,在鏈接時須要指定服務器地址及Inception服務器的端口便可,而它相對要審覈或執行的語句所對應的線上MySQL服務器來講,是一個客戶端,它在內部須要實時的鏈接數據庫服務器來獲取所須要的信息,或者直接在在線上執行相應的語句及獲取binlog等,Inception就是一箇中間性質的服務。

可是去哪兒的Inception及一些開源的相應系統只有簡單Inception表結構評審的功能,沒法知足咱們需求,
因此不得不自已提出相應需求及產品原型設計,交付平臺組大神們開發!

2、 功能概述

一、 SQL提交流程如圖
mysql



線上RDS提交過程:
由開發者提交sql語句,必須通過Inception進行sql語法規範檢查,
才能提交下一步項目主管內容審覈,
最後經DBA審覈,並根據線上RDS狀態決定是否當即執行sql語句。

二、 《項目配置管理》web界面支持RDS開發、測試、線上RDS項目配置查詢、新建、修改等管理功能
2.1 項目配置管理只有DBA纔有權限調整,能決定各類環境sql提交的流程及配置.
web




咱們這裏開發、測試環境無需內容審覈及DBA審覈,只要經過自動審覈(Inception進行sql語法規範檢查),便可發佈開發、測試環境;

自動審覈經過調用「自動審覈關聯腳本」訪問Inception,(支持rds及mysql配置綁定與鏈接),來實現sql語法規範檢查。

host爲rds或mysql地址,User爲帳號 ,pass爲密碼 ,port爲端口, execute爲1時執行sql,execute爲0時不執行只檢查,
mysql_structure爲sql語句

調用的python鏈接Inception只有一個通用接受傳參的腳本,調用後並接受python腳本反饋執行內容.

三、《sql上線單》功能:新建上線單提交、編輯、複製、查詢、搜索、、檢查

第一步: 開發者選擇需提交的數據庫名及對應環境,錄入下面相應信息。

sql



點擊檢查時,Inception接受到的execute值爲0,進行Inception進行sql語法規範檢查,數據庫

檢查經過後,點擊提交,等待項目主管內容審覈服務器


第二步: 由項目主管點擊"查看",根據sql內容決定是否要容許經過,如審覈經過,則進行下一步
運維





第三步: 由DBA審覈,點擊審覈經過後,再依據線上RDS或MYSQL負載狀況決定是否立刻執行sql語句測試


四、 《操做記錄查詢》能快速導出某個庫的操做記錄及SQL語句,能定位到SQL語句及提交的我的、時間及提交審覈記錄
優化


點擊查看能看到更多審覈流程記錄
設計



下面是導出的詳細sql語句及相關記錄


五、《SMTP發件設置》: 支持上線郵件通知到指定多人


六、關聯Inception自動審覈:web傳遞SQL語句,並調用相應python腳本訪問Inception接口,提交SQL代碼到開發及測試環境。七、 SQL提交者帳號:有開發者、項目負責人、DBA八、 另外sql提交過濾:Sql提交語句中含drop、truncate 危險操做字段,凡發現這些語句自動提交不經過最後這裏再次感謝貝聊平臺組大神們的支持,再次感謝林毅及李海文同窗的幫助及支持!

相關文章
相關標籤/搜索