一、課程介紹
讀寫分離(主從同步)從字面意思就可以理解,就是把對數據庫的讀操作和寫操作分離開。讀寫分離在網站發展初期可以一定程度上緩解讀寫并發時產生鎖的問題,將讀寫壓力分擔到多臺服務器上。讀寫分離的基本原理是讓主數據庫處理事務性增、改、刪操作(INSERT、UPDATE、DELETE),而從數據庫處理SELECT查詢操作。隨著系統的業務量不斷增長數據多了之后,對數據庫的讀、寫就會很多。分庫減少單臺數據庫的壓力。本文以MS SQL Server數據庫為例主庫負責寫數據、讀數據。讀庫僅負責讀數據。寫庫就一個,讀庫可以有多個。
在上一節分享課程中《.NET Core基于SQL Server數據庫實現讀寫分離實戰演練》我們已經學會了如何在.NET Core代碼層面如何通過數據庫中間件來操作我們的讀寫分離的數據庫。本節課程接著上一節課程中遺留的問題,廢話不多說直接進入本次課程的主題。
.1、本次分享課程適合人群如下
1)、有一定的.NET Core開發基礎。
2)、有一定的SQL SERVER基礎知識。
3)、學習和了解.Net Core跨平臺開發技術。
如果您同樣對本次分享《基于SQL Server數據庫搭建主從復制實現讀寫分離實戰演練》課程感興趣的話,那么請跟著阿笨一起學習吧。一句話總結今天我們學習達到的目標?如何基于SQL Sever數據庫搭建主從同步實現讀寫分離。
廢話不多說,直接上干貨,我們不生產干貨,我們只是干貨的搬運工。
二、Microsoft SQL Server常見的幾種實現讀寫分離方案
2.1、SQL Server提供了三種技術實現讀寫分離
SQL Server提供了三種技術,可以用于讀寫分離的實現:日志傳送、事務復制和SQL Server 2012以上版本中新增的功能Always On技術。這三種技術的比較如下:
.NET高級進階之基于SQL Server搭建主從復制實現讀寫分離實戰演練
配置復制就沒有數據庫鏡像和AlwaysOn的要求那么高,只需要兩臺服務器能通過TCP進行通訊即可,兩臺服務器操作系統和SQL版本都可以不完全一致,而且兩臺服務器也不需要加入域,所以配置復制訂閱就簡單多了,但是復制訂閱主要是針對數據表而不能像鏡像和AlwaysOn那樣配置整個數據庫,這也是它的缺點吧。
綜上:考慮到簡單性和實用性,這里阿笨推薦采用事務復制技術來實現SQL SERVER讀寫分離。
三、Microsoft SQL Server 2014主從復制環境搭建實戰演練
1)、同臺服務器不同數據庫實現主從復制
在《.NET Core基于SQL Server數據庫實現讀寫分離實戰演練》分享課程中已經演示過。
2)、不同服務器不同數據庫實現主從復制(由于篇幅較長,單獨課程進行分享)
.NET高級進階之基于SQL Server搭建主從復制實現讀寫分離實戰演練
? ?讀寫分離就是主從集群,一主多從或者一主一叢都是可以的,就是數據庫主機復制寫入操作,從機負責讀的操作,主機寫入以后再同步給從機;
四、思考與總結
4.1、總結:怎么開發中我們的程序使用數據庫主從?
一個是主連接字符串,另外是一個或者多個從的字符配置,我們要實現讀寫分離就是去實現讀取的時候用從庫的連接字符串,寫入的時候用主庫的連接字符串,說到這里我想大家應該很明確自己的思路明確一點,那就是我們讀的時候用從庫,寫的時候用主庫。
1)、根據切換數據庫連接字符串R/W來實現手動的讀寫分離。缺點:不靈活,擴展低,不具備高可用,穩定性差,侵入式太強,只適合小項目臨時應急使用。
2)、第三方數據庫中間件比如阿里巴巴的MyCat、 360開發的atlas ?等等。缺點:重量級,入門門檻難度大,學習成本高。
3)、.NET Core開源數據庫訪問組件。優點:靈活,真真實現讀寫分離。?
4.2、思考:如何保證數據庫主從復制的高可用呢?
基于SQL Server搭建主從復制實現讀寫分離實戰演練
虛擬IP(VIP)。缺點:需要運維人員支持(基于VIP的keepalived高可用集群架構)!
1)、怎么實現故障檢測的那?
心跳,采用定時發送一個數據包,如果機器多長時間沒響應,就認為是發生故障,自動切換到熱備的機器上去。
2)、怎么實現自動切換那?
虛IP。何為虛IP那,就是一個未分配給真實主機的IP,也就是說對外提供數據庫服務器的主機除了有一個真實IP外還有一個虛IP,使用這兩個IP中的 任意一個都可以連接到這臺主機,所有項目中數據庫鏈接一項配置的都是這個虛IP,當服務器發生故障無法對外提供服務時,動態將這個虛IP切換到備用主機。
.NET Core支持數據庫讀寫分離的組件比較多,比如:FreeSql ,SmartSql,SqlSugar(在《.NET Core基于SQL Server數據庫實現讀寫分離實戰演練》中已經分享)等等。
最后送大家一句話:希望大家在.NET Core的學習道路上一直跟著阿笨堅持下去。
騰訊課堂
網易云課堂
不信的話,掃一掃