Mysql主從同步延遲問題及解決方案


Mysql主從同步延遲問題及解決方案

_________________________________________________________

問題一:主庫的從庫太多,導致復制延遲

從庫數據以3-5個為宜,要復制的從節點數量過多,會導致復制延遲

 

問題二:從庫硬件比主庫差,導致復制延遲

查看Master和Slave的系統配置,可能會因為機器配置不當,包括磁盤I/O、CPU、內存等各方面因素造成復制的延遲。一般發生在高並發大數據量寫入場景中

 

問題三:慢SQL語句過多

假如一條SQL語句執行時間是20秒,那么從執行完畢到從庫上能查到數據至少需要20秒,這樣就延遲20秒了。

一般要把SQL語句的優化作為常規工作不斷地進行監控和優化,如果單個SQL的寫入時間長,可以修改后分多次寫入。通過查看慢查詢日志或show full processlist命令,找出執行時間長的查詢語句或大的事務

 

問題四:主從復制的設計問題

例如主從復制單線程,如果主庫寫並發太大,來不及傳送到從庫,就會導致延遲。更高版本的Mysql可以支持多線程復制,門戶網站則會開發自己的多線程同步功能。

 

問題五:主從庫之間的網絡延遲

主從庫的網卡、網線、交換機等網絡設備都可能成為復制的瓶頸,導致復制延遲。另外,跨公網的主從復制很容易導致主從復制延遲

 

問題六:主庫讀寫壓力大,導致復制延遲

架構的前端要加buffer及緩存層

 

門戶網站的解決方案:

優酷的解決方案:數據庫分片技術,而拋棄了由於數據量的越來越多導致復制延遲的問題。按照user_id進行分片,這樣必須有一個全局的表來管理用戶與shard的關系,根據user_id可以得到share_id,然后根據share_id去指定的分片查詢指定的數據

 

淘寶的解決方案:修改源碼,對應的機制是Transfer機制,此處通過對Binlog日志重做采用多線程實現,從而提高slave的QPPS

 
 


免責聲明!

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



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