更新時間:2021-03-17 17:56:12 來源:動力節點 瀏覽1365次
MySQL集群是一個無共享的(shared-nothing)、分布式節點架構的存儲方案,其目的是提供容錯性和高性能。它采用了 NDB Cluster 存儲引擎,允許在 1 個群集中運行多個 MySQL 服務器。初步掌握MySQL集群原理是我們學習MySQL集群要邁出的第一步。
數據更新使用讀已提交隔離級別(read-committedisolation)來保證所有節點數據的一致性,使用兩階段提交機制(two-phasedcommit)保證所有節點都有相同的數據(如果任何一個寫操作失敗,則更新失敗)。無共享的對等節點使得某臺服務器上的更新操作在其他服務器上立即可見。傳播更新使用一種復雜的通信機制,這一機制專用來提供跨網絡的高吞吐量。通過多個MySQL服務器分配負載,從而最大程序地達到高性能,通過在不同位置存儲數據保證高可用性和冗余。
那么MySQL集群是如何存儲數據的呢?MySQLcluster數據節點組內主從同步采用的是同步復制,來保證組內節點數據的一致性。一般通過兩階段提交協議來實現,一般工作過程如下:
a)Master執行提交語句時,事務被發送到slave,slave開始準備事務的提交。
b)每個slave都要準備事務,然后向master發送OK(或ABORT)消息,表明事務已經準備好(或者無法準備該事務)。
c)Master等待所有Slave發送OK或ABORT消息
如果Master收到所有 Slave的OK消息,它就會向所有Slave發送提交消息,告訴Slave提交該事務;
d)如果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 群集分為三種節點:管理節點,數據節點和SQL節點。
1.管理節點:主要用于管理各個節點,能夠通過命令對某個節點進行重啟、關閉、啟動等操作。也能夠監視全部節點的工作狀態。
2.數據節點:主要是對數據的存儲,不提供其他的服務。
3.SQL節點:主要是對外提供SQL功能,類似一臺普通的 MySQL Server。
而SQL節點和數據節點可以是同一臺機器,也就是說這臺機器即是SQL節點也是數據節點。它們只是邏輯關系上的劃分,實際部署時,甚至所有的階段都可以位于同一臺物理機器上,只是配置較復雜些。
隨著計算機和信息技術的迅猛發展和普及,行業應用系統的規模迅速擴大,行業應用所產生的數據量量呈爆炸式增長,類似于MySQL集群這樣的技術得到了廣泛的運用,MySQL集群原理的運用就顯得尤其重要,在本站的MySQL集群教程中,對于MySQL集群技術的應用場景有著詳細的介紹,能夠有效幫助我們學以致用,學到技術之后找到合適的職業發展方向。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習