資料庫開發環境的治理方案設計

fans news 發佈 2021-11-30T22:49:00+00:00

這是學習筆記的第 2390篇文章最近在和研發同學聊天的時候發現他們有一套資料庫開發環境,嚴格的說這是一套混合環境,算是開發和測試環境的合體。其中負責管理這套環境的研發同學已經受不了了,不禁發出了感嘆:什麼事情都找我,我又不是DBA.

這是學習筆記的第 2390篇文章

最近在和研發同學聊天的時候發現他們有一套資料庫開發環境,嚴格的說這是一套混合環境,算是開發和測試環境的合體。其中負責管理這套環境的研發同學已經受不了了,不禁發出了感嘆:什麼事情都找我,我又不是DBA.

因為研發側的資料庫連接池滿了也找他,資料庫連不上了也找他,跑了這些年,資料庫還從來沒有備份過。

我們一般涉及測試環境,預發布環境和線上等環境的管理,而開發環境的管理相對鬆散,為此我整理了一下開發環境的使用現狀。

整體而言,開發環境主要是為了提升開發效率,更方便的使用,主要是對於辦公機開放,對權限的管理是相對鬆散的,為此這些年我看到過很多特殊的情況:

1)有的研發部門會自購伺服器安裝資料庫,有些情況下安裝部署不上,還會找我們友情支持

2)有的研發部門會在一台伺服器上面ALL IN ONE的部署,各種服務堆在一個伺服器上面,一榮俱榮,一損俱損。

3)很多開發環境資料庫是安裝在Windows上面的,有的還是32位的,而我們在Windows平台的MySQL資料庫運維經驗幾乎為0

而測試環境的管理是相對會謹慎一些,儘可能只開放測試伺服器的權限,部分權限的使用是需要審批機制的。

開發環境到測試環境需要貫穿表結構的同步和數據同步,這樣一來一去,就能夠實現更快速的發布和管理。

為此,我整理了下當前的情況,整個資料庫的情況比想像的還要亂一些,比如資料庫只用了一個root帳號是對所有業務開通的,資料庫連接池配置了150個連接,也難怪很多業務反饋時常連不上資料庫,而更多的運維管理操作更是無從說起。

為此,做了如下的方案設計:目前有些研發側同學對於開發環境,測試環境的概念是比較模糊的,那麼我們就需要做一些前置的工作,把這個概念解釋清楚,然後對一些業務做拆分,有些是開發業務,那麼就完全可以通過自助化的開發環境交付來實現,如下圖中的開發環境管理區域,而測試環境我們可以單獨分配一台伺服器,可以根據業務大類來做一些拆分。

從訪問層面,測試伺服器是不能訪問開發資料庫的,這也是我們整體設計的一個邊界。

尤其是開發環境的管理,是我們需要著力改進的目標,有三個層面的實現難點,一個是對於虛擬化資源的管理,第二個是對於資料庫權限的管控,比如收到不少業務的需求,希望能夠在一個共同的資料庫實現開發,也就意味著權限的設計方面需要做一定程度的共享設置。第三個是數據的雙向同步,比如開發環境和測試環境的表結構映射,數據同步等。

最近在做的資料庫環境標準化管理,仔細想想還是一步大棋,要涉及的層面也很多,需要做中長期的規劃和推進。

各大平台都可以找到我

  • 微信公眾號:楊建榮的學習筆記

  • Github:@jeanron100

  • CSDN:@jeanron100

  • 知乎:@jeanron100

  • 頭條號:@楊建榮的學習筆記

  • 網易號:@楊建榮的資料庫筆記

  • 大魚號:@楊建榮的資料庫筆記

  • 騰訊雲+社區:@楊建榮的學習筆記


原創熱文:

維護之夜,說點故事和經驗

我們為什麼在MySQL中幾乎不使用分區表

新年大吉 總結了如下的感想

《大江大河2》最觸動我的一段經典對話

MySQL 8.0給開發方向帶來的一些困擾

關鍵字: