為了確定資料庫産品的穩定性,很多資料庫擁有雙機熱備功能。也就是,第一台資料庫伺服器,是對外提供增删改業務的生産伺服器;第二台資料庫伺服器,主要進行讀的操作。
讀寫分離的原理:讓主資料庫(Master)處理事務性增、改、删操作(INSERT、UPDATE、DELETE),而從資料庫(Slave)處理SELECT查詢操作。
讀寫分離的誕生原因:為了確定資料庫産品的穩定性,很多資料庫擁有雙機熱備功能。也就是,第一台資料庫伺服器,是對外提供增删改查業務的生産伺服器;第二台資料庫伺服器,僅僅接收來自第一台伺服器的備份資料(注意,不同資料庫産品,第一台資料庫伺服器,向第二台資料庫伺服器發送備份資料的方式不同)。當第一台資料庫崩潰後,第二台資料庫伺服器,可以立即上線來代替第一台資料庫伺服器,并且,在第一台資料庫伺服器崩潰後,寶貴的資料,依然會存在于第二台資料庫伺服器裡(根據目前業界的備份資料發送方式來看,當第一台資料庫崩潰後,第一台資料庫裡的仍然會有少量的新資料,沒能來得及被發送到第二台資料庫伺服器,是以,這部分資料就丢失了)。一般來說,為了配置友善,以及穩定性,這兩台資料庫伺服器,都用的是相同的配置。在實際運作中,第一台資料庫伺服器的壓力,遠遠大于第二台資料庫伺服器。是以,很多人希望合理利用第二台資料庫伺服器的空閑資源。從資料庫的基本業務來看,資料庫的操作無非就是增删改查這4個操作。但對于“增删改”這三個操作,如果是雙機熱備的環境中做,一台機器做了這三個操作的某一個之後,需要立即将這個操作,同步到另一台伺服器上。單向的同步,不複雜。但如果兩台機器都需要向對方進行同步,那邏輯就非常複雜,而且還會大大降低性能。出于這個原因,第二台備用的伺服器,就隻做了查詢操作。進一步,為了降低第一台伺服器的壓力,幹脆就把查詢操作全部丢給第二台資料庫伺服器去做,第一台資料庫伺服器就隻做增删改了。到就實作了所謂的讀寫分離。
資料來源:
資料庫的讀寫分離
https://blog.csdn.net/kobejayandy/article/details/8775255為什麼資料庫讀寫分離可以提高性能
https://my.oschina.net/candiesyangyang/blog/203425高性能系統的讀寫分離怎麼做?
https://zhuanlan.zhihu.com/p/86108084