資料庫讀寫分離

2021-08-27 09:33:45 字數 1265 閱讀 1063

隨著乙個**的業務不斷擴充套件,資料不斷增加,資料庫的壓力也會越來越大,對資料庫或者sql的基本優化可能達不到最終的效果,我們可以採用讀寫分離的策略來改變現狀。讀寫分離現在被大量應用於很多大型**,這個技術也不足為奇了。

讀寫分離簡單的說是把對資料庫讀和寫的操作分開對應不同的資料庫伺服器,這樣能有效地減輕資料庫壓力,也能減輕io壓力。主資料庫提供寫操作,從資料庫提供讀操作,其實在很多系統中,主要是讀的操作。當主資料庫進行寫操作時,資料要同步到從的資料庫,這樣才能有效保證資料庫完整性。

能實現資料實時同步的技術很多,基於os層(例如veritas vvr),基於儲存複製(中高階儲存大多都支援),基於應用分發或者基於資料庫層的技術。因為資料同步可能並不是單一的db整庫同步,會涉及到業務資料選擇以及多源整合等問題,因此os複製和儲存複製多數情況並不適合做讀寫分離的技術首選。

基於日誌的oracle複製技術,oracle自身元件可以實現,同時也有成熟的商業軟體。採用oracle自身元件功能,無外乎logical standby、stream以及11g的physical standby(active data guard),對比來說,stream最靈活,但最不穩定,11g physical standby支援恢復與唯讀並行,但由於並不是日誌的邏輯應用機制,在讀寫分離的場景中最為侷限。如果技術團隊對相關技術掌握足夠充分,而選型方案的處理能力又能支撐資料同步的要求,採用oracle自身的元件完全可行。

選擇商業化的產品,更多出於穩定性、處理能力等考慮。市面上成熟的oracle複製軟體也無外乎幾種,無論是老牌的shareplex,還是本土dsg公 司的realsync和九橋公司的dds,或是oracle新貴goldengate,都是可供選擇的目標。隨著goldengate被oracle收購 和推廣,個人認為goldengate在容災、資料分發和同步方面將大行其道。

mysql也有自己的同步資料技術。mysql主要通過二進位制日誌來複製資料。通過日誌在從資料庫重複主資料庫的操作達到複製資料目的。

主資料庫同步到從資料庫後,從資料庫一般由多台資料庫組成這樣才能達到減輕壓力的目的。讀的操作怎麼樣分配到從資料庫上?應該根據伺服器的壓力把讀的操作分配到伺服器,而不是簡單的隨機分配。mysql提供了

mysql-proxy實現讀寫分離操作。不過mysql-proxy好像很久不更新了,可以考慮換amoeba,專注分布式資料庫proxy開發。坐落於client、db servers之間。對客戶端透明。具有負載均衡、高可用性、sql過濾、讀寫分離、可路由相關的query到目標資料庫、可併發請求多台資料庫合併結果。oracle可以通過f5有效分配讀從資料庫的壓力。

資料庫讀寫分離

隨著乙個 的業務不斷擴充套件,資料不斷增加,資料庫的壓力也會越來越大,對資料庫或者sql的基本優化可能達不到最終的效果,我們可以採用讀寫分離的策略來改變現狀。讀寫分離現在被大量應用於很多大型 這個技術也不足為奇了。ebay就做得非常好。ebay用的是oracle,聽說是用 quest share p...

資料庫讀寫分離

隨著乙個 的業務不斷擴充套件,資料不斷增加,資料庫的壓力也會越來越大,對資料庫或者sql的基本優化可能達不到最終的效果,我們可以採用讀寫分離的策略來改變現狀。讀寫分離現在被大量應用於很多大型 這個技術也不足為奇了。ebay就做得非常好。ebay用的是oracle,聽說是用 quest share p...

資料庫讀寫分離

隨著乙個 的業務不斷擴充套件,資料不斷增加,資料庫的壓力也會越來越大,對資料庫或者sql的基本優化可能達不到最終的效果,我們可以採用讀寫分離的策 略來改變現狀。讀寫分離現在被大量應用於很多大型 這個技術也不足為奇了。ebay就做得非常好。ebay用的是oracle,聽說是用 quest share ...