?? ? ?隨著一個網站的業務不斷擴展,數據不斷增加,數據庫的壓力也會越來越大,對數據庫或者SQL的基本優化可能達不到最終的效果,我們可以采用讀寫分離的策略來改變現狀。讀寫分離現在被大量應用于很多大型網站,這個技術也不足為奇了。ebay就做得非常好。ebay用的是oracle,聽說是用 Quest Share Plex 來實現主從復制數據。
?? ? 讀寫分離簡單的說是把對數據庫讀和寫的操作分開對應不同的數據庫服務器,這樣能有效地減輕數據庫壓力,也能減輕io壓力。主數據庫提供寫操作,從數據庫提供讀操作,其實在很多系統中,主要是讀的操作。當主數據庫進行寫操作時,數據要同步到從的數據庫,這樣才能有效保證數據庫完整性。 Quest SharePlex 就是比較牛的同步數據工具,聽說比oracle本身的流復制還好,mysql也有自己的同步數據技術。mysql只要是通過二進制日志來復制數據。通過日志在從數據庫重復主數據庫的操作達到復制數據目的。這個復制比較好的就是通過異步方法,把數據同步到從數據庫。
?? ? ?主數據庫同步到從數據庫后,從數據庫一般由多臺數據庫組成這樣才能達到減輕壓力的目的。讀的操作怎么樣分配到從數據庫上?應該根據服務器的壓力把讀的操作分配到服務器,而不是簡單的隨機分配。mysql提供了 MySQL-Proxy實現讀寫分離操作。不過MySQL-Proxy好像很久不更新了。oracle可以通過F5有效分配讀從數據庫的壓力。
ebay的讀寫分離(網上找到就拿來用了)
?mysql的讀寫分離
?? ? ? 上面說的數據庫同步復制,都是在從同一種數據庫中,如果我要把oracle的數據同步到mysql中,其實要實現這種方案的理由很簡單,mysql免費,oracle太貴。好像
Quest SharePlex
也實現不了改功能吧。好像現在市面還沒有這個工具吧。那樣應該怎么實現數據同步?其實我們可以考慮自己開發一套同步數據組件,通過消息,實現異步復制數據。其實這個實現起來要考慮很多方面問題,高并發的問題,失敗記錄等。其實這種方法也可以同步數
據到
memcache
中。
聽說oracle的
Stream也能實現,不過沒有試過。
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
