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