經過Keepalived搭建MYSQL雙主模式的高可用集羣系統

經過Keepalived搭建MYSQL雙主模式的高可用集羣系統前端

一.MYSQL replication介紹:mysql

     MYSQL replication是MYSQL自身提供的一個主從複製功能,就是一臺MYSQL服務器(slave)從另一臺MYSQL服務器(master)上覆制日誌,而後解析日誌應用到自身的過程。MYSQL replication是單向、異步複製。sql

      MYSQL replication支持鏈式複製,也就是說slave服務器下還能夠再連接slave服務器,同時slave服務器也能夠充當master的角色。在MYSQL主從複製中,全部表的更新必須在master服務器上運行,slave服務器僅能提供查詢操做。服務器

     優勢:網絡

     1,增長了MYSQL應用的健壯性,若是master服務器出現問題,能夠隨時切換到slave服務器,繼續提供服務異步

     2,能夠將MYSQL讀寫分離,寫操做只在master服務器完成,讀操做可在多個slave服務器上完成,因爲master服務器和slave服務器是保持數據同步的,所以不會對前端業務系統產生影響。同時,經過讀寫分離,能夠大大下降MYSQL的運行負荷。ide

     3,在網絡環境良好,業務量不大的環境中,slave服務器同步數據很快,基本能夠實現實時同步,而且,slave服務器在同步過程當中不會干擾master服務器。spa

      MYSQL replication支持多種類型的複製方式,常見的有基於語句的複製,基於行的複製和混合類型的複製。線程

      1,基於語句的複製:日誌

       MYSQL默認採用基於語句的複製,效率很高。基本方式是:在master服務器上執行的SQL語句,在slave服務器上再次執行一樣的語句。而一旦發現無法精確複製時,會自動選擇基於行的複製

      2,基於行的複製:

       基本方式爲:把master服務器上改變的內容複製過去,而不是把SQL語句在從服務器執行一遍

      3,混合類型的複製:

        是基於以上兩種類型發組合,默認採用基於語句的複製,若是發現基於語句的複製沒法精確完成,就會採用基於行的複製

二.MYSQL replication實現原理:

    MYSQL replication是一個從master複製到一臺或多臺slave的異步過程,在master與slave之間實現整個複製過程主要由三個線程來完成,其中一個IO線程在master端,另兩個線程(sql線程和io線程)在slave端

      要實現MYSQL replication,首先在master服務器上打開MYSQL的Binary log(產生二進制日誌文件)功能,由於整個複製過程實際上就是slave從master端獲取該日誌,而後在自身上將二進制文件解析爲SQL語句並徹底順序地執行SQL語句所記錄的各類操做。

     詳解:

     1,首先slave上的IO線程鏈接上master,而後請求從指定日誌文件的指定位置或者從最開始的日誌位置以後的日誌內容

     2,master在接收到來自slave的IO線程請求後,經過自身的IO線程,根據請求信息讀取指定日誌位置以後的日誌信息,並返回給slave端的IO線程,返回信息中除了日誌所包含的信息以外,還包括這次返回的信息在master端對應的binary log文件的名稱和binary log中的位置

     3,slave的IO線程接收到信息後,將獲取到的日誌內容一次寫入slave端的relay log文件(相似mysql-relay-bin.xxxxx)的最後,而且將讀取到的master端的binary log的文件名和位置記錄到一個名爲master-info的文件中,以便在下一次讀取的時候可以迅速定位開始日後讀取日誌信息的位置

     4,slave的SQL線程在檢測到relay log文件中新增長了內容後,會立刻解析該relay log文件中的內容,將日誌內容解析爲sql語句,而後在自身執行這些sql,因爲是在master和slave端執行了一樣的sql操做,因此兩端的數據是徹底同樣的,至此,整個複製過程結束。

相關文章
相關標籤/搜索