1.png 在實際的生產環境中,由單台MySQL數據庫服務器不能滿足實際的需求。此時數據庫集羣就很好的解決了這個問題了。採用MySQL分佈式集羣,能夠搭建一個高併發、負載均衡的集羣服務器。但是在搭建MySQL集羣之前,必須要保證每台MySQL服務器裏的數據同步。數據同步可以通過MySQL內部配置就可以輕鬆完成,主要有:主從複製和主主複製。

image.png
點擊這裏查看視頻講解:【趙渝強老師】:MySQL的主從複製與主主複製

一、 MySQL的主從複製集羣

MySQL數據庫自身提供的主從複製功能可以方便的實現數據的多處自動備份,實現數據庫的拓展。多個數據備份不僅可以加強數據的安全性,通過實現讀寫分離還能進一步提升數據庫的負載性能。主從複製(也稱AB複製)允許將來自一個MySQL數據庫服務器(主服務器)的數據複製到一個或多個MySQL數據庫服務器(從服務器)。根據參數文件的配置,可以複製數據庫中的所有數據庫,所選數據庫甚至選定的表。 MySQL的一主多從的架構如下圖所示: image.png

MySQL中複製的優點包括:

  • 橫向擴展:在多個從站之間分配負載以提高性能。在此環境中,所有寫入和更新都必須在主服務器上進行。但是,讀取可以在一個或多個從設備上進行。該模型可以提高寫入性能(因為主設備專用於更新),同時顯着提高了越來越多的從設備的讀取速度。
  • 數據安全性:因為數據被複制到從站,並且從站可以暫停複製過程,所以可以在從站上運行備份服務而不會破壞相應的主數據。
  • 任務分離:可以在主服務器上創建實時數據,而信息分析可以在從服務器上進行,而不會影響主服務器的性能。
  • 遠程數據分發:您可以使用複製為遠程站點創建數據的本地副本,而無需永久訪問主服務器。

image.png

如果一主多從的話,這時主庫既要負責寫入數據又要負責為幾個從庫提供二進制日誌。當從庫節點比較多的時候,可能會對主庫造成一定的讀寫壓力。因此此時可以稍做調整,將二進制日誌只給某一個從庫。該從庫再開啓二進制日誌並將自己的二進制日誌再發給其它從庫。這樣架構起來性能可能要好得多,而且數據之間的延時應該也稍微要好一些。改進後的MySQL主從架構如下圖所示。 image.png

二、 MySQL的主主複製集羣

MySQL的主從複製可以將主節點的變更通過binlog同步到從節點上從而實現數據的同步,其本質其實就是備份的一種方式。但是主從複製只能完成從主節點到從節點的同步,並不能完成從節點到主節點的同步。換句話説,從節點如果對數據進行了變更,將無法同步到主節點上。為了解決這樣的問題MySQL便提供了主主複製的功能。

MySQL主主複製也是MySQL備份的一種方式。所謂主主複製其實也就是兩天MySQL服務器互為主從複製的關係。每一個台MySQL服務器既是主節點master,也是另一台MySQL服務器的從節點slave。在主主複製的架構中,任何一方所做的變更都會同步到另一方的MySQL數據庫服務器中。

因此,MySQL的主主複製其實也就是主從複製的一種擴展,下圖展示了MySQL主主複製的基本架構。 image.png

image.png