SQL審核的疊代設計方案

SQL審核對於提高DBA工作的幸福度有重大的意義,同樣也對開發同學有很大的幫助,至少他們能夠看到DBA體現出的直接價值,這種價值不是通過口頭或者苦勞,而是通過一種類似知識庫的方式體現出來。

SQL審核項目初步做了一些測試,也總結了一些工具的特點,然後在這個基礎上就可以做一些定製工作了。

1.提示信息定製。

2.部署方式,採用agent的方式部署,數據庫用戶可以根據測試情況(只讀用戶)來決定是否需要統一創建

3.是否安排在slave端測試

4.定製SQL審核邏輯

5.線上環境對接和測試

6.通用查詢的對接

7.自動化上線的集成和對接

1.提示信息定製

目前主要側重於Inception的提示信息定製

2.部署方式

採用agent的方式部署,數據庫用戶可以根據測試情況(只讀用戶)來決定是否需要統一創建,目前只使用check模式

目前測試在測試環境中指定的測試實例,後續可以逐步擴大到1-2臺服務器,3-4個實例

3.是否安排在slave端測試

需要提前配置數據庫用戶,確保slave端可測試

需要重點關注主從的延遲情況

測試3-4套主從環境

4.定製SQL審核邏輯

刪除已有的不需要的審核邏輯

目前暫定為 字符集utf8mb4的邏輯可以改動

修改已有的審核邏輯

主要方向是truncate和drop操作,直接禁用

添加部分審核邏輯

主要對於alter操作的審核

5.線上環境對接和測試

對於表是否存在的判斷和校驗,需要開發對應的接口,直接在後端邏輯中通過調用接口判斷。

在表存在的前提下,對於SQL審核的邏輯可以根據如上的定製邏輯來提示

在內部迭代測試初步成效的前提下,可以推廣到平臺系統中,需要對接開發相應的接口。

6.通用查詢的對接

1)通用查詢使用SQL Advisor的接口定製完成。

2)對於數據查詢結果集的發送,需要使用對應的接口或者統一的共享存儲/ftp的方式來對接。

3)通用查詢優先考慮使用slave

7.自動化上線的集成和對接

SQL自動化上線預期使用PT工具來完成在線的結構變更(alter操作)。

對於數據的備份根據數據量採用對應的策略:

1)數據量較小,可以創建一個臨時庫來存儲

2)數據量較大,需要使用mysqldump來備份,數據推送到備份機中

3)數據量大,需要做性能改進,比如變更時臨時調整數據庫參數,是否需要拆解數據集,預計操作時間和鎖的細節。

對於複雜需求,需要通過人工審核來完成,需要逐步完善對應的規則配置。


分享到:


相關文章: