隨著一個(gè)網(wǎng)站的業(yè)務(wù)不斷擴(kuò)展,數(shù)據(jù)不斷增加,數(shù)據(jù)庫(kù)的壓力也會(huì)越來越大,對(duì)數(shù)據(jù)庫(kù)或者SQL的基本優(yōu)化可能達(dá)不到最終的效果,我們可以采用讀寫分離的策略來改變現(xiàn)狀。讀寫分離現(xiàn)在被大量應(yīng)用于很多大型網(wǎng)站,這個(gè)技術(shù)也不足為奇了。ebay就做得非常好。ebay用的是oracle,聽說是用Quest Share Plex 來實(shí)現(xiàn)主從復(fù)制數(shù)據(jù)。
讀寫分離簡(jiǎn)單的說是把對(duì)數(shù)據(jù)庫(kù)讀和寫的操作分開對(duì)應(yīng)不同的數(shù)據(jù)庫(kù)服務(wù)器,這樣能有效地減輕數(shù)據(jù)庫(kù)壓力,也能減輕io壓力。主數(shù)據(jù)庫(kù)提供寫操作,從數(shù)據(jù)庫(kù)提供讀操作,其實(shí)在很多系統(tǒng)中,主要是讀的操作。當(dāng)主數(shù)據(jù)庫(kù)進(jìn)行寫操作時(shí),數(shù)據(jù)要同步到從的數(shù)據(jù)庫(kù),這樣才能有效保證數(shù)據(jù)庫(kù)完整性。Quest SharePlex就是比較牛的同步數(shù)據(jù)工具,聽說比oracle本身的流復(fù)制還好,mysql也有自己的同步數(shù)據(jù)技術(shù)。mysql只要是通過二進(jìn)制日志來復(fù)制數(shù)據(jù)。通過日志在從數(shù)據(jù)庫(kù)重復(fù)主數(shù)據(jù)庫(kù)的操作達(dá)到復(fù)制數(shù)據(jù)目的。這個(gè)復(fù)制比較好的就是通過異步方法,把數(shù)據(jù)同步到從數(shù)據(jù)庫(kù)。
主數(shù)據(jù)庫(kù)同步到從數(shù)據(jù)庫(kù)后,從數(shù)據(jù)庫(kù)一般由多臺(tái)數(shù)據(jù)庫(kù)組成這樣才能達(dá)到減輕壓力的目的。讀的操作怎么樣分配到從數(shù)據(jù)庫(kù)上?應(yīng)該根據(jù)服務(wù)器的壓力把讀的操作分配到服務(wù)器,而不是簡(jiǎn)單的隨機(jī)分配。mysql提供了MySQL-Proxy實(shí)現(xiàn)讀寫分離操作。不過MySQL-Proxy好像很久不更新了。oracle可以通過F5有效分配讀從數(shù)據(jù)庫(kù)的壓力。
ebay的讀寫分離(網(wǎng)上找到就拿來用了)
聯(lián)系客服