mysql主從復制瓶頸及延遲問題


無意中看到2012華東架構師大會主頁(http://atcc.mysqlops.com/#video_show),PS:現在架構師大會好多!

在里面看了mysql異步延遲解決方案的PPT,對於提出的解決方案有些共鳴,分享下

mysql 主從同步的目的應該有很多,有的是為了備份,有的是為了讀寫分離,看具體需求。
但主從機制是一樣的:
mysql主從的實現是,mysql master被使用后,其中master后台IO線程會寫Binlog;slave有一個Relay Log線程同步binlog日志,同時有另一個Extractor線程會讀取相應的Binlog,在Slave進行相應的同樣的操作。
對於主從正常執行,相應的延遲幾乎是不存在的。但是在高QPS下,主從同步卻出現了比較明顯的延遲情況。在PPT介紹中,當master QPS達到1萬左右時,Slave重做的QPS卻只有2000左右,因此所謂的瓶頸其實是在Binlog日志在slave重做這塊。而此處實現是單線程的,因此改進的方法此處用多線程實現。

PPT中介紹淘寶實現,修改了源碼,對應的機制是Transfer機制:此處通過對Binlog日志重做采用多線程實現,從而提高slave的QPPS,PPT給出的實驗數據按此機制實現后,QPS能達到1萬多。從而解決mysql主從之間高QPS下的數據同步問題。
當然使用此機制對應的mysql相關配制也有一定的要求:
1.Binlog日志格式必須是基於ROW級別的,
2.對應的SQL語句必須對應PK或者uni key。

對於以上兩點,作者解析是基於多線程必須是知道PK或者uni key才能完成相應的多線程重做slave,這樣才能保證SQL語句的執行順序。相對來說,對於第二點很多應用需求還是能滿足。但是對ROW日志格式,對於一些批量修改等應用,采用此日志格式所帶來的DB的IO壓力等應該也是需要考慮的。

畢竟一種新的方案的提出有它的優點也有它的缺點,合適才是最合理的。總的來說此PPT是圍繞此方案的實現在講解,很易懂。

有需要了解的可以去上面網址下載PPT學習!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM