【學習背景】
近期陸續接觸到資料分析和資料視覺化的專案,考慮到資料庫的效能,涉及了讀寫分離,特地了解一下mysql讀寫分離的常見方案。做個學習筆記。
主要參考文獻:
【讀寫分離的目的】
通過資料庫中介軟體,可以對資料庫進行水平擴充套件,由原來單台資料庫擴充套件到多台資料庫,資料庫中介軟體通過路由規則將資料的訪問請求路由到其中一台資料庫上,從而大大降低了資料訪問的瓶頸和單台資料庫的壓力。通過資料庫中介軟體還可以將dba和研發進行解耦,提公升dba運維效率。
【關鍵問題】
怎麼識別對資料庫的訪問是寫還是讀?如何分發到不同的資料庫?
【常見方案】
方案1:應用程式根據業務邏輯來判斷,增刪改等寫操作命令發給主庫,查詢命令發給備庫。
特點:<1>資料庫和應用程式強耦合,資料庫如果有變化還好影響主庫。<2>應用程式複雜化。
方案2:利用中介軟體來做**,負責對資料庫的請求識別出讀還是寫,並分發到不同的資料庫中。
特點:<1> 資料庫和應用程式弱耦合。<2> **存在效能瓶頸和可靠性風險增加,相對可控。
常見的中介軟體:<1> mysql-proxy <2> amoeba for mysql(原文推薦這個,沒機會對比過) <3> mycat <4> dbproxy <5> 公有雲的rds資料庫+資料庫中介軟體,如華為雲的rds(關係型資料庫)+ddm(分布式資料庫中介軟體)
方案3:mysql集群模式,罕見,複雜度高,穩定性差。
【中介軟體**方案】的特點:
1、proxy將資料庫遮蔽在後端,而proxy根據路由將語句路由到對應db執行。
2、查詢效能提公升:資料有多份副本,查詢效能得到保證。
3、服務可用性:心跳檢測保證其中某節點的某台機器宕了也不影響整體的服務,每個db具有ha。
4、proxy本身可能會成為效能瓶頸和單點故障,proxy也可以做成集群的負載均衡器。
mysql資料庫實現讀寫分離
在專案中使用mysql資料庫,所有的增刪改查操作都在主庫處理,隨著查詢訪問量的增加,單庫處理的壓力驟增,為了防止主庫故障,使用一主多從的方式,通過讀寫分離,把所有的查詢處理都放到從伺服器上,減少單點故障導致整個服務掛掉的情況。使用mysql的com.mysql.jdbc.replicationdri...
資料庫讀寫分離
隨著乙個 的業務不斷擴充套件,資料不斷增加,資料庫的壓力也會越來越大,對資料庫或者sql的基本優化可能達不到最終的效果,我們可以採用讀寫分離的策略來改變現狀。讀寫分離現在被大量應用於很多大型 這個技術也不足為奇了。ebay就做得非常好。ebay用的是oracle,聽說是用 quest share p...
資料庫讀寫分離
隨著乙個 的業務不斷擴充套件,資料不斷增加,資料庫的壓力也會越來越大,對資料庫或者sql的基本優化可能達不到最終的效果,我們可以採用讀寫分離的策略來改變現狀。讀寫分離現在被大量應用於很多大型 這個技術也不足為奇了。ebay就做得非常好。ebay用的是oracle,聽說是用 quest share p...