淺談在MySQL應用上的挑戰
大?。?/span>0.05 MB 人氣: 2017-10-11 需要積分:1
標簽:MySQL(25720)
2016年4月22日-23日,由CSDN重磅打造的數據庫核心技術與實戰應用峰會、互聯網應用架構實戰峰會將在深圳舉行。這是繼3月中旬,SDCC之架構&數據庫峰會在上海圓滿收官后的再一次相聚。上海站上,18位技術講師給超過500名的現場參會者帶來了精彩分享,火爆程度超出主辦方想象。
即將到來的SDCC深圳技術峰會講師陣容強大,主辦方邀請了來自于百度、阿里、騰訊、滴滴出行、攜程、平安科技、AdMaster、華為、京東、唯品會、一號店、中國電信、閱文集團等公司的技術骨干、首席架構師來為與會者分享演講和交流,必定是一場技術人的饕餮盛宴。【目前限時6折,點擊這里搶票】
在即將到來的SDCC深圳技術峰會召開之際,由CSDN負責數據庫技術領域的小編采訪了一些參會講師,談談他們將在本次活動所分享的內容。
騰訊高級軟件工程師 雷海林
本期采訪的講師是來自騰訊高級軟件工程師 雷海林,他有著10年以上的Linux后臺Server開發經驗,目前主要從事分布式Cache、實時大數據處理引擎,分布式MySQL(TDSQL)設計和開發工作。
他將在SDCC 2016 深圳站之數據庫峰會上分享的主題是《 騰訊金融云數據庫備份恢復原理與實踐 》,全部數據庫技術峰會講師情況和議題等可參見:SDCC深圳站數據庫/大數據專場講師議題全公布。
以下是專訪內容:
CSDN:首先請簡單介紹下您和您所在的公司,以及目前所負責的領域。
雷海林:我叫雷海林,現任職于騰訊公司TEG計費平臺部,目前是騰訊金融級高一致性分布式數據庫TDSQL的技術負責人。
CSDN:騰訊作為業內知名企業,您在騰訊擔任高級軟件工程師以來,有沒有給您留下印象深刻的人或事呢?
雷海林:加入騰訊公司以來,從最初的很簡單的后臺Server開發開始,中途經歷了各種跨IDC,跨城容災技術方案的挑戰,然后再到高一致性分布式Cache,實時大數據引擎的開發,最后又因為SSD技術的大量普及和團隊對分布式數據庫的要求,很幸運與小伙伴們一起實現了TDSQL,感覺技術是需要持續積累和堅持,要時刻擁抱變化,這樣機會來的時候才能及時抓住。
CSDN:在開發過程中,您和您的團隊遇到哪些技術難點,并且每個階段又是如何克服的呢?
雷海林:我目前印象比較深的有如下幾個方面:
我們團隊雖然使用MySQL有上10年的歷史了,但是真正在做TDSQL的時候發現大家在MySQL源碼的積累上還是不多的,所以在做的過程是充滿了不確定性和忐忑,比如需要某個功能,那么不確定業界是否已經有相關的討論或者補丁,自己做修改是否能融入MySQL等等,出現這些問題都是源于我們對MySQL缺乏足夠的了解,同時MySQL又已經非常龐大了,因此我們需要補足這塊的知識。最終我們是采用7*12的工作制連續封閉了3個多月,仔細閱讀MySQL手冊,閱讀各種關于MySQL內核,高可用技術,MySQL運營優化相關的書籍和博客,分模塊熟悉MySQL代碼等等,再逐漸引入對MySQL,Pg,Oracle等數據庫熟悉和感興趣的同事,最后才感覺入門了,可以動MySQL了,當然現在還需要不斷地學習。
高一致性的改造:其實在做TDSQL之前,為了避免數據丟失,業界大部分采用的方案是半同步和Galera集群技術,但是我們在經歷大量測試過程中,發現在數據一致性,跨IDC性能方面還是存在不少問題,而我們團隊以前積累的高一致性切換技術又沒法直接套用,同時發現MySQL在金融領域也沒有太多的成功案例可以參考,所以是很糾結和苦惱的,但是大家都意識到NoSQL是很有局限性的,基于MySQL的高一致性改造方案是必須搞的,最終我們靜下心來,仔細研究CAP理論并結合我們多年的后臺開發經驗,最終找到的解決方案是在MySQL開啟線程池的情況下,通過異步化改造是可以實現性能的提升,同時結合我們以前在高一致性的技術積累引入容災調度,選舉,閃回等技術最終實現了目前的強同步架構,一方面保證了跨IDC的高性能,同時保證了單IDC故障能自動切換,并且能保證事務零丟失。
分布式方案:MySQL采用的share nothing架構,在互聯網大數據量的場景下主要靠業務層來做水平和垂直拆分,犧牲了很多關系數據庫的精髓。為了讓業務層能得到解放,必須將這個工作放到數據庫層來實現,目前解決方案都是通過引入中間件來解決這個問題,當然TDSQL也是采用這個思路;在做TDSQL之前我們已經有不少在NoSQL下自動Shard的方案,所以我們當時也是直接采用這個思路,讓TDSQL的分表完全不需要業務干預,集群根據表的大小,CPU/IO利用率等情況來做自動Shard,讓開發人員完全放棄事務和Join,發現推廣起來非常不順利,同時DBA運營起來發現數據分布特別靈活,在做備份恢復等操作都很不方便,總體而言這個方案過于理想化,實踐中是失敗的。既然意識到問題所在,我們立即調整思路,多聽下客戶(如Webank,部門的業務團隊)的意見,再仔細分析分布式與數據庫傳統特性如事務,Join等結合的難點,所以我們得出結論這塊是需要找一個平衡點的,最終提出的解決方案是放棄靈活的自動shard方案,支持將具有同樣shard key的庫表做成一個group,在數據擴容,縮容的過程當成一個整體來搬遷,在一個group內盡量完整支持數據庫的事務和Join等特性,對于這套方案,客戶都很容易理解和使用,目前推廣起來就順利多了。
CSDN:能否結合您多年的實戰經驗,談談對MySQL未來發展的前景,分享下您對未來數據庫相關領域的一些看法?
雷海林:目前MySQL的使用量非常龐大,國內外BAT,網易,Google,Facebook等大型互聯網公司都有基于MySQL進行定制化改造,并且將改造的原理和代碼基本上都反饋到了社區或者以博客,技術大會等形式進行了介紹,所以在這個領域大家都能提升的非??臁6鳲racle的官方MySQL,Percona,Mariadb作為主流的MySQL分支在商業利益的競爭驅動下也會竭盡全力地開發新功能和做性能優化,適配新的硬件等等,所以我對MySQL的發展非??春?,相信每年都會有亮點出現。接下來重點應該會在SQL執行計劃的優化,引擎層的性能優化,在線DDL,可運營型和分布式中間件方面持續發力。
CSDN:作為前輩,您覺得如何才能更好的掌握數據庫這門技術?
雷海林:數據庫作為與操作系統,編譯器并列的系統軟件,涉及到的理論知識,代碼實現和運營管理都是需要大量時間的學習才能掌握的好的,我想初期應該是重點研究數據庫的用戶手冊和Innodb引擎的手冊,重點要先對基本功能有個清晰的了解和驗證,對各個參數和狀態字段盡量了解含義,然后再根據興趣可以找一些數據庫內核分析的書籍和文章來學習并驗證,同時因為MySQL是個開源軟件,所以根據興趣也可以找代碼來分析了,當然前期通過3.x版本的代碼入手可能更好一點;總而言之,數據庫技術是一門實踐性很強的技術,需要能靜下心來投入大量時間來琢磨,只要努力,隨時都能讓你提高。
CSDN:除了這些以外,您最近還會關注哪些技術?
雷海林:我最近比較關注高性能的后臺開發,分布式技術的理論和分布式消息隊列,也對go語言非常感興趣。
CSDN:在本次SDCC 2016(深圳站)數據庫峰會上,您分享的話題是?
雷海林:我是一個開發人員,對于常用的東西都喜歡搞懂它的原理,所以我這次的分享主要是關于各種備份技術的底層原理和優缺點介紹,最后再介紹下TDSQL目前采用的方案和后期可能的優化方向,也希望借此機會,跟業內其他數據庫團隊交流交流。
CSDN:您最期待在SDCC 2016(深圳站)峰會上看到哪些內容?
雷海林:希望不要提太高大上的東西,所有話題能站在聽眾的角度分享的內容是可以容易被復制和學習的。
?
非常好我支持^.^
(0) 0%
不好我反對
(0) 0%