隨著MySQL地位爆炸式的提升, MySQL DBA的市場缺口日益劇增轻掩,優(yōu)秀的MySQL DBA正在成為各個(gè)互聯(lián)網(wǎng)公司搶手的人才幸乒。然而懦底,需求來了唇牧,問題也來了,如何快人一步提高自身技能聚唐,讓自己在日益激烈的技術(shù)挑戰(zhàn)中不斷增值丐重、脫穎而出?
今天杆查,我們將鎖定MySQL數(shù)據(jù)庫扮惦,通過韓鋒、虢國飛亲桦、楊奇龍崖蜜、楊建榮浊仆、張青林、李輝豫领、賀春暘抡柿、李季鵬等8位MySQL專家的經(jīng)驗(yàn)之談,為想從事MySQL DBA的同學(xué)們答疑解惑等恐,指明一條修煉的路子洲劣。
目錄大綱
認(rèn)真讀完本文,你可以了解到:
一课蔬、選擇篇
1囱稽、MySQL的流行原因及從業(yè)前景
2、MySQL DBA的薪資緣何普遍高于Oracle DBA
3二跋、個(gè)人如何完成Oracle向MySQL的轉(zhuǎn)型战惊?
二、學(xué)習(xí)篇
1扎即、從初級到高級的MySQL DBA學(xué)習(xí)路線及學(xué)習(xí)資料推薦
2样傍、源碼是否為高級MySQL DBA的必備技能?
3铺遂、MySQL不同分支的選擇討論
4衫哥、MySQL認(rèn)證考試的含金量
三、趨勢篇
1襟锐、隨著功能的不斷完善撤逢,MySQL還會(huì)是“小而美”的代表嗎?
2粮坞、MySQL目前還缺乏哪方面的能力蚊荣,是否足夠成熟?
3莫杈、如何看待數(shù)據(jù)庫中間層與數(shù)據(jù)庫的關(guān)系互例?
4赢赊、傳統(tǒng)運(yùn)維逐步萎縮下愈犹,DBA應(yīng)選擇什么方向發(fā)展?
四崔涂、未來篇
1关顷、數(shù)據(jù)庫云化會(huì)對傳統(tǒng)DBA帶來什么樣的沖擊糊秆?
2、如何看待分布式數(shù)據(jù)庫的未來前景议双?
3痘番、越來越多的DBA正在或?qū)氖翫evOps類工作,你的看法是?
選擇篇
Q1:你認(rèn)為MySQL流行的主要原因是什么汞舱?從長遠(yuǎn)角度來看伍纫,從業(yè)前景如何?
1昂芜、流行原因
虢國飛:綜合來看翻斟,MySQL的流行是偶然中的必然。原因主要有以下三點(diǎn):
免費(fèi):傳統(tǒng)數(shù)據(jù)庫昂貴的license費(fèi)用是很多企業(yè)一塊心病说铃,MySQL社區(qū)版已經(jīng)能滿足大部分用戶的需求访惜,而且是免費(fèi)的,自然在企業(yè)內(nèi)部推廣時(shí)不會(huì)遇到阻力(老板們肯定支持)腻扇;
開源:開源的好處是只要你想债热,你可以深入到代碼級別來了解數(shù)據(jù)庫的運(yùn)作原理(甚至可以改造它),這個(gè)遠(yuǎn)勝于傳統(tǒng)黑盒數(shù)據(jù)庫只是簡單輸出一些log或者白皮書來讓人猜測運(yùn)作情況幼苛,開源能讓DBA能知其然并知其所以然窒篱,而且開源社區(qū)還有豐富的工具,給DBA在維護(hù)上面提供了強(qiáng)大的支持舶沿。 DBA能在社區(qū)快速找到自己需求的東西墙杯,組合成自己的工具箱,所以社區(qū)工具的豐富也彌補(bǔ)了產(chǎn)品本身的缺陷括荡;
簡便:這一點(diǎn)使得MySQL部署簡單高镐,新手學(xué)習(xí)門檻低、上手快(當(dāng)然要真正掌握好還是需要大量學(xué)習(xí)的)畸冲,不要花費(fèi)太大的精力就能快速搭建起一套高可用的集群來嫉髓,而不像Oracle數(shù)據(jù)庫那樣,有很多配套東西需要了解邑闲,沒有幾年的學(xué)習(xí)很難掌握算行,對于新手來講都會(huì)覺得挺難的,所以MySQL能在DBA群體(甚至包括開發(fā)人員)中快速地普及苫耸。
2州邢、就業(yè)前景
李輝:目前來看,MySQL DBA的日子還是很滋潤的褪子,在可預(yù)見的3-5年內(nèi)量淌,MySQL在互聯(lián)網(wǎng)行業(yè)的地位仍無法取代,對DBA的需求量仍然很大褐筛,特別是中高級DBA类少。但從長遠(yuǎn)角度來看,從業(yè)人員也要多涉獵其它關(guān)系型數(shù)據(jù)庫以及NoSQL渔扎、Devops、云計(jì)算等技術(shù)信轿,現(xiàn)代社會(huì)唯一不變的就是變化晃痴,不斷學(xué)習(xí)残吩、擁抱變化才能保證自己不被未來社會(huì)淘汰。
Q2:如何看待當(dāng)前MySQL DBA的薪資普遍高于Oracle DBA的現(xiàn)象倘核?如果想從事DBA泣侮,選哪個(gè)數(shù)據(jù)庫更好?
1紧唱、MySQL DBA高工資的原因
楊建榮:因?yàn)槭呛蚈racle來對比活尊,可以分為幾個(gè)方面來看:
首先物以稀為貴,MySQL DBA相對Oracle DBA來說要少一些漏益,隨著現(xiàn)在互聯(lián)網(wǎng)行業(yè)的發(fā)展蛹锰,這個(gè)需求還是會(huì)持續(xù)增長;
第二還是物以稀為貴绰疤,任何工種铜犬,高級職位都是稀缺的,如果你能夠成為行業(yè)內(nèi)的20%的人轻庆,無論你是從事哪種數(shù)據(jù)庫癣猾,都會(huì)混得還不錯(cuò)。
第三還是物以稀為貴余爆,什么事物的發(fā)展都有一個(gè)成熟度曲線纷宇,水漲船高之后,留在你手里的是真技能還是花拳繡腿蛾方,數(shù)據(jù)庫的功能會(huì)越來越豐富呐粘,你的技能也要升級,不升級的話转捕,用哪個(gè)數(shù)據(jù)庫你都會(huì)很吃力作岖。
楊奇龍:對于薪資高這點(diǎn),我覺得要從兩方面看:
MySQL DBA和Oracle DBA 的雇主行業(yè)不一樣五芝,MySQL DBA 多屬于互聯(lián)網(wǎng)等新興企業(yè)痘儡,大多數(shù)是資本聚集,而Oracle DBA 則從事于傳統(tǒng)或者部分大型企事業(yè)單位枢步。兩種企業(yè)的薪資平均水平本就有差距沉删。
從技能要求上,MySQL在功能上比Oracle “弱”或者說不完善醉途,需要DBA具有更高的技術(shù)掌控能力做HA矾瑰、備份、恢復(fù)隘擎、校驗(yàn)等殴穴。Oracle 則提供了比較完備的功能。
2、從事DBA崗位采幌,選MySQL還是Oracle劲够?
楊建榮:有句話說,選擇的利劍屬于在于能夠揮舞它的人休傍,根據(jù)工作需要征绎,自己的喜好去選擇就可以,如果只是本著錢途是不推薦的磨取。如果非要糾結(jié)到底是哪一個(gè)人柿,其實(shí)也可以換個(gè)角度,如果兩個(gè)都學(xué)忙厌,是不是這個(gè)問題就不是問題了凫岖。
楊奇龍:我的想法比較實(shí)際。行行出狀元慰毅,不管是MySQL DBA 還是Oracle DBA都有比較成功的人士隘截,建議是看各自的興趣和愛好,以及自己想進(jìn)的公司的招聘需求汹胃。MySQL 和Oracle 并不矛盾婶芭,我認(rèn)識(shí)的相當(dāng)多的人,兩種數(shù)據(jù)庫都能維護(hù)得非常好着饥,比如大牛樓方鑫犀农,Oracle 工具開發(fā)以及MySQL 內(nèi)核開發(fā)都有非常出色的成果。
Q3:個(gè)人職業(yè)發(fā)展如何完成Oracle向MySQL的轉(zhuǎn)型宰掉?
楊建榮:從自身目前從事的工作呵哨,分三種情況來看:
(1)目前從事的工作以商業(yè)數(shù)據(jù)庫Oracle為主,又想轉(zhuǎn)型為MySQL DBA的:
自搭環(huán)境學(xué)習(xí)實(shí)踐是一個(gè)起步轨奄,如果覺得沒有明確的學(xué)習(xí)目標(biāo)孟害,考個(gè)MySQL OCP也是一種階段性的學(xué)習(xí)成果驗(yàn)收,總比漫無目的的學(xué)習(xí)收獲要大挪拟。已經(jīng)有了Oracle基礎(chǔ)挨务,可以通過對比的方式來引入到MySQL的學(xué)習(xí)中。公司如果后期引入MySQL方案玉组,你就是最佳人選了谎柄。
(2)目前工作中有MySQL環(huán)境的:
在做好本職工作的前提下,可以自薦惯雳,讓別人推薦來做MySQL DBA的工作朝巫。對企業(yè)和你個(gè)人都是雙贏,所以開發(fā)測試運(yùn)維同學(xué)相做MySQL DBA也是可以的石景。
(3)現(xiàn)有的MySQL工作和自身期望相比差距較大的:
一種方式是自查劈猿,我們在當(dāng)前的環(huán)境還能夠做出些什么拙吉,如果能夠把當(dāng)前的環(huán)境做到精細(xì)化的管理,總會(huì)有非常多的事情和收獲糙臼,還有一種方式就是跳槽庐镐,這個(gè)的前提也是你在儲(chǔ)備了很多的技能之后恩商,因?yàn)闄C(jī)會(huì)是留給有準(zhǔn)備的人变逃。
虢國飛:我是從SQLServer轉(zhuǎn)型到MySQL的,感覺這個(gè)轉(zhuǎn)型應(yīng)該比Oracle轉(zhuǎn)MySQL更大怠堪,因?yàn)楸旧磉€要克服操作系統(tǒng)的區(qū)別(Windows轉(zhuǎn)型Linux)揽乱,不過如果你已經(jīng)有一個(gè)數(shù)據(jù)庫產(chǎn)品的經(jīng)驗(yàn),再來學(xué)習(xí)其它數(shù)據(jù)庫產(chǎn)品粟矿,難度應(yīng)該不是很大凰棉,因?yàn)楹芏嗟讓拥脑硎窍嗤ǖ模拍钜膊畈欢嗄按猓瑹o非是各種產(chǎn)品在設(shè)計(jì)上側(cè)重點(diǎn)有不同撒犀、使用方式上有差異。
所以我覺得要完成這個(gè)學(xué)習(xí)轉(zhuǎn)型掏秩,首先心態(tài)上面應(yīng)該放開(千萬不要帶偏見或舞,認(rèn)定哪種好哪種不好),通過對比的方式來學(xué)習(xí)和實(shí)踐蒙幻,善于總結(jié)差異分析優(yōu)劣映凳,多和同行溝通交流,相信轉(zhuǎn)型過程不會(huì)太長邮破。
李季鵬:從Oracle到MySQL轉(zhuǎn)型诈豌,不單單是一個(gè)人的學(xué)習(xí)過程,也是一個(gè)從開發(fā)到運(yùn)維的磨合過程抒和。
首先矫渔,戰(zhàn)略上要藐視敵人,熟練掌握Oracle的話摧莽,對于任何一種關(guān)系型數(shù)據(jù)庫的學(xué)習(xí)都是事半功倍的庙洼,特別針對MySQL,可以視為一個(gè)功能和手段做減法并尋找替代手段的過程范嘱;
但重要的是送膳,戰(zhàn)術(shù)上要重視敵人,限于MySQL的特點(diǎn)丑蛤,特別是中大型場景叠聋,把MySQL當(dāng)Oracle用只會(huì)更加痛苦,必須放棄原有的Oracle視角受裹,堅(jiān)持MySQL大而化之的特點(diǎn)碌补。
學(xué)習(xí)篇
Q1:從初級成長到高級虏束,有推薦的MySQL學(xué)習(xí)路線嗎?
楊奇龍:DBA 是一個(gè)“復(fù)雜”的工種厦章,要成為高級/資深MySQL DBA镇匀,我總結(jié)了以下五點(diǎn):
官方文檔是最好的學(xué)習(xí)資料。通讀官方文檔是最扎實(shí)的學(xué)習(xí)方式袜啃,目前大多數(shù)同行只是把官方文檔當(dāng)做參考資料汗侵。其實(shí)把官方文檔理解透徹你已經(jīng)能成為高級DBA了。
紙上來得終覺淺群发,絕此事要躬行晰韵。多動(dòng)手,多做實(shí)驗(yàn)驗(yàn)證技術(shù)功能點(diǎn)熟妓。
找一個(gè)有業(yè)務(wù)量的平臺(tái)雪猪,鍛煉自己的技術(shù)能力。
能干活起愈,能寫文檔只恨,能講。能夠?qū)⒆约豪斫獾闹R(shí)教會(huì)其他人才算真的弄懂抬虽。
不懂業(yè)務(wù)的DBA 不是優(yōu)秀的DBA官觅,能夠思考如何存儲(chǔ)數(shù)據(jù),也要會(huì)和開發(fā)溝通討論業(yè)務(wù)如何訪問數(shù)據(jù)才算最合理的斥赋。
參考DBA技能樹
http://blog.itpub.net/22664653/viewspace-2097142/
楊建榮:DBA干的是一個(gè)手藝活(鷹眼缰猴,獅心,女人手)疤剑,里面有很多技巧滑绒,但是一個(gè)崗位從初級走向高級始終是經(jīng)驗(yàn)和實(shí)踐的積累,沒有其它捷徑隘膘。這里給大家提供一個(gè)自查級別的方法:
Q2:關(guān)于MySQL學(xué)習(xí)資料疑故、書籍或網(wǎng)站,你的推薦是弯菊?
楊建榮:簡單來說纵势,官方文檔是最好的學(xué)習(xí)資料,在這個(gè)基礎(chǔ)上去閱讀更多的書籍會(huì)起到融會(huì)貫通的作用管钳。如果推薦書籍钦铁,我有下面的一個(gè)讀書清單可供參考。
入門:
《涂抹MySQL:跟著三思一步一步學(xué)MySQL》
《MySQL數(shù)據(jù)庫應(yīng)用從入門到精通(第2版)》
《MySQL核心技術(shù)手冊》
《MySQL技術(shù)內(nèi)幕(第5版)》
運(yùn)維實(shí)踐:
《高性能MySQL》 經(jīng)典必讀
《MySQL管理之道:性能調(diào)優(yōu)才漆、高可用與監(jiān)控(第2版) 》賀春旸
《深入理解MySQL核心技術(shù)》帕奇維
《MySQL運(yùn)維內(nèi)參》 周彥偉牛曹、王竹峰、強(qiáng)昌金
《高可用MySQL》
內(nèi)核:
《MySQL技術(shù)內(nèi)幕:InnoDB存儲(chǔ)引擎(第2版)》姜承堯
《InnoDB – A journey to the core》Jeremy Cole
楊奇龍:在建榮老師的基礎(chǔ)醇滥,我再推薦:系統(tǒng)優(yōu)化-《性能之巔》黎比、開發(fā)-《Python 編程:從入門到實(shí)踐》
張青林:《數(shù)據(jù)庫系統(tǒng)原理》超营、《InnoDB存儲(chǔ)引擎》。
李季鵬:最為建議的還是官方文檔阅虫,如果嫌官方文檔英文看著麻煩演闭,可以關(guān)注Github上的MySQL 5.6 手冊翻譯項(xiàng)目(mysql2cn/manual56)。
Q3:你認(rèn)為研讀源碼是通向高級MySQL DBA的必備技能嗎颓帝?
楊奇龍:從我的理解來看 DBA 可以分為產(chǎn)品DBA米碰、運(yùn)維DBA、內(nèi)核研發(fā)DBA躲履。具有內(nèi)核研發(fā)能力或者閱讀內(nèi)核源碼的人见间,在了解具體技術(shù)原理時(shí)具有一定的優(yōu)勢聊闯。但是成為高級DBA和是否研讀源碼不沖突工猜。
需要注意的是,我們要有打破砂鍋問到底的“要性”菱蔬。其實(shí)大牛和我們的差距就是對于一個(gè)個(gè)技術(shù)問題刨根問底的及時(shí)鉆研篷帅。比如你遇到thread running飆高的問題時(shí),是把慢查詢優(yōu)化了就好了嗎拴泌?還是舉一反三魏身,反思什么原因會(huì)導(dǎo)致thread running飆高?要懂得去思考下面四個(gè)問題:
業(yè)務(wù)是否需要緩存或者異步更新蚪腐?
連接池配置是否合理箭昵?
是否當(dāng)時(shí)系統(tǒng)磁盤io有問題亦或是raid 卡充放電怎么避免生產(chǎn)時(shí)刻重放電?
thread running 代表什么意思回季?如何配置才能達(dá)到最好效果家制?
能否成為高級DBA,在于我們是否解決了一般人解決不了的問題的能力泡一。
張青林:首先颤殴,我不認(rèn)為讀源碼是通向高級MySQL DBA的必備技能,即使不讀源碼鼻忠,也是可以成為高級MySQL DBA的涵但。讀源碼是為了了解其工作原理,分析其瓶頸帖蔓,然后從內(nèi)核上做優(yōu)化矮瘟,這是內(nèi)核研發(fā)的必備技能;做為運(yùn)維人員塑娇,只要懂其原理澈侠、使用方法,處理線上問題钝吮,并配合研發(fā)人員對線上進(jìn)行維護(hù)埋涧,一樣是很高質(zhì)量的工作板辽,也是“源碼”落地的最重要的一部分,所以不可厚此薄彼棘催。當(dāng)然劲弦,讀源碼可以更深層次的理解內(nèi)核的工作機(jī)制,有利于學(xué)習(xí)醇坝。
Q4:針對MySQL的不同分支(Oracle官版邑跪、Percona、MariaDB)呼猪,你更看好誰画畅?
韓鋒:我還是看好Oracle官版。過去幾年宋距,官版MySQL的發(fā)展有些滯后轴踱,導(dǎo)致很多人選擇了其它版本,Oracle也看到了這一點(diǎn)谚赎。最近一兩年淫僻,隨著MySQL5.6、5.7乃至8.0的推出壶唤,官版已經(jīng)逐漸追上了其它分支版本雳灵。依托于Oracle在數(shù)據(jù)庫領(lǐng)域的深厚底蘊(yùn),未來官版MySQL的發(fā)展更加看好闸盔。
如果選擇的話悯辙,我推薦的順序是:MySQL社區(qū)版->Percona->MariaDB->MySQL企業(yè)版。
張青林:我更看好 Oracle 官方版本迎吵,MySQL 被收構(gòu)之后躲撰,Oracle 在MySQL上的投入不斷的加強(qiáng),優(yōu)化器钓觉、InnoDB茴肥、復(fù)制都推出了很多功能,如GR荡灾、多源復(fù)制瓤狐、并行復(fù)制、優(yōu)化器的重構(gòu)批幌、Undo空間的在線縮小础锐、InnoDB的性能優(yōu)化、加密表空間等荧缘,這些都是解決用戶問題的實(shí)際行動(dòng)皆警,Percona的開發(fā)也有很大一部分是基于 Oracle MySQL 來做的。
賀春旸:如果你想與官方MySQL版本盡量保持緊密截粗,并且想獲得更好的性能信姓、運(yùn)維工具和有用的特性鸵隧,那就選擇Percona。如果你覺得MariaDB對服務(wù)層的大量修改更快意推、更優(yōu)豆瘫,或者想要更廣泛的存儲(chǔ)引擎,比如Spider分庫分表引擎菊值,那就選擇MariaDB外驱。
Q5:MySQL 的認(rèn)證考試值得考嗎?含金量有多大腻窒?
楊建榮:MySQL的認(rèn)證目前只有MySQL OCP昵宇,目前和Oracle OCP相比,資料和套路都會(huì)少一些儿子⊥甙ィ考這個(gè)認(rèn)證,你得明白幾件事情:
認(rèn)證里的內(nèi)容和工作的內(nèi)容還是有一些差別的典徊,在MySQL里面尤其如此杭煎,因?yàn)殚_源的方案非常多,很多優(yōu)秀的工具不僅僅是官方的卒落;
考過了認(rèn)證不一定代表了你是一個(gè)數(shù)據(jù)庫專家,因?yàn)閷?shí)踐出真知蜂桶,很多技能都是在工作中培養(yǎng)和鍛煉出來的儡毕,考試有分?jǐn)?shù)控制,達(dá)標(biāo)即合格扑媚,而工作中99%的努力加1%的錯(cuò)誤那就是失斞濉;
考取認(rèn)證不能指望企業(yè)給你升職加薪疆股,如果有的話费坊,那么恭喜你;
學(xué)習(xí)的過程相比考試結(jié)果來說旬痹,對自己的啟示意義更大附井,因?yàn)槟玫秸J(rèn)證是對你學(xué)習(xí)過程的肯定;
最后一點(diǎn)MySQL OCP報(bào)名費(fèi)相比Oracle OCP低不少两残,價(jià)格還算親民永毅。
賀春旸:MySQL DBA職位門檻較高,通常需要工作經(jīng)驗(yàn)為3年以上的人弓,考取認(rèn)證并不是必須的,其含金量不大。
李季鵬:認(rèn)證只是一個(gè)門檻砚婆,一個(gè)介紹自己時(shí)精煉的關(guān)鍵詞,實(shí)際上并不能等同于技術(shù)水平的真正高低耸别。MySQL認(rèn)證分為開發(fā)與管理,個(gè)人建議可以分別視為自己在這兩條線路上學(xué)習(xí)掌握程度的一個(gè)檢驗(yàn)手段县钥,無需過分看重太雨,也沒有必要完全看輕。
趨勢篇
Q1:隨著MySQL功能的不斷完善魁蒜,其體積也愈發(fā)龐大囊扳,你是否擔(dān)心其未來會(huì)類似大型商業(yè)數(shù)據(jù)庫,不再是“小而美”的代表兜看?
張青林:沒有這方面的擔(dān)心呢锥咸,無可否認(rèn),編譯后的 mysqld 文件越來越大细移,但并不影響 MySQL 的發(fā)展搏予, 主要表現(xiàn)在以下幾個(gè)方面:
MySQL 提供了更多更好的選擇,也是對用戶的一種負(fù)責(zé)行為弧轧;
MySQL的代碼質(zhì)量從5.5雪侥、5.6 、5.7的版本迭代中可以明顯看到代碼質(zhì)量越來越高精绎,易讀性越來越好速缨、模塊化越來越強(qiáng);
專業(yè)的測試團(tuán)隊(duì)也是質(zhì)量的保證代乃;
所以旬牲,我覺得沒有用戶會(huì)因?yàn)槎嗔藥资甅的空間而嫌棄更好用的版本吧,我覺得關(guān)注的重點(diǎn)不應(yīng)該是小而美搁吓,而是軟件質(zhì)量和易用性原茅。
虢國飛:主要還是看場景需求,對于互聯(lián)網(wǎng)公司來說堕仔,強(qiáng)調(diào)的是高可用性擂橘,出問題能盡快恢復(fù),不大可能把大把的應(yīng)用或者數(shù)據(jù)放到一個(gè)籃子里面摩骨,否則出問題影響比較大通贞,恢復(fù)起來也會(huì)比較復(fù)雜緩慢;但因?yàn)楝F(xiàn)在很多分布式部署的DB比較零散仿吞,量大了之后維護(hù)起來比較麻煩滑频,也可能有部分需求是需要做一些遷移整合的,不過這些只是局部不是整體唤冈。
我覺得現(xiàn)在大家更關(guān)注的是如何實(shí)現(xiàn)自動(dòng)化運(yùn)維峡迷、集群自動(dòng)化和動(dòng)態(tài)的擴(kuò)縮容等方面,如果能通過技術(shù)把運(yùn)維復(fù)雜度降低,管理再大的量其實(shí)都不是問題绘搞,現(xiàn)在很多開源產(chǎn)品也在往自動(dòng)維護(hù)和動(dòng)態(tài)擴(kuò)縮容這方面攻關(guān)了彤避。
賀春旸:不用擔(dān)心,您可以切為MariaDB夯辖。只要移除MySQL琉预,然后安裝MariaDB。你的所有工具蒿褂,連接程序都可以正常運(yùn)行圆米。升級到MariaDB,你也不需要進(jìn)行一次導(dǎo)出和導(dǎo)入啄栓,數(shù)據(jù)格式MariaDB是兼容的娄帖。
Q2:你認(rèn)為MySQL是否足以擔(dān)負(fù)起企業(yè)級應(yīng)用的數(shù)據(jù)載體?如果不是昙楚,還缺乏哪方面的能力近速?楊建榮:我認(rèn)為MySQL技術(shù)正在走向成熟,但是MySQL的生態(tài)已經(jīng)成熟堪旧。MySQL從早期的發(fā)展至今削葱,推出的解決方案非常多,從MySQL 5.7,8.0里面還是可以看到很多它在功能性淳梦、高可用析砸、性能等方面都在發(fā)力,很多功能和Oracle很相似谭跨,都是一個(gè)逐步完善的過程干厚,MySQL的使用群體和社區(qū)決定了它現(xiàn)在的高度,而且絕大多數(shù)的互聯(lián)網(wǎng)公司都在使用MySQL技術(shù)螃宙,所以作為企業(yè)級應(yīng)用是完全可以的。但是現(xiàn)在的互聯(lián)網(wǎng)行業(yè)對于MySQL的青睞所坯,很多不在于MySQL單機(jī)能夠支撐的性能谆扎,而是在于靈活擴(kuò)展的架構(gòu),對于MySQL的使用芹助,不再是集中式堂湖、共享式的方式,會(huì)做拆分状土、分布式等无蜂。值得一提的是,很多大廠對于MySQL的技術(shù)把控力已經(jīng)走在了世界前沿蒙谓,而從技術(shù)架構(gòu)的角度來看斥季,現(xiàn)在是更傾向于把MySQL用得更純粹,更簡單,而不是大量的運(yùn)算和壓力都放在數(shù)據(jù)庫側(cè)酣倾,這是MySQL生態(tài)帶來的一大優(yōu)勢舵揭,也讓更多企業(yè)級應(yīng)用可以落地。楊奇龍:顯然MySQL已經(jīng)足夠成熟來承擔(dān)企業(yè)級應(yīng)用的數(shù)據(jù)載體躁锡,這點(diǎn)最近幾年各個(gè)電商的購物節(jié)午绳,每秒處理的交易筆數(shù)和數(shù)據(jù)量足以回答這個(gè)問題。當(dāng)然我們的業(yè)務(wù)需求是多種多樣的映之,除了常見的OLTP業(yè)務(wù)拦焚,還有其他OLAP 業(yè)務(wù),海量日志類型的需求杠输。在這方面MySQL 多少顯得不足以適應(yīng)業(yè)務(wù)需求赎败。
另外就是因?yàn)镸ySQL不能支持在線的擴(kuò)容、HA抬伺,必須借助第三方工具來做螟够,不過好在5.7版本推出MGR ,Percona推出的PXC在很大程度上緩解了HA 方面問題峡钓。
賀春旸:主要是官方缺少分庫分表的解決方案妓笙。MariaDB官方提供了Spider引擎作為解決方案,但目前還沒有正式GA能岩。所以涉及非事務(wù)強(qiáng)一制的業(yè)務(wù)寞宫,如LOG信息等,通常是放入MongoDB里拉鹃,通過其自身的自動(dòng)分片功能實(shí)現(xiàn)對數(shù)據(jù)的擴(kuò)容辈赋。
Q3:你是如何看待數(shù)據(jù)庫中間層(例如Cobar、Atlas等)與數(shù)據(jù)庫的關(guān)系膏燕?
楊奇龍:準(zhǔn)確一點(diǎn)的說是數(shù)據(jù)庫中間件钥屈,它們是數(shù)據(jù)庫服務(wù)的一種輔助,借助數(shù)據(jù)庫中間件坝辫,數(shù)據(jù)庫可以具有分布式篷就、讀寫分離、負(fù)載均衡近忙、連接池竭业、訪問控制等等功能,數(shù)據(jù)庫業(yè)務(wù)系統(tǒng)上具備更強(qiáng)大的功能和支撐能力及舍。
中間件在一定程度上解決了單機(jī)數(shù)據(jù)庫系統(tǒng)容量方面的限制未辆,可以通過讀寫分離方式或者水平拆分的方式整體提升數(shù)據(jù)庫的吞吐量。
另一方面中間件在數(shù)據(jù)分布上利用shardingkey將數(shù)據(jù)獨(dú)立開锯玛,對于聚合類的需求是一種障礙咐柜。還有當(dāng)前的數(shù)據(jù)庫中間件對于跨庫分布式事務(wù)很難保證不同數(shù)據(jù)庫分片的數(shù)據(jù)一致性問題。這些都需要開發(fā)在使用中間件的時(shí)候注意下規(guī)避。
虢國飛:中間件目前在MySQL數(shù)據(jù)庫橫向擴(kuò)容方面作用很明顯炕桨,當(dāng)然不止局限于此饭尝,我們公司的DAL中間件就做了很多的功能,比方連接池献宫、分片路由钥平、限流、熔斷姊途、加密保護(hù)等涉瘾,這些功能不僅能支持?jǐn)?shù)據(jù)庫的橫向擴(kuò)容,還有效保障了數(shù)據(jù)庫的安全捷兰,所以說中間件和數(shù)據(jù)庫目前是很多公司的黃金搭檔立叛。
韓鋒:這些中間層產(chǎn)品,是為了彌補(bǔ)數(shù)據(jù)庫的功能缺陷或性能贡茅、容量不足才出現(xiàn)的秘蛇。在一定階段,確實(shí)解決了企業(yè)的實(shí)際需求顶考。當(dāng)我們也看到赁还,其對應(yīng)用開發(fā)還無法做到完全透明,整體架構(gòu)的復(fù)雜度是提高了驹沿。從長期來看艘策,分布式數(shù)據(jù)庫勢必會(huì)從根本解決上述問題,到時(shí)這些中間層產(chǎn)品也就沒有使用意義了渊季。
Q4:你所在的公司是否有成熟的MySQL運(yùn)維平臺(tái)朋蔫?如果是,DBA在傳統(tǒng)運(yùn)維類工作逐步萎縮的情況下却汉,選擇什么方向來發(fā)展驯妄?
虢國飛:我覺得一個(gè)公司的運(yùn)維平臺(tái)發(fā)展基本有幾個(gè)階段:
首先是大家使用開源產(chǎn)品,但是發(fā)現(xiàn)有很多的不足合砂,想要的功能沒有富玷;
于是進(jìn)入第二個(gè)階段,自己編寫一些腳本來彌補(bǔ)這些不足既穆,但是當(dāng)規(guī)模越來越大的時(shí)候,發(fā)現(xiàn)元數(shù)據(jù)和數(shù)據(jù)變更的維護(hù)變得越來越困難雀鹃,而且很容易搞錯(cuò)(一旦弄錯(cuò)可能出現(xiàn)大問題)幻工,這個(gè)時(shí)候運(yùn)維平臺(tái)就必須得上馬;
進(jìn)入第三個(gè)階段黎茎,通過運(yùn)維平臺(tái)整合大家的腳本囊颅,閉環(huán)元數(shù)據(jù)和數(shù)據(jù)狀態(tài)的變更,保障數(shù)據(jù)準(zhǔn)確性,同時(shí)對復(fù)雜的架構(gòu)進(jìn)行屏蔽踢代,讓操作的人能盡量簡單盲憎,目前我們就處于這個(gè)階段(當(dāng)然有些內(nèi)容還在完善中);
另外胳挎,其實(shí)不止是DBA饼疙,整個(gè)運(yùn)維體系都在做轉(zhuǎn)變,傳統(tǒng)的玩法效率低慕爬、重復(fù)工作多窑眯,已經(jīng)不適用互聯(lián)網(wǎng)公司高速度、快節(jié)奏的發(fā)展了医窿,所以說DBA工作內(nèi)容需要轉(zhuǎn)變磅甩,思想也需要轉(zhuǎn)變,應(yīng)該向著如何快速交付姥卢、提高數(shù)據(jù)庫整體穩(wěn)定性卷要、高效率運(yùn)維、打造適合更多適合業(yè)務(wù)需要的數(shù)據(jù)庫產(chǎn)品方案独榴,甚至給研發(fā)輸出數(shù)據(jù)架構(gòu)方案等這些方面發(fā)展僧叉,開始往前走,這樣價(jià)值能更大(傳統(tǒng)DBA往往是沉在最后面括眠,領(lǐng)業(yè)績的時(shí)候沒有人影彪标,只有出問題的時(shí)候才出來背鍋)。
韓鋒:公司目前有數(shù)據(jù)庫運(yùn)維平臺(tái)掷豺,當(dāng)然還沒有覆蓋所有運(yùn)維需求捞烟,但也大幅度減輕了DBA的工作負(fù)擔(dān)。傳統(tǒng)運(yùn)維類的工作当船,確實(shí)在不斷萎縮之中题画。在這種情況下,DBA的發(fā)展可朝以下方向努力:
架構(gòu)德频、優(yōu)化方向從事數(shù)據(jù)庫架構(gòu)苍息、結(jié)構(gòu)設(shè)計(jì),性能壹置、語句優(yōu)化等方向工作竞思。
DevOps方向從事和數(shù)據(jù)庫運(yùn)維相關(guān)的開發(fā)類工作。
業(yè)務(wù)方向結(jié)合業(yè)務(wù)特點(diǎn)钞护,分析如何利用數(shù)據(jù)庫更好的滿足企業(yè)發(fā)展盖喷。
數(shù)據(jù)管理方向脫離數(shù)據(jù)庫層面,從更高的角度考慮公司的數(shù)據(jù)管理难咕、治理類工作课梳。
張青林:騰訊有很成熟的MySQL運(yùn)維平臺(tái)距辆,這簡化了DBA 的運(yùn)維服務(wù),提高了DBA的幸福生活指數(shù)暮刃。DBA 的運(yùn)維工作較之前會(huì)少一些跨算,可將多余的時(shí)間投入到MySQL其它的相關(guān)工作當(dāng)中,轉(zhuǎn)向研發(fā)型運(yùn)維椭懊,如:
故障的自動(dòng)化處理诸蚕,自動(dòng)分析錯(cuò)誤日志并預(yù)警;
MySQL 在線壓力測試與回放灾搏;
利用審記來實(shí)現(xiàn)秒級監(jiān)控等挫望;
……
只要是和數(shù)據(jù)庫相關(guān)的,自己又有想法的狂窑,都可以和研發(fā)一起討論并嘗試媳板。
未來篇
Q1:你認(rèn)為未來云會(huì)成為數(shù)據(jù)庫的主要載體嗎?如果是泉哈,它會(huì)對傳統(tǒng)DBA帶來什么樣的沖擊蛉幸?
虢國飛:個(gè)人認(rèn)為使用云是一種趨勢,它能在資源交付丛晦、穩(wěn)定性和成本方面為企業(yè)提供很好的支撐奕纫,隨著云產(chǎn)品的不斷完善,目前已經(jīng)可以滿足大部分中小企業(yè)的需求烫沙,中小企業(yè)完全可以省心省力地使用云(不用關(guān)心資源和維護(hù)匹层,而專心做業(yè)務(wù))。
不過現(xiàn)在公有云產(chǎn)品對一些要求比較高锌蓄、量大的企業(yè)還不是特別合適(未來也許也不是問題)升筏;因此DBA也不要再固守傳統(tǒng)的城池,應(yīng)該放開心態(tài)來面對這種變化瘸爽,更多的把重心往上面所說的方向上轉(zhuǎn)您访,做數(shù)據(jù)架構(gòu)、存儲(chǔ)方案剪决,這樣價(jià)值更大灵汪。
韓鋒:未來云一定會(huì)成為數(shù)據(jù)庫的主要載體。人們可以像使用水柑潦、電一樣享言,使用數(shù)據(jù)庫服務(wù)。傳統(tǒng)DBA渗鬼,從事的基礎(chǔ)運(yùn)維類工作基本不復(fù)存在担锤。DBA,要么繼續(xù)深研數(shù)據(jù)庫技術(shù)乍钻,在云服務(wù)商或乙方服務(wù)類公司發(fā)展肛循;要么傾向于架構(gòu)、開發(fā)银择、優(yōu)化方向發(fā)展多糠。
李季鵬:個(gè)人理解,公有云為成為初創(chuàng)企業(yè)和互聯(lián)網(wǎng)企業(yè)的主要使用者浩考;傳統(tǒng)企業(yè)從各個(gè)角度考慮只會(huì)考慮私有云或者混合云方案夹孔。這樣的場景,與以前小企業(yè)不需要DBA析孽,大企業(yè)DBA忙不過來的基本情況其實(shí)沒有本質(zhì)區(qū)別搭伤。引入云,DBA需要及時(shí)更新知識(shí)儲(chǔ)備袜瞬,以應(yīng)對各種新技術(shù)引入的挑戰(zhàn)怜俐。
Q2:你是如何看待分布式數(shù)據(jù)庫的未來前景?未來哪些場景會(huì)優(yōu)先考慮此類方案邓尤?
虢國飛:自從Google Spanner F1 發(fā)布后拍鲤,分布式數(shù)據(jù)發(fā)展很快,跟隨者國外有CockroachDB汞扎,國內(nèi)有TiDB季稳,兩者都發(fā)展比較火,從原理上來講也確實(shí)能解決不少業(yè)務(wù)場景的痛點(diǎn)澈魄,如數(shù)據(jù)一致性要求高(多副本分布式協(xié)議保障一致)景鼠、數(shù)據(jù)容量很大、動(dòng)態(tài)擴(kuò)縮容痹扇、容災(zāi)要求高铛漓、跨機(jī)房、跨地域的部署需求等帘营,這類需求一般是對一些大公司票渠、大數(shù)量和數(shù)據(jù)質(zhì)量要求很高的公司才會(huì)有,一般中小公司也玩不起來芬迄,因?yàn)榉植际綌?shù)據(jù)庫部署的成本還是比較高的(一般最小配置就是好幾臺(tái)機(jī)器)问顷,而且運(yùn)維難度也比較大(沒懂行的人出問題基本搞不定),目前很多分布式數(shù)據(jù)庫產(chǎn)品在性能和穩(wěn)定性方面還需要進(jìn)一步經(jīng)過驗(yàn)證禀梳,一旦技術(shù)穩(wěn)定后杜窄,應(yīng)該還是比較有市場的。
韓鋒:非乘阃荆看好其發(fā)展前景塞耕,特別近兩年來,已經(jīng)有很多公司做了這方面的嘗試嘴瓤。隨著分布式思想扫外、算法的成熟及硬件技術(shù)的發(fā)展莉钙,未來分布式數(shù)據(jù)庫將逐步成熟、完善筛谚,成為主流的方案磁玉。作為早期嘗試,可在數(shù)據(jù)安全要求相對較低的OLAP領(lǐng)域嘗試使用驾讲。
Q3:在很多公司蚊伞,DBA正在越來越多地從事DevOps類工作,你的看法是吮铭?
楊奇龍:
首先时迫,因?yàn)樯a(chǎn)效率正在逐步提高,DB系統(tǒng)需要自動(dòng)化谓晌,開發(fā)需要自助化解決工作生產(chǎn)過程中的問題掠拳,因此具備DevOps能力是一個(gè)非常合理的發(fā)展趨勢。
其次扎谎,云計(jì)算的普及以及大公司碳想、第三方服務(wù)公司將專家級別的運(yùn)維平臺(tái)產(chǎn)品化之后給DBA帶來的挑戰(zhàn)就是:純粹只會(huì)維護(hù)數(shù)據(jù)庫的DBA生存空間越來越小,DBA要么具備開發(fā)能力而且能夠?qū)⑦\(yùn)維經(jīng)驗(yàn)落地毁靶,要么具備足夠的數(shù)據(jù)庫周邊產(chǎn)品設(shè)計(jì)能力胧奔,比如設(shè)計(jì)出產(chǎn)品解決開發(fā)日常遇到的痛點(diǎn)。
最后 预吆,俗話說藝不壓身龙填。了解什么是服務(wù)化、Restful API 拐叉、微服務(wù)岩遗,什么是MVC及常用的Web 框架、并發(fā)訪問控制等開發(fā)知識(shí)凤瘦,能夠更流暢地與開發(fā)溝通宿礁,站在他們的角度思考問題,從而更好地使用數(shù)據(jù)庫蔬芥。
文章來源于:優(yōu)秀的IT運(yùn)維管理系統(tǒng)云雀運(yùn)維