資料庫平臺

aoerqileng發表於2022-01-23

之前寫的一個資料庫平臺,使用的Django。本來資料庫平臺是包含了很多的部分,但是自己沒有太多時間投入到上面,所以當時的資料庫平臺的各個部分使用了很多的開源系統,修改了部分程式碼適配後使用了,所以我的資料庫平臺中只是自己寫了資料庫cmdb 部分,還想講一些統計資訊放到上面進行展現,只是實現了慢查詢統計的定時收集展現。定時任務透過celery執行。認證使用cas進行認證。程式碼實現了多環境,可以指定不同的環境,dev,test,prd。方便連線不同環境的配置。使用gunicorn部署。


cmdb這個不太好標準化,都有自己的特殊需求,會跟運維的cmdb進行互動,主要是獲取部門業務線資訊,將db歸屬到具體業務線下面。cmdb相當於中樞系統,需要與各個元件互動,所以如果每個元件沒有統一在資料庫平臺上實現,需要制訂好介面,各個部分透過介面或者訊息佇列與資料庫平臺互動。更多常見的是指令碼中暴力的直接sql寫到庫裡,這種的也行,能用就行唄,就是low了點。


資料庫資料同步系統


這個主要是當時開發會提很多的MySQL資料同步的請求。將資料從線上同步到測試,預上線等,次數也不少,每次手工去同步真的是忙不過來,所以提前就做了一個單獨的線上同步系統,使用的ldap認證,開發登陸後,自己提個單子,然後可以自己執行同步,同步任務使用的celery非同步執行,執行完成後,可以傳送webhook 提示成功資訊。也可以將資料匯出成sql檔案或Excel檔案,並且可以在介面上獲取檔案,這個功能肯定不合規的,後面就禁用了。使用的查詢平臺進行下載。當時沒有工單系統,所以開發對資料庫的一些申請操作,有的放到這個系統上了,後面有了工單系統後,許可權的開通都轉移到工單系統上了。


資料庫的建立

這個部分需要需要跟很多系統進行互動,cmdb,查詢平臺,sql稽核平臺,授權,域名,呼叫的介面很多,或者直接放到佇列,讓各個部分去消費。這個有點複雜了,直接用介面就可以,畢竟qps不會很高。


資料庫例項安裝部署

在資料庫同步系統中使用了salt api進行部署,當時是測試透過了,但是沒有真正用,主要是當時沒時間,也沒心情搞了。



總體來說,資料庫平臺的各個元件我基本上都實現了,雖然不是一個完整的統一平臺,但是透過介面可以將資料串聯起來形成資料的閉環。


我實現的資料庫平臺的元件包含:

cmdb python 

資料同步 python 

基於master slave的定時任務平臺 golang

dbagent,收集資料庫的資訊,進行報表展示,告警,容量規劃等。 golang

mysql資料對比 golang

備份agent,這個備份的排程是linux crontab執行的,應該使用上面的定時任務平臺管理,更方便。 python


使用的開源元件包含:

查詢平臺 python,查詢平臺在新增新資料庫的時候,需要重啟,應該部署多個節點,上面掛nginx,輪詢重啟。

sql稽核平臺 python

監控告警

高可用, 高可用這做的不多,主要是工作上沒有條件去做,都是手工處理,切換。


自己寫的指令碼:

大事務分析指令碼 python 

processlist故障分析指令碼 python

variables 對比 python

表結構對比  python

輸出cluster架構資訊指令碼  python

脫敏指令碼,python  脫敏指令碼跟業務強相關無法通用,需要考慮冪等性。


mysql資料系統表空間解析 這個是實驗性質的開發, golang



關於中介軟體,個人感覺vitess更好,因為是golang開發的,相對比其他中介軟體,dba能容易hold住,有大廠線上使用,缺點是使用條件高,運維成本高,掌握原始碼成本高。


vitess原始碼研究中













來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25719946/viewspace-2853708/,如需轉載,請註明出處,否則將追究法律責任。

相關文章