叢集技術(三)MySQL叢集深度解析

來源:互聯網
上載者:User

標籤:

什麼是 MySQL 叢集

       MySQL叢集是一個無共用的(shared-nothing)、分布式節點架構的儲存方案,其目的是提供容錯性和高效能。

      

       資料更新使用讀已提交隔離等級(read-committedisolation)來保證所有節點資料的一致性,使用兩階段交易認可機制(two-phasedcommit)保證所有節點都有相同的資料(如果任何一個寫操作失敗,則更新失敗)。

      

        無共用的對等節點使得某台伺服器上的更新操作在其他伺服器上立即可見。傳播更新使用一種複雜的通訊機制,這一機制專用來提供跨網路的高輸送量。

  

       通過多個MySQL伺服器分配負載,從而最大程式地達到高效能,通過在不同位置儲存資料保證高可用性和冗餘。



架構圖




如何儲存資料

   

    Mysqlcluster資料節點群組內主從同步採用的是同步複製,來保證組內節點資料的一致性。一般通過兩階段交易認可 協議來實現,一般工作過程如下:


   a)Master執行提交語句時,事務被發送到slave,slave開始準備事務的提交。   b)每個slave都要準備事務,然後向master發送OK(或ABORT)訊息,表明事務已經準備好(或者無法準備該事務)。   c)Master等待所有Slave發送OK或ABORT訊息
 
   d)如果Master收到所有 Slave的OK訊息,它就會向所有Slave發送提交訊息,告訴Slave提交該事務;如果Master收到來自任何一個Slave的ABORT訊息,它就向所有 Slave發送ABORT訊息,告訴Slave去中止事務。
   e)每個Slave等待來自Master的OK或ABORT訊息。

         如果Slave收到提交請求,它們就會提交事務,並向Master發送事務已提交 的確認;

         如果Slave收到取消請求,它們就會撤銷所有改變並釋放所佔有的資源,從而中止事務,然後向Masterv送事務已中止的確認。


    f)當Master收到來自所有Slave的確認後,就會報告該事務被提交(或中止),然後繼續進行下一個交易處理。

由於同步複製一共需要4次訊息傳遞,故mysql  cluster的資料更新速度比單機mysql要慢。所以mysql cluster要求運行在千兆以上的區域網路內,節點可以採用雙網卡,節點群組之間採用直連方式。


    Mysql cluster將所有的索引列都儲存在主存中,其他非索引列可以儲存在記憶體中或者通過建立資料表空間儲存到磁碟上。如果資料發生改變(insert,update,delete等),mysql 叢集將發生改變的記錄寫入重做日誌,然後通過檢查點定期將資料定入磁碟。由於重做日誌是非同步提交的,所以故障期間可能有少量事務丟失。為了減少事務丟失,mysql叢集實現延遲寫入(預設延遲兩秒,可配置),這樣就可以在故障發生時完成檢查點寫入,而不會丟失最後一個檢查點。一般單個資料節點故障不會導致任何資料丟失,因為叢集內部採用同步資料複製。


MySQL叢集的橫向擴充


    1.添加資料節點群組來擴充寫操作,提高 cluster的儲存能力。支援線上擴容,先將新的節點加入到clsuter裡,啟動後用


ALTER ONLINE TABLE table_name REORGANIZE PARTITION
命令進行資料移轉,把資料平均分配到資料節點上。


    2.添加Slave僅僅擴充讀,而不能做到寫操作的橫向擴充。


整個系統的平均負載可以描述為:

AverageLoad=∑readload+ ∑writeload / ∑capacity假設每個伺服器每秒有10000的事務量,而Master每秒的寫負載為4000個事務,每秒的讀負載為6000,結果就是:AverageLoad=6000+4000/10000=100%


    現在,添加3個slave,每秒的事務量增加到40000。因為寫操作也會被複製,每個寫操作執行4次,這樣每個slave的寫負載就是每秒4000個事務。那麼現在的平均負載為:


AverageLoad=6000+4*4000/ 4*10000=55%



MySQL叢集的優缺點

優點:

    99.999%的高可用性;快速的自動失效切換;靈活的分布式體繫結構,沒有單點故障;高輸送量和低延遲;可擴充性強,支援線上擴容


缺點:


    存在很多限制,比如:不支援外鍵;部署、管理、配置很複雜;佔用磁碟空間大,記憶體大;備份和恢複不方便;重啟的時候,資料節點將資料load到記憶體需要很長時間

著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

叢集技術(三)MySQL叢集深度解析

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.