MySQL優化:淘寶核心庫上的MySQL運維

        業界舉世矚目的“2012數據庫技術大會”已於2012年4月13日在京盛大召開,本次大會已經是IT168、ITPUB、IXPUB、ChinaUnix聯合主辦的第三屆數據庫技術會議。大會將針對大數據架構設計、數據庫安全、分佈式數據庫、商業智能、NoSQL、Hadoop等多個重點話題進行深入探討。此次大會得到了全國數據庫技術高手們的高度關注與支持,是當前象徵最高技術水平的數據庫工程師盛會。


        在當天下午的MySQL應用實踐專場中來自淘寶網的DBA架構師周振興爲與會人員帶了淘寶核心庫優化實踐課程《核心庫上的MySQL運維》。


        MySQL已經成爲淘寶最主要的在線數據存儲工具,周振興老師這次將爲大家介紹淘寶MySQL DB架構,以及如何實現切換(Failover)、如何優化、維護MySQL,從而低成本,高效率的支持淘寶在線數據業務。




MySQL@TaoBao


        周振興介紹說,MySQL在淘寶已經支撐起相當多的業務,登錄過淘寶的用戶都會看到以下所示的界面。



▲ 淘寶購物界面


        此界面中的多數信息都是存放在MySQL中的,如URL、歡迎信息、價格、物流、評價等。淘寶的業務是垂直劃分的,如商品中心、交易中心等很多業務線,所有的APP都是通過中間層TDDL(淘寶分佈式數據層)訪問到數據庫(羣集)。商品中心現有5TB的數據,應用、搜索和數據倉庫都需要用到數據庫,但搜索和數據倉庫通過中間層訪問的是數據庫中的配置信息,監控系統會隨時異常的訪問進行預警。

        容災也是DBA必須要考慮的,多個MySQL主機中的某臺主機一旦發生故障,如果是關鍵節點,則會自動將其訪問切換到其他主機上,早期通過IP地址實現數據庫的切換,提供給客戶端的數據庫連接IP,因爲切換後,IP地址變了,如果手動更改程序,就不太現實。所以,現在改用域名的方式。因爲DNS可以進行相應的配置。操作起來比較靈活。


MySQL表優化

        周振興現場爲大家介紹了MySQL Optimize Table,很難說Optimize Table到底能不能提高系統運行效率,但是有一點是肯定的:它能夠幫我們回收更多的空間、減少“碎片”(defragment)。在InnoDB的維護過程中,我們總會遇到磁盤耗盡、或者InnoDB Tablespaces用完的情況。這時候,在考慮擴容等方案之前,最好先使用Optimize Table試試。如果你的表大字段(Text Blob Varchar),並且更新、刪除較頻繁的話,Optimize之後可能會騰出大量的空間。目前支持optimize命令的引擎有 MyISAM, InnoDB, and ARCHIVE,對於InnoDB,會將optimize命令映射爲ALTER TABLE命令,該命令會重建數據表,更新索引統計信息、回收主鍵索引中空間。如果你的MySQL是有備庫的,如果你只希望在主庫上執行的話,那麼可以加上關鍵字NO_WRITE_TO_BINLOG(或者LOCAL,意思完全相同)。這對於MM結構的MySQL數據庫尤爲重要,因爲很多時候,你只是想在備庫上執行,而不希望影響主庫。



        當運營中的MySQL服務器增多的時候,Bug也在所難免,如何處理Bug?周振興給大家介紹了一些工具和方法,他說,嘗試找到Bug重現的場景,確定這是一個Bug,而不是一個Mistake。一般遇到Bug,都能在MySQL Bug找到線索,如果能夠確定是Bug,可以看看新的版本是不是已經修復,如果修復則可以考慮升級小版本號。另外,找到Bug重現的場景,還可以考慮繞過Bug(workaround),讓自己的應用或者DDL儘量避免Bug出現。有時候,新版本新特性會帶來一些Bug,不得以我們還可以考慮降級版本,雖然這是不推薦的做法,因爲這樣的可能陷入死循環。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章