文章作者:劉漢華,貝聊高階運維工程師
下面是我的第一次需求分析及原型設計作品,這裡整理了一下跟有需要的朋友們分享!
一、 需求背景
1.1 需求要解決什麼問題
針對MySQL語句寫法的統一化標準,人工稽核吃力,標準越多,有效落實越來越困難,並且效率低下。
1.2 方案是否能解決這個問題?
我這裡這個方案基於Inception,開發一個web集sql提交、查詢、流程化定製功能的系統;
實現SQL提交稽核流程自動化,高效落實Mysql語句寫法的統一化標準,實現SQL語句優化。
去哪兒的Inception是集稽核、執行、回滾於一體的一個自動化運維繫統,它是根據MySQL程式碼修改過來的,用它可以很明確的,詳細的,準確的稽核MySQL的SQL語句,它的工作模式和MySQL完全相同,可以直接使用MySQL客戶端來連線,但不需要驗證許可權,它相對應用程式(上層稽核流程系統等)而言,是一個伺服器,在連線時需要指定伺服器地址及Inception伺服器的埠即可,而它相對要稽核或執行的語句所對應的線上MySQL伺服器來說,是一個客戶端,它在內部需要實時的連線資料庫伺服器來獲取所需要的資訊,或者直接在線上上執行相應的語句及獲取binlog等,Inception就是一箇中間性質的服務。
但是去哪兒的Inception及一些開源的相應系統只有簡單Inception表結構評審的功能,無法滿足我們需求,
所以不得不自已提出相應需求及產品原型設計,交付平臺組大神們開發!
二、 功能概述
1、 SQL提交流程如圖
線上RDS提交過程:
由開發者提交sql語句,必須經過Inception進行sql語法規範檢查,
才能提交下一步專案主管內容稽核,
最後經DBA稽核,並根據線上RDS狀態決定是否立即執行sql語句。
2、 《專案配置管理》web介面支援RDS開發、測試、線上RDS專案配置查詢、新建、修改等管理功能
2.1 專案配置管理只有DBA才有許可權調整,能決定各種環境sql提交的流程及配置.
我們這裡開發、測試環境無需內容稽核及DBA稽核,只要通過自動稽核(Inception進行sql語法規範檢查),即可釋出開發、測試環境;
自動稽核通過呼叫“自動稽核關聯指令碼”訪問Inception,(支援rds及mysql配置繫結與連線),來實現sql語法規範檢查。
host為rds或mysql地址,User為賬號 ,pass為密碼 ,port為埠, execute為1時執行sql,execute為0時不執行只檢查,
mysql_structure為sql語句
呼叫的python連線Inception只有一個通用接受傳參的指令碼,呼叫後並接受python指令碼反饋執行內容.
3、《sql上線單》功能:新建上線單提交、編輯、複製、查詢、搜尋、、檢查
第一步: 開發者選擇需提交的資料庫名及對應環境,錄入下面相應資訊。
點選檢查時,Inception接受到的execute值為0,進行Inception進行sql語法規範檢查,
檢查通過後,點選提交,等待專案主管內容稽核
第二步: 由專案主管點選"檢視",根據sql內容決定是否要允許通過,如稽核通過,則進行下一步
第三步: 由DBA稽核,點選稽核通過後,再依據線上RDS或MYSQL負載情況決定是否馬上執行sql語句
4、 《操作記錄查詢》能快速匯出某個庫的操作記錄及SQL語句,能定位到SQL語句及提交的個人、時間及提交稽核記錄
點選檢視能看到更多稽核流程記錄
下面是匯出的詳細sql語句及相關記錄
5、《SMTP發件設定》: 支援上線郵件通知到指定多人
6、關聯Inception自動稽核:web傳遞SQL語句,並呼叫相應python指令碼訪問Inception介面,提交SQL程式碼到開發及測試環境。
7、 SQL提交者賬號:有開發者、專案負責人、DBA
8、 另外sql提交過濾:
Sql提交語句中含drop、truncate 危險操作欄位,凡發現這些語句自動提交不通過
最後這裡再次感謝貝聊平臺組大神們的支援,再次感謝林毅及李海文同學的幫助及支援!