MySQL主從複製屬於集群技術還是負載均衡技術?

負載均衡是將請求分流,然而MySQL主從複製做不了這一點,需要應用伺服器自己做「路由」 ,

但是MySQL主從複製實現了集群中的數據同步,那麼資料庫主從複製應該是集群技術,冗餘技術而不是負載均衡技術啊

為什麼有些書上說MySQL主從複製是負載均衡技術呢?

以下是我的理解,請指正:

同步集群(mysql cluster)

結構: (data + sql + mgm節點)

特點:

1) 內存級別的,對硬體要求較低,但是對內存要求較大。換算比例為:1:1.1;

2) 數據同時放在幾台伺服器上,冗餘較好;

3) 速度一般;

4) 建表需要聲明為engine=ndbcluster

5) 擴展性強;

6) 可以實現高可用性和負載均衡,實現對大型應用的支持;

7) 必須是特定的mysql版本,如:已經編譯好的max版本;

8) 配置和管理方便,不會丟失數據;

非同步集群(mysql replication)

結構: (master + slave)

特點:

1) 主從資料庫非同步數據;

2) 數據放在幾台伺服器上,冗餘一般;

3) 速度較快;

4) 擴展性差;

5) 無法實現高可用性和負載均衡(只能在程序級別實現讀寫分離,減輕對主資料庫的壓力);

6) 配置和管理較差,可能會丟失數據;


嚴格地講,MySQL 複製屬於數據冗餘技術。不管是使用 MySQL NDB Cluster 還是 MySQL Replication 實現集群,都可以做到負載均衡,具體得看應用場景了。


主從複製解決不了很多問題:

1. 負載均衡,由於複製的時間差,不能保證同步讀,而且寫仍然單點,沒法多點寫,我對這個理解就是半吊子的讀寫均衡

2. 容災,基本都是有損容災,因為數據不同步,誰用誰知道,半吊子的容災

可能只是提供一種成本較低的數據備份方案加不完美的容災和負載均衡吧,這種方案註定是一種過渡方案,必將更新或被淘汰


複製顯然達不到集群的嚴格度,不論是HA 還AA(多活並行集群),複製都不能達不到數據一致性的集群要求, 複製很難嚴格界定是那種模式,可以歸類為:有一定冗餘度的非一致性非同步副本(不可靠不同步),對於沒有嚴格一致性要求的系統,可以定製為分擔負載、查詢過時報表的一種措施。


集群主要分為:高可用集群(High Availability Cluster),負載均衡集群(Load Balance Cluster),科學計算集群(High Performance Computing Cluster)

負載均衡(load balance):根據某種負載策略把請求分發到集群中的每一台伺服器上,讓整個伺服器群來處理網站的請求。

高可用(HA):根據某種負載策略把請求分發到集群中的每一台伺服器上,讓整個伺服器群來處理網站的請求。

MySQL 主從複製既是資料庫的負載均衡的方案,同時也是保證數據高可用的技術方案。

參考自:MySQL高可用與負載均衡架構


是不是負載均衡技術,這也不是一個非黑即白的問題。可以說mysql主從數據複製一定程度上起到了負載均衡的作用。但其實主要目的還是為了保證數據冗餘和高可用性。


贊同 @溫國兵 的說法,主從既是資料庫的負載均衡的方案,同時也是保證數據高可用的技術方案。

去年去參加一個線下沙龍,某位雲服務商的cto分享,一份數據,至少有1+3份存儲,1主3從


屬於數據冗餘技術,解決的問題是如何實現在不同位置存儲多份兒數據,來保證數據不會因為丟失一份兒全部丟失的問題,這樣組成的架構,就是集群了,當然通過複製可以構造多種不同架構,所以解決的問題就是數據冗餘。

你所說的負載均衡等等問題都是在集群的基礎上,通過上層的邏輯,然後解決數據路由,讀寫分離等等問題,而剛剛說的數據複製,組成集群,數據冗餘都屬於物理層,可以這樣理解。


集群分為:HA和LB 單純的主從複製屬於HA吧 加上讀寫分離 應該屬於LB


說那麼多書面語,有人能說清楚同步機制嗎


推薦閱讀:

終於等到你——MySQL 5.7與PostgreSQL 9.6的百萬QPS大比拼
如何實現基於 follow 關係的 timeline?
如何安裝與連接MySQL?
基於知乎用戶數據的基礎MySQL使用指南
時間序列資料庫漫談

TAG:資料庫 | MySQL | 負載均衡 | MySQLCluster | MySQL同步 |