回覆列表
-
1 # 科技改變人類
-
2 # 數通暢聯
MySQL是開發者比較常用的一種資料庫,MySQL運維體系的建立是為了結合體系化的管理更好的服務於客戶,同時對MySQL資料庫進行更好的管理,保證資料庫能夠更好的執行。MySQL運維體系建設主要分為以下幾個部分。
1.部署環境:MySQL的安裝部署對於開發者來說是必須掌握的一項技能,因此資料庫的安裝是運維體系建設中需要優先考慮的,還需要對引數(作業系統、資料庫引數)進行配置,此外還需對登入許可權、資料庫使用者許可權進行分配。
2.備份/還原:對於資料庫來說,有個可用的備份是非常重要的,定期對資料庫進行備份,防止有資料損壞,使用者誤操作等情況造成資料丟失。保證了資料的存在,運維才有意義,否則其他工作做的再好也是白搭。
3.監控:對於運維來說,首先要保證資料庫的執行,然後就是執行中系統的效能。針對資料庫執行狀態,有沒有資料庫中斷或異常、錯誤或警告;針對資料庫效能,有沒有效能問題或者效能隱患,這些都是要進行監控的。
4.故障處理:在監控過程中發現,或者系統使用者反饋出來的資料庫錯誤或者警告,進行故障定位、診斷並修復,修復後對根本原因進行分析,對故障原因進行總結記錄。
5.效能最佳化:在監控過程中發現,或者系統使用者反饋出來的資料庫效能問題,進行最佳化。針對SQL最佳化,保證最小化查詢結果集的原則,不做不必要的操作;儘量不做全表查詢,根據需要選擇需要的欄位需要的行。
本次分享的是如何使用ARkcontrol來搭建mysql的運維體系,從功能、架構以及安裝內容上來詳細介紹ARkcontrol。
初識MySQL
資料庫特別是mySQL這樣不是很成熟化的商業資料庫,使用起來其實並不方便,這也是為什麼很多網際網路公司,像騰訊或者美團都有專門的團隊DBA去支援最後的運維工作。
MySQL運維首先要搞定的是安裝部署這塊,對於一般開發者來說如果不專門抽時間學幾個小時或者學幾天的話一般很難完善的部署mysql的相關服務。接著在例項或者叢集增多之後,需要對它進行管理,包括整個的叢集拓撲關係,切換關係。剩下的是所有的做資料庫都很關注的高頻切換,能夠在資料庫出問題的時候及時切走這點也很重要。最後是一些輔助的東西,包括監控告警,備份恢復,資料遷移,效能最佳化,稽核和審計,常規的系統巡檢。對於涉及到金融或者對資料比較敏感的公司,稽核和審計是重中之重。
我們要做些什麼樣的東西才能滿足大多數人的需求,給大家帶來一些實惠。讓資料庫在更廣的範圍推廣開來,能夠被很輕鬆的去使用。最終我們做了一款叫ArkControl的產品,他是一個雲管平臺,社群版可以免費下載使用,可以一鍵實現一個比較全面的mysql運維體系,不用花費太多成本就能實現一些資料庫運維的基本功能,至少不用再透過命令發去安裝mysql或者mysql叢集。
這個產品的目標使用者不是像美團這樣的大企業,而是那些用到了mysql,但是沒有DBA或者DBA資源不是很豐富的公司。
根據後續的發展,我們還會支援更多的NewSQL、NoSQL以及大資料體系,比方馬上要支援的Redis,在資料層面,Redis和mysql是使用者和需求最多的,一個是快取,一個是資料庫。
另外在管理資料庫的過程中,又出現了2個需求,一個是資料的異構同步,一般的企業都會同時使用多種資料庫,比如用Redis做快取,用大資料系統存資料分析,正常情況下會以OLTP的mysql資料庫作為資料的基準,以供快取使用或者大資料分析。類似這種異構實時同步,目前實際上沒有特別好的工具或者是產品來支援這樣的功能。第二個需求是混合雲資料庫的管理,這塊我們也已經支援。
AkeControl架構體系

上圖是整個AkeControl在管理資料庫層面需要了解和支援的功能,以及要處理的處理的需求點。可能看起來比較複雜,但是解析出來其實還蠻簡單,核心在於資料庫叢集。
要想用好一個mysql叢集,首先要有一個mysql的中介軟體作為接入層訪問到不同的叢集,以業務訪問和系統的架構分離,這樣的話就可以在底層更輕鬆的管理資料庫。線上資料庫的監控方面,我們做了一個分散式的類似於Redis的哨兵,然後用投票的機制來解決資料庫判斷是否存活的問題,更準確更高效。
最左側從主機管理到下面的稽核審計這部分展示的是AkrContro能提供的功能,這些都是為了滿主開發者對資料庫運維的需求。
其中就又剛才提到的資料異構傳輸,我們有一個專門的資料傳輸服務用來做mysql到其他資料庫的異構操作,由此實現底層資料的全線打通,輕鬆將熱點或者是熱資料傳輸到不同的系統中,做實時的分析。
還有很重要的一塊,也是今後我們發展的重點——智慧運維,包括資料庫的智慧最佳化,智慧的診斷和巡檢。實現逐步的從人工的運維轉化為智慧運維,類似最最佳化介面或最最佳化配置等功能。
AkrControl安裝了什麼
接下來簡單介紹一些AkrControl都安裝了些什麼,這裡麵包含了幾個部分,首先是一個基本的web頁面,用來做前端展示以及一些操作的輸入輸出。還有一個用GO寫的Akr-service,用於資料的排程,相當於web的control層。然後是Akr-agent,它被裝所有需要管理的伺服器上,負責去收集資料庫的資訊,主機的資訊,包括接受中控傳輸過來的安裝命令解除安裝命令等,相當於一個遠端的操作的代理。
再接下來是儲存,一個mysql,另外兩個是ElasticSearch和Grafana,它們是為了儲存監控資料的,我們會用ES收集監控的資訊,然後用Grafana展示,目前是這麼計劃的,後續可能會將Grafana替換成我們自己的web層。
最後還裝了Arkit-Service和Arkgate-Service,Arkit-Service用來做稽核的,Arkgate-Service做資料傳輸。
上圖展示的是部署AkrControl所需的配置,最小配置只用兩臺機器,一個配置庫和一個備份資料存放。下方是推薦配置,更安全一些。
過一段時間,最小配置可能只需一臺就夠了,實現最小安裝,在筆記本上也能體驗到。現在還在最佳化中,不過應該是很快就會發布。