簡單介紹mysql集群(圖)

黄舟
發布: 2017-03-11 14:10:13
原創
2211 人瀏覽過

一、什麼是MySQL##叢集


   MySQL叢集是一個不共享的(shared-nothing)、分散式節點架構的存儲方案,其目的是提供容錯性和高性能。    資料更新使用讀取已提交隔離等級(read-committedisolation)來保證所有節點資料的一致性,使用兩階段提交機制(two-phasedcommit)保證所有節點都有相同的資料(如果任何一個寫入操作失敗,則更新失敗)。    無共享的對等節點讓某台伺服器上的更新作業在其他伺服器上立即可見。傳播更新使用一種複雜的通訊機制,這種機制專用來提供跨網路的高吞吐量。

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


三、如何儲存資料

#1.Mysqlcluster資料節點群組內主從同步採用的是同步複製,來保證群組內節點資料的一致性。一般透過兩階段提交 協定來實現,一般工作流程如下:

a)Master執行提交語句時,事務被傳送到slave,slave開始準備事務的提交。

b)每個slave都要準備事務,然後向master發送OK(或ABORT)訊息,表示事務已經準備好(或無法準備該事務)。


c)Master等待所有Slave發送OK或ABORT訊息

      如果Master收到所有Slave的OK訊息,它就會向所有Slave發送提交訊息,告訴Slave提交該事務;


      如果Master收到來自任何一個Slave的ABORT訊息,它就向所有Slave發送ABORT訊息,告訴Slave去中止事務。

######e)每個Slave等待來自Master的OK或ABORT訊息。 ############         若Slave收到提交請求,它們就會提交事務,並寄送事務已提交事務的確認;###########         如果Slave#######        到取消請求,它們就會撤銷所有改變並釋放所佔有的資源,從而中止事務,然後向Masterv送事務已中止的確認。 ############f)      當Master收到所有Slave的確認後,就會回報該事務已提交(或中止),然後繼續進行下一個事務處理。 ############由於同步複製總共需要4個訊息傳遞,故mysql  cluster的資料更新速度比單機mysql慢。所以mysql cluster要求運行在千兆以上的區域網路內,節點可以採用雙網路卡,節點群組之間採用直連方式。 ########################### 問題: 將cluster擴容增加資料節點群組時會不       會導致資料更新速度降低? ############答案:不會,資料更新速度會變快。因為資料是分別處理,每個節點組所保存的資料是不一樣的,###也能減少鎖定。 ######

2.Mysqlcluster將所有的索引列都保存在主記憶體中,其他非索引列可以儲存在記憶體中或透過建立表空間儲存到磁碟上。如果資料改變(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

#叢集的優缺點

優點:

a)  99.999%的高可用性

#b)快速的自動失效切換

c)靈活的分散式體系結構,沒有單點故障

d )高吞吐量和低延遲

e)可擴展性強,支援線上擴容

##缺點:

#a)有許多限制,例如:不支援外鍵

b)部署、管理、設定很複雜

###### c)佔用磁碟空間大,記憶體大############d)備份和恢復不方便############e)重啟的時候,資料節點將數據load到記憶體需要很長時間######

以上是簡單介紹mysql集群(圖)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!