更新時間:2021-03-17 17:56:12 來源:動力節(jié)點 瀏覽1375次
MySQL集群是一個無共享的(shared-nothing)、分布式節(jié)點架構的存儲方案,其目的是提供容錯性和高性能。它采用了 NDB Cluster 存儲引擎,允許在 1 個群集中運行多個 MySQL 服務器。初步掌握MySQL集群原理是我們學習MySQL集群要邁出的第一步。
數據更新使用讀已提交隔離級別(read-committedisolation)來保證所有節(jié)點數據的一致性,使用兩階段提交機制(two-phasedcommit)保證所有節(jié)點都有相同的數據(如果任何一個寫操作失敗,則更新失?。?。無共享的對等節(jié)點使得某臺服務器上的更新操作在其他服務器上立即可見。傳播更新使用一種復雜的通信機制,這一機制專用來提供跨網絡的高吞吐量。通過多個MySQL服務器分配負載,從而最大程序地達到高性能,通過在不同位置存儲數據保證高可用性和冗余。
那么MySQL集群是如何存儲數據的呢?MySQLcluster數據節(jié)點組內主從同步采用的是同步復制,來保證組內節(jié)點數據的一致性。一般通過兩階段提交協(xié)議來實現,一般工作過程如下:
a)Master執(zhí)行提交語句時,事務被發(fā)送到slave,slave開始準備事務的提交。
b)每個slave都要準備事務,然后向master發(fā)送OK(或ABORT)消息,表明事務已經準備好(或者無法準備該事務)。
c)Master等待所有Slave發(fā)送OK或ABORT消息
如果Master收到所有 Slave的OK消息,它就會向所有Slave發(fā)送提交消息,告訴Slave提交該事務;
d)如果Master收到來自任何一個Slave的ABORT消息,它就向所有 Slave發(fā)送ABORT消息,告訴Slave去中止事務。
e)每個Slave等待來自Master的OK或ABORT消息。
如果Slave收到提交請求,它們就會提交事務,并向Master發(fā)送事務已提交 的確認;
如果Slave收到取消請求,它們就會撤銷所有改變并釋放所占有的資源,從而中止事務,然后向Masterv送事務已中止的確認。
f)當Master收到來自所有Slave的確認后,就會報告該事務被提交(或中止),然后繼續(xù)進行下一個事務處理。
由于同步復制一共需要4次消息傳遞,故MySQL cluster的數據更新速度比單機MySQL要慢。所以MySQL cluster要求運行在千兆以上的局域網內,節(jié)點可以采用雙網卡,節(jié)點組之間采用直連方式。
MySQL 群集分為三種節(jié)點:管理節(jié)點,數據節(jié)點和SQL節(jié)點。
1.管理節(jié)點:主要用于管理各個節(jié)點,能夠通過命令對某個節(jié)點進行重啟、關閉、啟動等操作。也能夠監(jiān)視全部節(jié)點的工作狀態(tài)。
2.數據節(jié)點:主要是對數據的存儲,不提供其他的服務。
3.SQL節(jié)點:主要是對外提供SQL功能,類似一臺普通的 MySQL Server。
而SQL節(jié)點和數據節(jié)點可以是同一臺機器,也就是說這臺機器即是SQL節(jié)點也是數據節(jié)點。它們只是邏輯關系上的劃分,實際部署時,甚至所有的階段都可以位于同一臺物理機器上,只是配置較復雜些。
隨著計算機和信息技術的迅猛發(fā)展和普及,行業(yè)應用系統(tǒng)的規(guī)模迅速擴大,行業(yè)應用所產生的數據量量呈爆炸式增長,類似于MySQL集群這樣的技術得到了廣泛的運用,MySQL集群原理的運用就顯得尤其重要,在本站的MySQL集群教程中,對于MySQL集群技術的應用場景有著詳細的介紹,能夠有效幫助我們學以致用,學到技術之后找到合適的職業(yè)發(fā)展方向。