《來自Facebook的一些MySQL運(yùn)維經(jīng)驗(yàn)》要點(diǎn):
本文介紹了來自Facebook的一些MySQL運(yùn)維經(jīng)驗(yàn),希望對(duì)您有用。如果有疑問,可以聯(lián)系我們。
1. 概要
每臺(tái)機(jī)器都使用多實(shí)例的模型. 每個(gè)機(jī)器放多個(gè)實(shí)例,每個(gè)實(shí)例放多個(gè)DB.
一些信息可以參考:?https://www.youtube.com/watch?v=UBHcmP2TSvk
多實(shí)例之間沒有進(jìn)行資源隔離,這么做是讓每個(gè)實(shí)例都能發(fā)揮最大性能.
目前大部分核心業(yè)務(wù)已切換成MyRocks引擎,在機(jī)器硬件配置不變的情況,約可節(jié)省一半機(jī)器.
放在MyRocks上的核心業(yè)務(wù)主要有:Feed、Post、社交圖譜等讀寫混合業(yè)務(wù).
MyRocks項(xiàng)目地址:https://github.com/facebook/mysql-5.6
另外,MariaDB 10.2版本也即將整合MyRocks引擎.
2. 高可用機(jī)制
采用基于GTID的一主多從結(jié)構(gòu),外加一個(gè)基于lossless semi-sync機(jī)制的mysqlbinlog實(shí)現(xiàn)的binlog server(可以理解為MySQL 5.7的loss zero replication).
基于多數(shù)派實(shí)現(xiàn)自動(dòng)選主.
基于配置中心實(shí)現(xiàn)切換,未使用VIP.
在認(rèn)為semi-sync復(fù)制可保證主從數(shù)據(jù)一致性的假設(shè)前提下,發(fā)生故障切換時(shí),利用上述的binlog server中的日志進(jìn)行補(bǔ)全后再選新主、切換.
若個(gè)別情況下由于特殊原因,出現(xiàn)從庫全部掛掉的情況,會(huì)將全部請(qǐng)求切到主庫,由它扛起所有的業(yè)務(wù)服務(wù)壓力.
某個(gè)從庫掛掉時(shí),可以動(dòng)態(tài)摘除.
3. 備份機(jī)制
所有的備份都是基于mysqldump實(shí)現(xiàn),之所以采用mysqldump邏輯備份好處有:
上面提到,因?yàn)椴捎枚鄬?shí)例、多DB結(jié)構(gòu),備份時(shí)可以多DB并行備份.當(dāng)然了,也會(huì)控制并行備份的數(shù)量,避免影響在線業(yè)務(wù)性能.
備份放在集中存儲(chǔ)(HDFS)上, 據(jù)說已達(dá)EB級(jí)別容量.
關(guān)于備份的作用定位:
4. 如何快速部署從庫
可使用xtrabackup在現(xiàn)有存活的SLAVE實(shí)例上備份,也可在主庫上發(fā)起備份,再利用WDT(或者是BT)協(xié)議傳輸?shù)疆惖?用于拉起從庫.
關(guān)于WDT項(xiàng)目:https://github.com/facebook/wdt
5. 高度自動(dòng)化
面對(duì)大規(guī)模的數(shù)據(jù)庫實(shí)例,手工處理完全不現(xiàn)實(shí).目前在facebook主要是利用Python開發(fā)內(nèi)部DB運(yùn)維平臺(tái),所以Python技能方面要求比較高.
采用他們自已的osc工具執(zhí)行Online DDL(也是本次DTCC大會(huì)上lulu的分享主題),它最早用PHP開發(fā),雖早已開源,但實(shí)在不好用,所以幾乎只在內(nèi)部使用.這個(gè)工具不同于pt-osc,相對(duì)來說更有優(yōu)勢(shì),比如可以避免使用pt-osc最常遇到的主從數(shù)據(jù)延遲問題.
項(xiàng)目地址:https://github.com/facebookincubator/OnlineSchemaChange
6. 團(tuán)隊(duì)結(jié)構(gòu)及技能樹
DBA團(tuán)隊(duì)更多的是負(fù)責(zé)私有DB云平臺(tái)的建設(shè).
Schema設(shè)計(jì)及DB拆分等由性能優(yōu)化團(tuán)隊(duì)負(fù)責(zé).
在線表結(jié)構(gòu)變更:數(shù)據(jù)庫資源申請(qǐng)由質(zhì)量服務(wù)團(tuán)隊(duì)負(fù)責(zé),做到資源的合理分布、分配,如果某個(gè)業(yè)務(wù)只需要個(gè)位數(shù)級(jí)別的DB實(shí)例,可以自行在私有DB云平臺(tái)中申請(qǐng)部署,當(dāng)數(shù)量比較大時(shí),需要先經(jīng)過質(zhì)量服務(wù)團(tuán)隊(duì)評(píng)估通過.
數(shù)據(jù)庫資源申請(qǐng)由質(zhì)量服務(wù)團(tuán)隊(duì)負(fù)責(zé),做到資源的合理分布、分配.如果某個(gè)業(yè)務(wù)需要小量DB實(shí)例,可以自行在私有DB云平臺(tái)中申請(qǐng)部署;當(dāng)數(shù)量比較大時(shí),需要先經(jīng)過質(zhì)量服務(wù)團(tuán)隊(duì)評(píng)估通過才可以.
文章來自微信公眾號(hào):云DB
轉(zhuǎn)載請(qǐng)注明本頁網(wǎng)址:
http://www.snjht.com/jiaocheng/4100.html