天天看點

專訪搜狗DBA負責人王林平:為何從Oracle轉向MySQL?

<a href="http://geek.csdn.net/news/detail/50568">原文連結</a>

CSDN:首先,請做個自我介紹,目前所負責的領域以及所在公司。

王林平:大家好,我是王林平,目前在搜狗商業平台研發部工作。

主要負責商業廣告資料庫的維護、優化、架構設計、流程體系建設、自動化運維平台建設等工作,目前比較關注資料庫備份恢複、性能優化、運維自動化等幾個領域。

CSDN:你是從何時加入搜狗的?從事資料庫開發和運維這麼多年給你最大的感悟是什麼?

王林平:我是2011年初加入搜狗的,到搜狗快五年了,經曆了資料庫團隊由小到大逐漸成熟的過程。從事運維工作已經八年多,感受最深的有兩點:

第一,責任心重于一切。我們維護的是企業最核心的資訊—-資料,一旦資料丢失或者資料異常,帶來的損失不可估量。高度的責任心和良好的職業道德是成為一個好的運維工作者的的最重要前提。

第二,自我驅動很重要。運維這項工作在學校的專業裡面是沒有的,如何開始做運維,如何做好運維,如何讓運維工作更有價值,都是需要我們自己去探索,不斷給自己提出新的目标并探索解決的方案,能為企業創造更高的價值。

CSDN:目前搜狗主要使用的資料庫是什麼?為何想到從oracle轉向MYSQL呢?

王林平:目前搜狗主要使用的資料庫是MySQL、MongoDB、HBase來存儲資料。MySQL主要存儲對資料狀态有要求和更新頻繁的資料;MongoDB主要用于存儲計費資料、日志資料和流水資料;HBase主要用來做資料分析和存儲大資料内容。

從Oracle轉向MySQL主要是出于三個方面的原因:

第一,降低運維成本。Oracle資料庫自動化運維實作難度和成本較高,而MySQL運維自動化難度和成本相對較低,當資料庫執行個體不斷成倍增長的時候,使用MySQL可以在有限人力的情況下維護更多的資料庫執行個體。

第二,降低軟體成本。Oracle License成本較高,MySQL及其分支目前是免費的。

第三,提高可擴充性。MySQL是開源資料庫,便于有技術能力的公司根據業務發展情況自己開發定制一些資料庫周邊服務,使資料庫使用的擴充性提高,而Oracle對這方面的支援比較一般。

CSDN:你怎麼看待MYSQL的性能?有哪些優缺點? 搜狗基于MYSQL的開發場景有哪些?

王林平: MySQL在單執行個體性能方面和Oracle相比還有一些差距,我們通過規範和技術手段來降低這些性能差距帶來的問題。

首先,大量甚至海量資料的增删改、查詢、聚合查詢的性能還有待提高。為了規避這些問題,我們在開發規範裡面要求MySQL的執行個體大小低于150G,要求帶變長行的表行數不超過500w,盡量降低查詢、修改、删除腳本的複雜度,以原子查詢的方式通路資料庫。

其次,MySQL的優化器還不夠完善。MySQL的優化器還更接近于基于規則的優化,而不是基于成本的優化,對複雜查詢的智能優化有待提高。是以MySQL資料庫多表聯合查詢的性能還不如Oracle。我們的開發規範要求開發人員盡量避免三個表以上的表關聯查詢。

第三,原生版本的MySQL主從延遲挺嚴重,遠高于Oracle資料庫。為此我們将批量更新和批量删除的事務的粒度拆分的比較細,同時在核心業務上使用SSD硬碟來降低主從延遲對業務的影響。

MySQL有以下優點:靈活、可配置、可二次開發、友善維護管理,叢集的性能和擴充性強。

MySQL的缺點是存儲和查詢的資料量、并發數有限,主從非強一緻。這就要求DBA必須對資料庫的業務深入了解,合理規劃并發數、資料量,進行預估、拆分等架構優化來規避這些不足。

我所在的商業廣告部門很多平台是面向客戶的高并發、高壓力的系統,應用MySQL資料庫存儲廣告物料、客戶資料、計費、資金、日志、管理平台、基礎架構平台等業務資料。不同平台對性能、穩定性、安全性要求不同,我們會根據平台特點選擇合理的MySQL部署和配置方式。

CSDN:據了解,搜狗實作了資料庫的“一鍵部署”功能,請問這是怎樣的一種解決方案?

王林平:可以了解“一鍵部署”是一種理念和工具的實作。這個理念是基于MySQL資料庫本身的特點出現的,MySQL資料庫的安裝配置步驟相對簡單,安裝過程中出錯的機率相對比較低,随着業務量增加這種重複勞動量急劇增加,給DBA造成很大的負擔,重複勞動的價值并不高,是以考慮對這部分工作進行自動化。

起源:最初是為了降低部署成本,開發了一個很簡陋的腳本工具,隻是将資料庫目錄建立好,二進制包解壓縮,并給出DBA啟動資料庫的指令。

發展:為了平台化運維需求豐富了功能。随着業務的不斷發展,資料庫執行個體越來越多,由幾十增長到了上百個,甚至幾百個,規模化運維要求有集中的資訊管理平台,是以一鍵部署工具将資料庫、伺服器、執行個體資訊做了入庫管理,同時為了有效提高自動化運維的效率,我們對作業系統、硬體等資訊進行了标準化,一鍵部署工具還需要對這些資訊進行校驗,一鍵部署工具還對備份系統、監控系統做了初始化。一鍵部署工具執行完之後,資料庫的使用和基本資訊的入庫工作,包括後續工作的準備工作都完成了,可以投入生産環境使用。

展望:我們的運維自動化起步是從一鍵部署開始的,未來我們更傾向于将95%甚至比例更多的工作用Web工具實作,同時有完整的互動界面,一鍵部署可能會随着業務和需求的增長越來越龐大,會拆分成N鍵部署,但是依舊高效,期待滑鼠點幾下、手指觸碰幾下就完成資料庫部署和運維高效時代到來。

CSDN:安全問題,一直是資料庫運維人士關注重點,你們是如何確定資料庫安全問題的?

王林平:資料的安全我了解應該從兩個大的次元去分析,第一是通路安全,不會出現不應該有的通路,不會因為不應該有的通路崩潰,使用者的敏感資料不會洩露;第二是資料安全,資料可恢複,不丢失。

通路安全,我們是基于作業系統的安全機制和資料庫自身的安全機制來保證的;在作業系統的安全層面,我們采用IPTABLES白名單的方式,僅允許指定範圍的IP的内網伺服器通路資料庫,同時嚴格隔離線上和線下。在資料庫自身安全機制上面,我們針對細粒度IP進行授權,并且回收了表的建立、删除、DDL操作權限;同時我們開發、部署了資料庫通路巡檢工具,實時屏蔽不合法的通路。針對通路安全,為了降低授權成本,我們研發并全部使用自動化授權工具授權。

資料安全,我們主要是通過多級備份政策來保證的,多級備份政策是指:熱備份+邏輯備份+二級備份+定制備份。熱備份保證資料庫可以在一周内恢複到某個時間點,邏輯備份作為熱備份的補充;二級備份主要是将曆史上的邏輯備份做一下遠端雙份備份,以規避誤操作帶來的損失;定制備份是針對一些特殊業務需求,做按天切片備份,滿足業務對某天資料恢複的需求。同時為了確定資料快速恢複,我們盡量把單執行個體的大小控制在100G以内。熱備份+邏輯備份+二級備份可以滿足大部分廣告資料的恢複需求,而對于資金、計費、财務類資料,由于涉及到審計,我們會與業務方确認是否需要補充定制備份。

CSDN:在你看來,一名優秀的技術人應該具備怎樣的素質?

王林平:技術人的範圍有些廣了,我談一下運維人員的必備素質吧。

首先是知識沉澱。基礎知識是做好工作的基石。系統的學習各類基礎知識,熟悉資料庫、作業系統的架構及相關工具的使用,熟悉主流腳本語言的開發,同時還需要對故障定位有一定的了解。

其次是經驗沉澱。要耐得住寂寞,不斷積累經驗。做運維工作需要豐富的經驗,高并發、大資料量運維經驗,大量伺服器和執行個體的運維經驗。在關鍵的時候這些經驗會拯救企業的服務和資料。

再次是業務沉澱。要具備較強的業務了解能力,深入并精通所在崗位的業務。技術是為業務服務的,技術人員到一個新的崗位會的隻是通用技術,技術适應并結合業務才能發揮更大的作用。

最後是軟技能的沉澱。較強的執行力,适應業務、技術的創新能力,良好的溝通協作能力群組織能力,優秀的團隊配合能力;細緻、冷靜、沉穩,優秀的判斷能力和緊急狀況擇優處理能力;充分的了解和被了解。要有不斷更新自己的欲望和自我驅動力。網際網路技術日新月異的,行業的發展非常迅速,必須不斷地學習新知識和技能,才能跟上時代,更好的成長。

CSDN:給從事資料庫運維的開發者分享些建議吧。

王林平:有幾點想法分享下:

第一,運維工作最重要的是穩定性。判斷是否要做一件事比做好一件事更重要。

第二,自動化運維已經成為目前主要的運維方式。網際網路運維進入自動化時代,以開放的心态面對現狀展望未來,修煉自己全面技術能力很重要,除了會拿來,更需要會創造,讓人去想,讓機器做事。

第三,工作工具很重要。有一套自己的工作工具,可以事半功倍。

第四,需要建立服務意識和服務體系。作為背景支撐團隊,提供更好的資料相關服務是最重要的。

第五,低頭走路别忘記擡頭看天。做好本職工作的同時要時刻考慮自己和團隊的價值是什麼,對業務和産品有什麼貢獻。

CSDN:其他有需要補充的嗎?

王林平:從資料庫運維發展曆程來看,主流的網際網路公司的路線基本類似,不同公司在不同的領域有自己的優勢。我們在規模化運維方面積累了一些經驗,也在國内外一些技術交流大會上學習到了許多經驗,希望整個行業能夠加強交流頻度和深度,互通有無,使資料庫運維更快速地發展。

(責編/夏夢竹,尋求報道或投稿,請聯系[email protected]

下一篇: sqlplus