天天看點

什麼是MySQL叢集?帶你全面掌握MySQL叢集原理

MySQL叢集是一個無共享的(shared-nothing)、分布式節點架構的存儲方案,其目的是提供容錯性和高性能。它采用了NDB Cluster存儲引擎,允許在1個群集中運作多個MySQL伺服器。

初步掌握MySQL叢集原理是我們學習MySQL叢集要邁出的第一步。

資料更新使用讀已送出隔離級别(read-committedisolation)來保證所有節點資料的一緻性,使用兩階段送出機制(two-phasedcommit)保證所有節點都有相同的資料(如果任何一個寫操作失敗,則更新失敗)。無共享的對等節點使得某台伺服器上的更新操作在其他伺服器上立即可見。傳播更新使用一種複雜的通信機制,這一機制專用來提供跨網絡的高吞吐量。通過多個MySQL伺服器配置設定負載,進而最大程式地達到高性能,通過在不同位置存儲資料保證高可用性和備援。

那麼MySQL叢集是如何存儲資料的呢?MySQLcluster資料節點組内主從同步采用的是同步複制,來保證組内節點資料的一緻性。一般通過兩階段送出協定來實作,一般工作過程如下:

  • Master執行送出語句時,事務被發送到slave,slave開始準備事務的送出。
  • 每個slave都要準備事務,然後向master發送OK(或ABORT)消息,表明事務已經準備好(或者無法準備該事務)。
  • Master等待所有Slave發送OK或ABORT消息

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

  • 如果Master收到來自任何一個Slave的ABORT消息,它就向所有 Slave發送ABORT消息,告訴Slave去中止事務。
  • 每個Slave等待來自Master的OK或ABORT消息。

如果Slave收到送出請求,它們就會送出事務,并向Master發送事務已送出 的确認;

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

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

由于同步複制一共需要4次消息傳遞,故MySQL cluster的資料更新速度比單機MySQL要慢。是以MySQL cluster要求運作在千兆以上的區域網路内,節點可以采用雙網卡,節點組之間采用直連方式。

MySQL 群集分為三種節點:管理節點,資料節點和SQL節點。

  1. 管理節點:主要用于管理各個節點,能夠通過指令對某個節點進行重新開機、關閉、啟動等操作。也能夠監視全部節點的工作狀态。
  2. 資料節點:主要是對資料的存儲,不提供其他的服務。
  3. SQL節點:主要是對外提供SQL功能,類似一台普通的 MySQL Server。

而SQL節點和資料節點可以是同一台機器,也就是說這台機器即是SQL節點也是資料節點。它們隻是邏輯關系上的劃分,實際部署時,甚至所有的階段都可以位于同一台實體機器上,隻是配置較複雜些。

随着計算機和資訊技術的迅猛發展和普及,行業應用系統的規模迅速擴大,行業應用所産生的資料量量呈爆炸式增長,類似于MySQL叢集這樣的技術得到了廣泛的運用,MySQL叢集原理的運用就顯得尤其重要。

對于MySQL叢集技術的應用場景有着詳細的介紹,能夠有效幫助我們學以緻用,主要從MySQL叢集架構解析到架構部署再到叢集架構測試,一步步帶你部署企業級的MySQL資料庫叢集項目,熟悉各個環節技術點,提升資料庫架構設計能力。

  • ​​MySQL叢集實戰入門學習教程​​

課程目錄

•001.MySQL叢集視訊教程:主從複制介紹

•002.MySQL叢集視訊教程:主從複制結構

•003.MySQL叢集視訊教程:主從複制流程原理

•004.MySQL叢集視訊教程:多執行個體安裝

•005.MySQL叢集視訊教程:多執行個體連結

•006.MySQL叢集視訊教程:一主多從-配置

•007.MySQL叢集視訊教程:-一主多從測試

•008.MySQL叢集視訊教程:雙主雙從配置

•009.MySQL叢集視訊教程:雙主雙從測試

•010.MySQL叢集視訊教程:多資料源-環境搭建

•011.MySQL叢集視訊教程:多算資料源實作

•012.MySQL叢集視訊教程:修複MySLQ主從複制

•013.MySQL叢集視訊教程:多資料源的問題

•014.MySQL叢集視訊教程:動态資料源

•015.MySQL叢集視訊教程:動态資料源執行流程

•016.MySQL叢集視訊教程:SpringBoot內建多資料源