簡介
讀寫分離(Read/Write Splitting)。
1.原理:讓主資料庫(master)處理事務性增、改、刪操作(INSERT、UPDATE、DELETE),而從資料庫(slave)處理SELECT查詢操作。
2.誕生原因:
2.1 為了確保資料庫產品的穩定性,很多資料庫擁有雙機熱備功能。也就是,第一台資料庫伺服器,是對外提供增刪改查業務的生產伺服器;第二台資料庫伺服器,僅僅接收來自第一台伺服器的備份數據(注意,不同資料庫產品,第一台資料庫伺服器,向第二台資料庫伺服器傳送備份數據的方式不同)。當第一台資料庫崩潰後,第二台資料庫伺服器,可以立即上線來代替第一台資料庫伺服器,並且,在第一台資料庫伺服器崩潰後,寶貴的數據,依然會存在於第二台資料庫伺服器里(根據目前業界的備份數據傳送方式來看,當第一台資料庫崩潰後,第一台資料庫里的仍然會有少量的新數據,沒能來得及被傳送到第二台資料庫伺服器,所以,這部分數據就丟失了)。
2.2 一般來說,為了配置方便,以及穩定性,這兩台資料庫伺服器,都用的是相同的配置(思考一下,如果兩台伺服器的配置不同,會導致什麼結果)。
2.3 從上文的描述中,大家能看到,在實際運行中,第一台資料庫伺服器的壓力,遠遠大於第二台資料庫伺服器。因此,很多人希望合理利用第二台資料庫伺服器的空閒資源。那么,第二台資料庫伺服器能做些什麼事情呢?
2.4 從資料庫的基本業務來看,資料庫的操作無非就是增刪改查這4個操作。但對於“增刪改”這三個操作,如果是雙機熱備的環境中做,一台機器做了這三個操作的某一個之後,需要立即將這個操作,同步到另一台伺服器上。單向的同步,不複雜。但如果兩台機器都需要向對方進行同步,那邏輯就非常複雜,而且還會大大降低性能。(從保證ACID特性的角度,思考一下為什麼雙向同步會非常複雜且低性能?而單向同步卻不會?)出於這個原因,第二台備用的伺服器,就只做了查詢操作。進一步,為了降低第一台伺服器的壓力,乾脆就把查詢操作全部丟給第二台資料庫伺服器去做,第一台資料庫伺服器就只做增刪改了。
2.4 到這一步,就實現了所謂的讀寫分離。這樣做,缺點也非常明顯了。本來第二台資料庫伺服器,是用來做熱備的,它就應該在一個壓力非常小的環境下,保證運行的穩定性。而讀寫分離,卻增加了它的壓力,也就增加了不穩定性。因此,讀寫分離,實質上是一個在資金比較缺乏,但又需要保證數據安全的需求下,在雙機熱備方案上,做出的一種折中的擴展方案。
簡單實現
通過RAID技術,RAID是英文Redundant Array of Independent Disks的縮寫,翻譯成中文意思是“獨立磁碟冗餘陣列”,有時也簡稱磁碟陣列(Disk Array)。
簡單的說,RAID是一種把多塊獨立的硬碟(物理硬碟)按不同的方式組合起來形成一個硬碟組(邏輯硬碟),從而提供比單個硬碟更高的存儲性能和提供數據備份技術。
無盤套用
在這裡我們將工作站需要讀的數據如系統包,遊戲包存放於陣列0通道中,將工作站使用過程中寫的數據存放於陣列1通道中。基於RAID的物理特性從而達到提高無盤工作站讀寫速度的效果。這裡的讀寫分離主要是指單台伺服器下的PXD無盤如何實現讀寫分離,無盤套用中的讀寫分離技術遠不止步於單台伺服器,雙台或多台的讀寫分離才是重點,才是進一步體現效能的高效利用,即多服備份和分服回寫的概念,將在其它詞條中進行說明。