講師介紹
陶會祥
樂視雲數據庫負責人
先後任職於人人網、新浪、多點等公司。 期間任高級DBA,數據庫架構師等職。
擁有豐富的數據運維管理、自動化平臺建設經驗。
分享大綱:
樂視數據庫介紹
揭祕私有云RDS架構及實踐
一、樂視數據庫概述
1、數據庫平臺介紹
我們數據庫部門的數據庫種類較多:有MySQL、Oracle、MongoDB、Redis等。從另一角度,可分為傳統的DB (MySQL、MongoDB..) 及雲數據庫RDS。其中,MySQL在公司內部廣泛使用,今天將就樂視MySQL的運維情況進行分享。
2、數據庫產品現狀
MySQL版本較多,有官方MySQL5.5、MariaDB10、PXC5.6等;
架構有1主多從、1主多層、PXC(Percona-XtraDB-Cluster)等結構;
硬件有SAS盤、SATA SSD,主要使用SATA SSD。
3、數據庫架構
Master-Slave 結構有:
1主N從
1主N從+MB (master-backup)
1主N從+Relay
提個問題,圖中1主N從+Relay結構,引入relay有什麼優缺點?
優點:在跨機房高可用時,佈署一臺同步用的relay 在異地機房可減少跨機房同步帶寬。
缺點: 增加了架構複雜度,主從關係變成多層樹結構。若是使用不當,比較亂,易出錯。我見過超過4層的主從,梳理關係就很麻煩,建議不超過3層。
4、數據庫監控
我們的數據庫監控以開源軟件為主,有天兔Lepus、Prometheus、Open-Falcon等。
(1)天兔
Lepus是一個由Python+PHP開發的數據庫企業級監控系統
支持MySQL/Oracle/MongoDB/Redis等數據庫的監控
對於不是特別大的DB規模,天兔監控就夠用,也挺好用,可省去大量開發成本。
(2)Prometheus
Prometheus是一個開源的服務監控系統,它通過HTTP協議從遠程的機器收集數據並存儲在本地的時序數據庫上。它提供簡單的網頁界面、一個功能強大的查詢語言以及HTTP接口等。
(3)Open-Falcon
我們用Open-Falcon來做服務器基礎監控。對Open-Falcon進行了一些2次開發,如增加電話報警功能、IDC 的概念。
(4)作為補充還有Zabbix、微信告警等
此外,公司監控平臺提供email報警,短信報警,電話語音報警。
作為補充,數據庫平臺增加了微信告警。 優點是方便,成本低。 重要性大於郵件的,不到電話或短信級別的可以用微信。
5、數據庫備份
數據備份是非常重要的,我們的DBA也非常重視數據庫的備份工作。在這我把備份概念略微擴展,我認為數據庫實時從庫也是一種備份。
實時從庫
大存儲機器 單機多實例佈署(20-30+)
重要業務 異地機房從庫
多源複製從庫
說明:
我們找了一些大磁盤存儲10T+,在具佈署了30+左右的MySQL數據庫,不提供線上服務。 這樣相當於在一臺機器上有30個DB的熱備份。
對重要業務,進行異地跨機房從庫製作。可避免單一IDC異常,引發故障。
樂視有一些統計分析數據庫,使用MariaDB多源複製,一個實例同時同步多個主庫。某些情況也可以使用分析庫來恢復數據。
冷備份
xtrabackup 物理熱備份
全備+增備
Mount 掛載大存儲
定期清理歷史備份
主要使用xtrabackup來物理備份MySQL。使用了全備+增備,每週至少一次全備,多個增備。為了簡便,增備只做基於全備份的增備,並沒有使用增備的增備。利用Mount 掛載大的存儲 30T,做為備份存儲。為避免存儲容量滿,會有腳本定期壓縮,清理歷史備份。
二、私有云RDS實踐
1、私有云RDS項目背景
為什麼做私有云RDS? 有各種理由: PaaS平臺的流行,老闆提出需要把數據庫服務化、容器技術興起、成本優化(硬件成本+管理成本)、用戶體驗等。
但是最真實原因:忙!
2、RDS介紹
樂視雲RDS基於Docker + Mcluster 開發的一種高可用、可彈性伸縮的在線數據庫服務(Relational Database Service,簡稱RDS)。
其中,Mcluster(MySQL Server Cluster)是MySQL數據庫集群。
Mcluster是我們開發出的一種私有云MySQL集群
基於PXC (Percona Xtradb Cluster)封裝和調優
真正的多主架構沒有單點故障,高可用性
是RDS的根基
良好的擴展性
PXC官方的鏈接: https://www.percona.com/doc/percona-xtradb-cluster/5.6/index.html
3、私有云RDS架構
(1)架構圖
RDS整體架構主要分為以下幾大部分:
Docker:樂視雲RDS是跑在Docker容器內部
Database:為具體的數據庫。可以是MySQL,也可以是PostgreSQL等任何數據庫
Matrix:負責前端數據庫創建、管理、監控、維護和相關資源調度
BeeHive:負責資源的調度管理,BeeHive類似Kubernete
Data Analysis:負責數據庫日誌的分析還有用戶行為分析
(2)RDS架構圖2
普通用戶登錄私有云平臺matrix,申請創建RDS。 BeeHive計算分析機群中的資源情況,選擇合適的3臺機器佈署Mcluster DB,同時還會額外佈署一個VIP容器來做DB高可用和負戴均衡。
用戶可以通過此VIP來訪問MySQL。RDS管理員可通過matrix後臺對平臺全部的RDS進行管理、監控運行狀態等。
4、Mcluster架構
Mcluster是樂視雲基於PXC (Percona XtraDB Cluster)封裝和調優的私有云MySQL集群。因為基於PXC封裝,故Mcluster具有和PXC 相同的特點。
多點讀寫
機群中任一DB節點都可以寫入
並行複製
可以多個線程複製,以事務為單位,多個事務同時並行推送到所有集群節點
強一致性
各節點數據強一致性
高可用性
單一節點故障不會影響機群的可用性
兼容傳統MySQL
與傳統MySQL幾乎完全兼容,數據可以直接使用不需要任何轉換
Mcluster和主從MySQL對比
RDS界面
RDS界面——用戶前端
類似阿里雲、AWS的RDS用戶平臺頁面。用戶選擇RDS的配置,主要是磁盤及內存,點下一步,就可以提交RDS申請。(每個用戶可以免費建3個,超出需要DBA審核)
RDS界面——管理後臺
RDS管理員可登錄管理後臺進行RDS管理,主要功能如下:
用戶、宿主機資源管理
RDS日常管理 申請審核,RDS信息查詢,人員變更等
Docker 容器管理
RDS備份
RDS監控 RDS運行狀態監控
DockerFile
DockerFilek完成的工作:
安裝及配置MySQL
安裝相關軟件
啟動mcluter-manager
Mcluster-Manager
大家可以看到在DockerFile最後一行,會啟動mcluster-manager。
Mclustre-Manager功能:
tornado的web服務
啟動、停止初始化MySQL
監控、管理MySQL
mcluster-manager安裝在Docker容器中,用來管理MySQL。外部系統不直接操作MySQL,而是通過mcluster-manager API 調用。包括啟動、停止、初始化、監控、備份、管理MySQL等功能。
RDS運用
私有云RDS上線後大大減輕了DBA工作量,降低了服務器成本和人力成本。 目前在樂視體系各子公司得到廣範使用。
運維和坑
數據庫規範、流程非常重要
私有云 可節省大量機器成本及人力成本
私有云RDS產品設計、管理該異與公有云
RDS用戶在線修改大表,引發故障
多節點同時大量寫,容易引起死鎖
組件較多,相互間依賴太強
運維工具待完善 如宿主機器故障,恢復工作量大
數據庫規範、流程非常重要,因為這是運維自動化的基礎。我們吃過這個虧,數據庫版本眾多,並且安裝目錄不同,帶來很大的麻煩。
使用私有云確實是可節省大量機器成本及人力成本,這個在樂視雲是可以確認的經驗,因為我們每臺機器上安裝了20-30個Docker,即跑了20-30個MySQL,較傳統的MySQL佈署節省大量成本。若是有個別業務寫入量特別大,因為PXC多份寫的原因,這時我們也可能遷移到傳統的主從DB方式。
私有云RDS產品設計,管理該和公有云有區別。如曾經有RDS用戶在線修改大表,引發故障。在公有云上,DBA不用關心此問題。 但是因為是公司內部用戶,是私有云,故只能是我們DBA來處理,善後 :( 另私有云常還有產品樹的概念,而公有云就不用類似的設計。
組件較多,相互間依賴太強。我們的RDS 系統做得還是有點太複雜,未來版本希望可減化。
運維工具待完善,如宿主機器故障,恢復工作量較大。 某一宿主機故障,要恢復20-30+的DB。當前是DBA手動執行腳本,還是有點low。
Q&A
Q1:數據庫備份主要是使用物理備份還是邏輯備份?
A1:主要使用xtrabackup物理備份MySQL。
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的可能。
End.
運行人員:中國統計網小編(微信號:itongjilove)
微博ID:中國統計網
中國統計網,是國內最早的大數據學習網站,公眾號:中國統計網
http://www.itongji.cn