為什么要進(jìn)行數(shù)據(jù)庫(kù)讀寫(xiě)分離 數(shù)據(jù)庫(kù)的讀寫(xiě)分離數(shù)據(jù)庫(kù)是怎么同步的?
數(shù)據(jù)庫(kù)的讀寫(xiě)分離數(shù)據(jù)庫(kù)是怎么同步的?數(shù)據(jù)不同,讀寫(xiě)分離同步操作也不一樣,以MySQL和Oracle為例:讀寫(xiě)分離:最常用的主從復(fù)制實(shí)現(xiàn)讀寫(xiě)分離功能當(dāng)數(shù)據(jù)被修改時(shí),執(zhí)行內(nèi)容將通過(guò)網(wǎng)絡(luò),添加到從庫(kù)的重放倉(cāng)
數(shù)據(jù)庫(kù)的讀寫(xiě)分離數(shù)據(jù)庫(kù)是怎么同步的?
數(shù)據(jù)不同,讀寫(xiě)分離同步操作也不一樣,以MySQL和Oracle為例:
讀寫(xiě)分離:最常用的主從復(fù)制實(shí)現(xiàn)讀寫(xiě)分離功能
當(dāng)數(shù)據(jù)被修改時(shí),執(zhí)行內(nèi)容將通過(guò)網(wǎng)絡(luò),添加到從庫(kù)的重放倉(cāng),然后通過(guò)重做日志還原主庫(kù)的操作,達(dá)到同步效果[result
]讀寫(xiě)分離:常用的讀寫(xiě)分離方案是DG(備庫(kù)可讀)
操作寫(xiě)入archivelog,然后通過(guò)網(wǎng)絡(luò)傳輸?shù)絺溆脭?shù)據(jù)庫(kù),然后備用數(shù)據(jù)庫(kù)用archivelog恢復(fù)數(shù)據(jù),達(dá)到了同步的目的。
為什么數(shù)據(jù)庫(kù)讀寫(xiě)分離能提高數(shù)據(jù)庫(kù)的性能?
讀寫(xiě)分離之所以能提高性能,是因?yàn)樽x寫(xiě)分離采用了這樣一種機(jī)制:假設(shè)我們有數(shù)據(jù)庫(kù)服務(wù)器1,它提供所有的外部操作,數(shù)據(jù)庫(kù)服務(wù)器2,它只保存數(shù)據(jù)庫(kù)服務(wù)器1的數(shù)據(jù)備份并定期同步,這樣服務(wù)器1就可以彌補(bǔ)意外撞車(chē)后盡可能多的損失。然而,server2本來(lái)可以提供添加、刪除、修改和查詢等服務(wù),造成了server2資源的極大浪費(fèi)。因此,我們希望服務(wù)器2也能做些什么,而不僅僅是作為備份。顯然,添加、刪除和修改不能由服務(wù)器2完成,因?yàn)樗鼘⑹シ?wù)器1的意義。因此,服務(wù)器2只提供查詢操作,添加、刪除和修改都由服務(wù)器1負(fù)責(zé)。這就是所謂的讀寫(xiě)分離。讀寫(xiě)分離機(jī)制使兩臺(tái)服務(wù)器分擔(dān)原來(lái)屬于一臺(tái)服務(wù)器的壓力,提高了性能。同時(shí),有數(shù)據(jù)備份,其穩(wěn)定性高于單臺(tái)服務(wù)器。