數據庫開發環境的治理方案設計
最近在和研發同學聊天的時候發現他們有一套數據庫開發環境,嚴格的說這是一套混合環境,算是開發和測試環境的合體。其中負責管理這套環境的研發同學已經受不了了,不禁發出了感嘆:什么事情都找我,我又不是DBA.
因為研發側的數據庫連接池滿了也找他,數據庫連不上了也找他,跑了這些年,數據庫還從來沒有備份過。
我們一般涉及測試環境,預發布環境和線上等環境的管理,而開發環境的管理相對松散,為此我整理了一下開發環境的使用現狀。
整體而言,開發環境主要是為了提升開發效率,更方便的使用,主要是對于辦公機開放,對權限的管理是相對松散的,為此這些年我看到過很多特殊的情況:
1)有的研發部門會自購服務器安裝數據庫,有些情況下安裝部署不上,還會找我們友情支持
2)有的研發部門會在一臺服務器上面ALL IN ONE的部署,各種服務堆在一個服務器上面,一榮俱榮,一損俱損。
3)很多開發環境數據庫是安裝在Windows上面的,有的還是32位的,而我們在Windows平臺的MySQL數據庫運維經驗幾乎為0
而測試環境的管理是相對會謹慎一些,盡可能只開放測試服務器的權限,部分權限的使用是需要審批機制的。
開發環境到測試環境需要貫穿表結構的同步和數據同步,這樣一來一去,就能夠實現更快速的發布和管理。
為此,我整理了下當前的情況,整個數據庫的情況比想象的還要亂一些,比如數據庫只用了一個root賬號是對所有業務開通的,數據庫連接池配置了150個連接,也難怪很多業務反饋時常連不上數據庫,而更多的運維管理操作更是無從說起。
為此,做了如下的方案設計:目前有些研發側同學對于開發環境,測試環境的概念是比較模糊的,那么我們就需要做一些前置的工作,把這個概念解釋清楚,然后對一些業務做拆分,有些是開發業務,那么就完全可以通過自助化的開發環境交付來實現,如下圖中的開發環境管理區域,而測試環境我們可以單獨分配一臺服務器,可以根據業務大類來做一些拆分。
從訪問層面,測試服務器是不能訪問開發數據庫的,這也是我們整體設計的一個邊界。
尤其是開發環境的管理,是我們需要著力改進的目標,有三個層面的實現難點,一個是對于虛擬化資源的管理,第二個是對于數據庫權限的管控,比如收到不少業務的需求,希望能夠在一個共同的數據庫實現開發,也就意味著權限的設計方面需要做一定程度的共享設置。第三個是數據的雙向同步,比如開發環境和測試環境的表結構映射,數據同步等。
最近在做的數據庫環境標準化管理,仔細想想還是一步大棋,要涉及的層面也很多,需要做中長期的規劃和推進。
本文轉載自微信公眾號「楊建榮的學習筆記」,可以通過以下二維碼關注。轉載本文請聯系楊建榮的學習筆記公眾號。