《揭秘樂視MySQL數據庫架構與運維實踐》要點:
本文介紹了揭秘樂視MySQL數據庫架構與運維實踐,希望對您有用。如果有疑問,可以聯系我們。
陶會祥 樂視云數據庫負責人
我們數據庫部門的數據庫種類較多:有MySQL、Oracle、MongoDB、Redis等.從另一角度,可分為傳統的DB (MySQL、MongoDB..) 及云數據庫RDS.其中,MySQL在公司內部廣泛使用,今天將就樂視MySQL的運維情況進行分享.
?
?
Master-Slave 結構有:
提個問題,圖中1主N從+Relay結構,引入relay有什么優缺點?
我們的數據庫監控以開源軟件為主,有天兔Lepus、Prometheus、Open-Falcon等.
(1)天兔
對于不是特別大的DB規模,天兔監控就夠用,也挺好用,可省去大量開發成本.
(2)Prometheus
Prometheus是一個開源的服務監控系統,它通過HTTP協議從遠程的機器收集數據并存儲在本地的時序數據庫上.它提供簡單的網頁界面、一個功能強大的查詢語言以及HTTP接口等.
(3)Open-Falcon
我們用Open-Falcon來做服務器基礎監控.對Open-Falcon進行了一些2次開發,如增加電話報警功能、IDC 的概念.
(4)作為補充還有Zabbix、微信告警等
此外,公司監控平臺提供email報警,短信報警,電話語音報警.
作為補充,數據庫平臺增加了微信告警. 優點是方便,成本低. 重要性大于郵件的,不到電話或短信級別的可以用微信.
數據備份是非常重要的,我們的DBA也非常重視數據庫的備份工作.在這我把備份概念略微擴展,我認為數據庫實時從庫也是一種備份.
實時從庫
說明:?
冷備份
主要使用xtrabackup來物理備份MySQL.使用了全備+增備,每周至少一次全備,多個增備.為了簡便,增備只做基于全備份的增備,并沒有使用增備的增備.利用Mount 掛載大的存儲 30T,做為備份存儲.為避免存儲容量滿,會有腳本定期壓縮,清理歷史備份.
為什么做私有云RDS? 有各種理由: PaaS平臺的流行,老板提出需要把數據庫服務化、容器技術興起、成本優化(硬件成本+管理成本)、用戶體驗等.
但是最真實原因:忙!
樂視云RDS基于Docker + Mcluster 開發的一種高可用、可彈性伸縮的在線數據庫服務(Relational Database Service,簡稱RDS).
其中,Mcluster(MySQL Server Cluster)是MySQL數據庫集群.
PXC官方的鏈接: https://www.percona.com/doc/percona-xtradb-cluster/5.6/index.html
(1)架構圖
RDS整體架構主要分為以下幾大部分:
(2)RDS架構圖2
普通用戶登錄私有云平臺matrix,申請創建RDS.? BeeHive計算分析機群中的資源情況,選擇合適的3臺機器布署Mcluster DB,同時還會額外布署一個VIP容器來做DB高可用和負戴均衡.
用戶可以通過此VIP來訪問MySQL.RDS管理員可通過matrix后臺對平臺全部的RDS進行管理、監控運行狀態等.
Mcluster是樂視云基于PXC (Percona XtraDB Cluster)封裝和調優的私有云MySQL集群.因為基于PXC封裝,故Mcluster具有和PXC 相同的特點.
Mcluster和主從MySQL對比
RDS界面
RDS界面——用戶前端
類似阿里云、AWS的RDS用戶平臺頁面.用戶選擇RDS的配置,主要是磁盤及內存,點下一步,就可以提交RDS申請.(每個用戶可以免費建3個,超出需要DBA審核)
RDS界面——管理后臺
RDS管理員可登錄管理后臺進行RDS管理,主要功能如下:
DockerFile
DockerFilek完成的工作:
Mcluster-Manager
大家可以看到在DockerFile最后一行,會啟動mcluster-manager.
Mclustre-Manager功能:
mcluster-manager安裝在Docker容器中,用來管理MySQL.外部系統不直接操作MySQL,而是通過mcluster-manager API 調用.包括啟動、停止、初始化、監控、備份、管理MySQL等功能.
RDS運用
私有云RDS上線后大大減輕了DBA工作量,降低了服務器成本和人力成本. 目前在樂視體系各子公司得到廣范使用.
運維和坑
數據庫規范、流程非常重要,因為這是運維自動化的基礎.我們吃過這個虧,數據庫版本眾多,并且安裝目錄不同,帶來很大的麻煩.
使用私有云確實是可節省大量機器成本及人力成本,這個在樂視云是可以確認的經驗,因為我們每臺機器上安裝了20-30個Docker,即跑了20-30個MySQL,較傳統的MySQL布署節省大量成本.若是有個別業務寫入量特別大,因為PXC多份寫的原因,這時我們也可能遷移到傳統的主從DB方式.
私有云RDS產品設計,管理該和公有云有區別.如曾經有RDS用戶在線修改大表,引發故障.在公有云上,DBA不用關心此問題. 但是因為是公司內部用戶,是私有云,故只能是我們DBA來處理,善后 :( ?另私有云常還有產品樹的概念,而公有云就不用類似的設計.
組件較多,相互間依賴太強.我們的RDS 系統做得還是有點太復雜,未來版本希望可減化.
運維工具待完善,如宿主機器故障,恢復工作量較大. 某一宿主機故障,要恢復20-30+的DB.當前是DBA手動執行腳本,還是有點low.
Q2:使用數據庫增量備份,恢復起來很麻煩嗎?
A2:樂視云使用基于全備的增備,并不會進行增備的增備.恢復起來并不麻煩.
Q3:PXC多主架構是否是采用一個節點寫,其余節點讀的架構?
A3:多點大量同時寫數據,有時會有鎖問題,所以我們主要是寫一節點,多節點讀.
Q4:如果寫的節點掛了怎么辦?
A4:我們前面有個架構圖,用戶通過Gblance來訪問RDS.(相當于做了VIP高可用)
Q5:前面講到廣州到北京復制,你們走公網還是專線?
A5:我們使用專線.樂視云在全國有10多個機房.大機房之間走專線.
Q6:樂視云RDS是否存在著licence問題?
A6:不會有licence問題.我們的RDS是基于Docker + MySQL開發,而MySQL、Docker都是開源軟件,沒有licence風險.
Q7:樂視云RDS會開源嗎?會對外提供RDS服務么?
A7:目前暫無開源計劃,只用在集團內部提供私有云服務,但依公司發展戰略,不排除未來提供公有云RDS的可能.
文章來自微信公眾號:DBAplus社群
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/1958.html