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)數據量大,需要做性能改進,比如變更時臨時調整數據庫參數,是否需要拆解數據集,預計操作時間和鎖的細節。
對於複雜需求,需要通過人工審核來完成,需要逐步完善對應的規則配置。
閱讀更多 楊建榮的學習筆記 的文章