MySQL數(shù)據(jù)庫(kù)運(yùn)維的五大指標(biāo)
如何評(píng)價(jià)一個(gè)公司數(shù)據(jù)庫(kù)運(yùn)維水平的高低?用什么來(lái)進(jìn)行橫向與縱向?qū)Ρ龋孔詣?dòng)化平臺(tái)建設(shè)的目標(biāo)是什么?必須有相應(yīng)的指標(biāo)體系來(lái)指導(dǎo),此指標(biāo)體系必須滿足以下條件:
- 可以用數(shù)字來(lái)測(cè)算和衡量
- 最終指標(biāo),而不是中間指標(biāo)
比如有時(shí)DBA會(huì)關(guān)注數(shù)據(jù)庫(kù)的吞吐量,但吞吐量越高不能代表數(shù)據(jù)庫(kù)提供的服務(wù)質(zhì)量越好,開(kāi)發(fā)人員關(guān)心這個(gè)指標(biāo)的原因也是因?yàn)閾?dān)心過(guò)高的吞吐量會(huì)影響響應(yīng)時(shí)間或者造成系統(tǒng)不可用,所以這只是一個(gè)中間指標(biāo)。
- 可以全面衡量一個(gè)網(wǎng)站的數(shù)據(jù)庫(kù)運(yùn)維水平,而不會(huì)顧此失彼
- 有人文關(guān)注
1.1. 數(shù)據(jù)安全
數(shù)據(jù)安全是第一位的,DBA的首要職責(zé)必須保證不丟數(shù)據(jù),丟掉數(shù)據(jù)就丟掉了飯碗!
這有3方面的含義:
1)在人為誤操作的時(shí)候(update,insert,delete,drop,alter),能夠恢復(fù)數(shù)據(jù)到正確的狀態(tài)
2)在機(jī)房,硬件故障或者操作系統(tǒng),數(shù)據(jù)庫(kù)軟件故障的時(shí)候,能夠恢復(fù)數(shù)據(jù)到正確的狀態(tài)
3)不丟事務(wù),保證已經(jīng)入庫(kù)的數(shù)據(jù)能夠被正確的查詢(xún)到
另外,還要注意到需要保證主從數(shù)據(jù)庫(kù)的一致性,否則讀寫(xiě)分離的情況下其實(shí)在用戶(hù)看來(lái)仍然丟失了數(shù)據(jù)。
對(duì)于1,主要靠備份來(lái)保證,因?yàn)閺?fù)制可以容災(zāi),卻不可以容錯(cuò)(當(dāng)然延遲備份在一定程度可以)。
對(duì)于2,可能用備份來(lái)恢復(fù),也可能直接進(jìn)行主庫(kù)或者從庫(kù)的切換來(lái)恢復(fù)服務(wù)
對(duì)于3,電商,支付庫(kù)的要求會(huì)非常高,采用最高安全級(jí)別的數(shù)據(jù)庫(kù)軟硬件設(shè)置以及冗余設(shè)備,目標(biāo)是不丟任何1個(gè)事務(wù),因?yàn)榧词?個(gè)事務(wù)也可能造成大量金錢(qián)的損失,同時(shí)造成企業(yè)信譽(yù)的下降。
“911”事件曾造成1200家公司受災(zāi),其中一半以上的企業(yè)因?yàn)镮T數(shù)據(jù)損毀、丟失,導(dǎo)致業(yè)務(wù)無(wú)法恢復(fù),以致于宣布倒閉。金融界巨頭Morgan Stanley 全球營(yíng)業(yè)部第二天就恢復(fù)正常工作,正是因?yàn)橄惹敖⒌倪h(yuǎn)程容災(zāi)系統(tǒng)保護(hù)了重要的數(shù)據(jù)。
可測(cè)量指標(biāo):
- RPO(Recovery Point Object):恢復(fù)點(diǎn)指標(biāo),是指災(zāi)難發(fā)生后,容災(zāi)系統(tǒng)能把數(shù)據(jù)恢復(fù)到災(zāi)難發(fā)生前的哪一個(gè)時(shí)間點(diǎn)的數(shù)據(jù),它衡量企業(yè)在災(zāi)難發(fā)生后會(huì)丟失多少生產(chǎn)數(shù)據(jù)
- RTO(Recovery Time Object):系統(tǒng)恢復(fù)的時(shí)間
RPO說(shuō)明了備份的可靠性和完整性,RTO說(shuō)明了恢復(fù)的可靠性與速度。
由于MySQL開(kāi)源版本并不提供熱備的工具以及備份管理的工具(MSSQL,Oracle是提供的,當(dāng)然它們是商業(yè)軟件),所以要求DBA開(kāi)發(fā)出自己的備份還原管理平臺(tái)(腳本)。這也是DBA的首件工作。#p#
1.2. 無(wú)故障(停機(jī))時(shí)間
運(yùn)維和開(kāi)發(fā)不一樣,開(kāi)發(fā)最重要的是保證一定效率的情況下實(shí)現(xiàn)功能,同時(shí)程序Bug少。運(yùn)維講的是提供穩(wěn)定服務(wù)的時(shí)間。用術(shù)語(yǔ)來(lái)說(shuō)就是幾個(gè)9,具體含義就是年度不可服務(wù)(不管是主動(dòng)的還是被動(dòng)的)時(shí)間除以全年時(shí)間,百分比越高越好。具體和時(shí)間的換算關(guān)系見(jiàn)下表:
根據(jù)墨菲定理(If anything can go wrong,it will)的推論,世界上沒(méi)有 100% 可靠的 Web站點(diǎn)(除非不運(yùn)行)。運(yùn)維的最高境界當(dāng)然就是5個(gè)9了,一年停機(jī)時(shí)間只有5分鐘,這是相當(dāng)難以達(dá)到的目標(biāo),往往一個(gè)大故障就會(huì)把全年的停機(jī)時(shí)間用完。
業(yè)界網(wǎng)站的可用性都是多少?引人注目的 Web 新貴 Twitter (http://twitter.com), 2008 年前四個(gè)月的可用性只有 98.72%,有 37小時(shí) 16分鐘不能提供服務(wù),連2個(gè)9 都達(dá)不到,甚至還沒(méi)達(dá)到”基本可用”狀態(tài)。電子商務(wù)巨頭 eBay 2007 年的可用性是 99.94%,考慮到 eBay 站點(diǎn)的規(guī)模與應(yīng)用的復(fù)雜程度,這是個(gè)很不錯(cuò)可用性指標(biāo)了。
多數(shù)情況下,網(wǎng)站可用性會(huì)是 SLA (Service Level Agreement, 服務(wù)水平協(xié)議) 中的一個(gè)重要度量指標(biāo),也是運(yùn)維團(tuán)隊(duì)向自己老板做出的正式承諾。但可用性是能夠持續(xù)改進(jìn)的東西,運(yùn)維負(fù)責(zé)人不可希望一步登天。
另外,如果是做第三方托管,需要明確第三方的服務(wù)能力與責(zé)任。否則,IDC 經(jīng)常斷電或者斷網(wǎng),即使自身做的再好也無(wú)法保證服務(wù)時(shí)間了。
提高可用性的一些常規(guī)策略有消除單點(diǎn),部署冗余設(shè)備等。如果要提供更高的可用性,比如 4 個(gè) 9 甚至 5 個(gè)9,就不是簡(jiǎn)單靠硬件就能做到的事情,還需要建立自動(dòng)化的工具與平臺(tái),完善的流程制度與變更機(jī)制,7*24小時(shí)的專(zhuān)人值班等。
可測(cè)量指標(biāo):
年度不可服務(wù)時(shí)間比例:年度不可服務(wù)(不管是主動(dòng)的還是被動(dòng)的)時(shí)間除以全年時(shí)間。#p#
1.3. 響應(yīng)時(shí)間
響應(yīng)時(shí)間是指一條查詢(xún)或者更新語(yǔ)句從發(fā)出請(qǐng)求到接收完數(shù)據(jù)的時(shí)間。
因?yàn)樽畲箜憫?yīng)時(shí)間的不確定性和不可重復(fù)性,所以一般使用X%的查詢(xún)響應(yīng)時(shí)間作為指標(biāo)。如果值為95%為10ms,意味著95%的查詢(xún)會(huì)在10ms內(nèi)返回。對(duì)于OLTP查詢(xún)來(lái)說(shuō),在50ms內(nèi)返回是比較理想的結(jié)果。超過(guò)200ms的查詢(xún)可以視為慢查詢(xún)。
此指標(biāo)較難收集,采用tcprstat雖然可以,但是tcprstat本身有一定的負(fù)載,另外也只收集最高到99%的響應(yīng)時(shí)間,如果想知道比如99.999%的平均、最大響應(yīng)時(shí)間就需要修改源碼了。
目前有2個(gè)思路收集此數(shù)據(jù):
采用tcpdump+pt-query-digest,將tcpdump抽樣數(shù)據(jù)發(fā)送到中心機(jī)上利用pt-query-digest進(jìn)行分析,然后入庫(kù)后顯示。此方法也需要修改pt源碼,因?yàn)樵娴膒t支持的粒度太粗了,如下圖,100ms直接跳到了1s:
此方法的優(yōu)點(diǎn)是可以顯示不同語(yǔ)句的情況,缺點(diǎn)是如果抽樣時(shí)間長(zhǎng),中心機(jī)分析不完,而抽樣時(shí)間短又可能信息沒(méi)有代表性。
另外一個(gè)更輕量級(jí)的方法是將慢查詢(xún)?nèi)罩鹃y值打到50ms甚至更低,然后統(tǒng)計(jì)慢查詢(xún)時(shí)間的分布,可以按時(shí)間和服務(wù)器維度進(jìn)行分析(使用pt工具也可以得到不同語(yǔ)句的響應(yīng)時(shí)間分布)如下表所示:
- 4901 130421
- dt num avg
- —————————–
- 0 1839 605
- 1 920 596
- 2 1215 450
- 3 973 481
- 4 488 603
- 5 449 487
- 6 516 597
- 7 874 634
- 8 1129 532
- 9 1160 457
- 10 1115 502
- 11 987 529
- 12 1531 559
- 13 1185 537
- 14 2238 1235
- 15 1418 534
- 16 1589 535
- 17 951 548
- 18 1790 531
- 19 1520 503
- 20 1845 496
- 21 1855 542
- 22 1583 564
- 23 1840 562
- None 31010 587
- ip num ratio
- —————————–
- 10.73.xx.xx 4418 14
- 10.75.xx.xx 121 0
- 10.75.xx.xx 7905 25
- 10.75.xx.xx 5706 18
- 10.75.xx.xx 6812 22
- 10.75.xx.xx 6048 20
- None 31010 100
根據(jù)此結(jié)果可以發(fā)現(xiàn)慢查詢(xún)?cè)诜?wù)器之間分布并不均衡,這也是分析問(wèn)題的很好的切入點(diǎn)。
可測(cè)量指標(biāo):
X%的查詢(xún)/寫(xiě)入響應(yīng)時(shí)間(ms)。#p#
1.4. 成本
在解決了穩(wěn)定和速度后,就是成本的問(wèn)題了。有人認(rèn)為如果不計(jì)較成本,任何功能都是可以實(shí)現(xiàn)的,并且不需要高深的技術(shù)。我不完全認(rèn)同這個(gè)觀點(diǎn)。但架構(gòu)師的使命的確不僅僅是“完成”功能,如果說(shuō)完成功能可以有50種方法,
因?yàn)榻?jīng)濟(jì)學(xué)上認(rèn)為找到最優(yōu)方案可能成本比回報(bào)還要高,那么至少要找出相對(duì)較優(yōu)的幾種方法并進(jìn)行最終的選擇。
成本的構(gòu)成主要是硬件成本+軟件成本+人力成本,因?yàn)榛ヂ?lián)網(wǎng)企業(yè)軟件以自主開(kāi)發(fā)和開(kāi)源為主,所以其中主要是硬件和人力成本,硬件成本也包含了機(jī)房的機(jī)架,帶寬,電力成本。
對(duì)大型互聯(lián)網(wǎng)公司來(lái)說(shuō),服務(wù)器規(guī)模都在上萬(wàn)臺(tái)以上,Google的服務(wù)器規(guī)模更達(dá)到了百萬(wàn)級(jí)。而互聯(lián)網(wǎng)公司的人才規(guī)模也是相當(dāng)驚人,TAB公司的人員都在萬(wàn)人以上。
因此如何能夠提高硬件的使用效率,降低人工運(yùn)維成本,提高人均產(chǎn)出,也就成為關(guān)系到互聯(lián)網(wǎng)公司生死存亡的事情了。
可測(cè)量指標(biāo):
投入成本=硬件成本(含機(jī)架,帶寬,電力)+軟件成本(MySQL可忽略) +人力成本
1.5. 運(yùn)維人員幸福度
運(yùn)維自動(dòng)化是方向不假,但目前階段來(lái)說(shuō),有很多工作還需要人來(lái)完成,越是復(fù)雜的工作越需要人工干預(yù)。對(duì)于一些創(chuàng)業(yè)公司,自動(dòng)化平臺(tái)更是要從頭打造,此時(shí)間段內(nèi)的很多操作需要手工完成。
克拉克的《與拉瑪相會(huì)》描繪了一個(gè)完全靠機(jī)器人運(yùn)維,在太空中飛行了上萬(wàn)年的巨大人工飛行器。但現(xiàn)在科技畢竟離此階段還差得遠(yuǎn)。人也不是機(jī)器人,是有個(gè)性,獨(dú)一無(wú)二的智慧生物。
為了體現(xiàn)運(yùn)維的人文關(guān)懷,必須加入人員幸福度指標(biāo)。
幸福度可以從3方面考量:
1)人均承擔(dān)數(shù)據(jù)庫(kù)讀寫(xiě)量(如果數(shù)據(jù)庫(kù)讀寫(xiě)量大,這個(gè)值低,那么必然運(yùn)維人員多,人均產(chǎn)值/薪酬低)
2)運(yùn)維人員長(zhǎng)期從事機(jī)械化的,重復(fù)性工作的時(shí)間比例
3)運(yùn)維人員在工作時(shí)間以外進(jìn)行切換上線,故障處理的時(shí)間比例
如果這3項(xiàng)指標(biāo)差, 那就意味著團(tuán)隊(duì)的幸福感差,必然離職率高。所以離職率也是衡量指標(biāo)之一。
如果有一個(gè)系統(tǒng)能夠?qū)⑸厦娴?個(gè)指標(biāo)都量化記錄下來(lái),并采用各種方法持繼改進(jìn)指標(biāo),相信最終會(huì)建立一個(gè)比較好的運(yùn)維平臺(tái)。