SQL Server Always On

SQL Server 2012所支持的Always On技術(shù)集中了故障轉(zhuǎn)移群集障簿、數(shù)據(jù)庫鏡像和日志傳送三者的優(yōu)點娇钱,但又不相同泞莉。故障轉(zhuǎn)移群集的單位是SQL實例馍管,數(shù)據(jù)庫鏡像和日志傳送的單位是單個用戶數(shù)據(jù)庫掸掏,而Always On支持的單位是可用性組茁影,每個組中可以包括一個或者是多個用戶數(shù)據(jù)庫。也就是說丧凤,一旦發(fā)生切換募闲,則可用性組中的所有數(shù)據(jù)庫會作為一個整體進(jìn)行切換。
Always On底層依然采用Windows 故障轉(zhuǎn)移群集的機(jī)制進(jìn)行監(jiān)測和轉(zhuǎn)移愿待,因此也需要先建立Windows Cluster浩螺,只不過可用性組中的數(shù)據(jù)庫不一定非要再存放在共享存儲上了,可以存儲在本地磁盤上仍侥。
Always On最多可以支持8個副本要出,但只有一個可用性副本上運(yùn)行的數(shù)據(jù)庫是處于可讀寫狀態(tài)。這個可讀寫的數(shù)據(jù)庫被稱為主數(shù)據(jù)庫(Primary Database)农渊,同時這個可用性副本被稱為主副本(Primary replica)患蹂,其余的副本都被稱為輔助副本(Secondary replica),輔助副本上的數(shù)據(jù)庫可能是不可訪問的砸紊,或者是只能接受只讀操作(取決于可用性組的配置)传于,這些數(shù)據(jù)庫被稱為輔助數(shù)據(jù)庫。一但發(fā)生故障轉(zhuǎn)移醉顽,任何一個輔助副本都可以成為新的主副本實例沼溜。主副本會不斷地將主數(shù)據(jù)庫上的數(shù)據(jù)變化發(fā)送到輔助副本,來實現(xiàn)副本間的數(shù)據(jù)庫同步游添。
下面系草,先來了解下Always On的關(guān)鍵特性:

1. 同故障轉(zhuǎn)移群集一樣通熄,也需要一個虛擬網(wǎng)絡(luò)名稱用于客戶端的統(tǒng)一連接。
2.一個主服務(wù)器最多對應(yīng)8個輔助服務(wù)器找都,且它們支持只讀功能唇辨,通過配置可以實現(xiàn)讀寫分離。
3.輔助服務(wù)器可以獨立執(zhí)行備份和DBCC維護(hù)命令檐嚣。
4.主服務(wù)器和輔助服務(wù)器之間的數(shù)據(jù)會被加密和壓縮,以提高安全性和網(wǎng)絡(luò)傳輸效率啰扛。
5.支持自動嚎京、手動和強(qiáng)制三種故障轉(zhuǎn)移方式。
6.有儀表盤用于監(jiān)控Always On的運(yùn)行狀態(tài)隐解。
7.可以實現(xiàn)多站點的部署鞍帝,即主站點和輔助站點可以跨物理網(wǎng)絡(luò)。

Always On的基本架構(gòu)

在Windows 故障轉(zhuǎn)移群集的基礎(chǔ)上部署Always On高可用組煞茫,用戶可以在群集節(jié)點上安裝SQL Server單機(jī)實例帕涌,也可以安裝SQL Server群集實例⌒眨可用性副本是單機(jī)實例蚓曼,那么數(shù)據(jù)庫副本就存放在運(yùn)行該實例節(jié)點的本地磁盤上;如果可用性副本是群集實例钦扭,那么數(shù)據(jù)庫副本就存放在共享磁盤上纫版。
可用性組從Windows群集角度來看,就是一個群集資源客情,其中的所有數(shù)據(jù)庫作為一個整體在節(jié)點間進(jìn)行故障轉(zhuǎn)移其弊,當(dāng)然這不包括系統(tǒng)數(shù)據(jù)庫,系統(tǒng)數(shù)據(jù)庫是不能加入高可用性組中的膀斋。
因為需要借助Windows群集實現(xiàn)監(jiān)控和轉(zhuǎn)移梭伐,所以Always On會受到一些限制:

  • 一個可用性組中的所有可用性副本必須運(yùn)行在單一的Windows群集上,跨不同Windows群集的SQL Server實例不能配置成一個Always On可用性組仰担。
  • 一個可用性組的所有可用性副本必須運(yùn)行在Windows群集的不同節(jié)點上糊识。運(yùn)行在同一個節(jié)點上的兩個不同實例不能用作同一個可用性組的副本。
  • 如果某個可用性副本實例是一個SQL群集實例摔蓝,那同一個SQL群集的其他非活躍節(jié)點上安裝的任何其他SQL實例都不能作為它的輔助副本技掏。
  • 一個數(shù)據(jù)庫只能屬于一個可用性組。
Always On可用性組與Windows故障轉(zhuǎn)移群集之間的關(guān)系

偵聽器Listener
Always On創(chuàng)建后项鬼,客戶端就需要進(jìn)行連接哑梳,為了讓應(yīng)用程序能夠透明地連接到主副本而不受故障故障轉(zhuǎn)移的影響,我們需要創(chuàng)建一個偵聽器绘盟,偵聽器就是一個虛擬的網(wǎng)絡(luò)名稱鸠真,包括虛擬IP地址悯仙、虛擬網(wǎng)絡(luò)名稱、端口號三個元素吠卷。一旦創(chuàng)建成功锡垄,虛擬網(wǎng)絡(luò)名稱會注冊到DNS中,同時為可用性組資源添加IP地址資源和網(wǎng)絡(luò)名稱資源祭隔,用戶就可以通過這個虛擬網(wǎng)絡(luò)名稱訪問可用性組货岭,而不用關(guān)心連接的是哪一個節(jié)點,它會自動將請求轉(zhuǎn)發(fā)到主節(jié)點疾渴,當(dāng)主節(jié)點發(fā)生故障后千贯,輔助節(jié)點會變?yōu)橹鞴?jié)點,偵聽器也會自動去偵聽主節(jié)點搞坝。與故障轉(zhuǎn)移群集不同搔谴,除了使用虛擬網(wǎng)絡(luò)名稱之外,主副本的真實實例名也可以被用來連接桩撮。
SQL Server 2012允許在副本實例處于運(yùn)行狀況的時候隨時綁定新的IP地址敦第、網(wǎng)絡(luò)名稱和端口號。因此可以隨時為可用性組添加偵聽器店量,而且這個操作會立即生效芜果。
要注意的是,SQL Browser服務(wù)是不支持Listener的融师。這是因為應(yīng)用程序在使用Listener的虛擬網(wǎng)絡(luò)名連接SQL Server時师幕,是以一個默認(rèn)實例的形式進(jìn)行訪問的(只有主機(jī)名,沒有實例名)诬滩,因此客戶端根本就不會去嘗試使用SQL Browser服務(wù)霹粥。

各副本間的數(shù)據(jù)同步

Always On必須要維護(hù)各副本間的數(shù)據(jù)一致性疼鸟,當(dāng)主副本上的數(shù)據(jù)發(fā)生變化后控,會同步到輔助副本上。在主副本和輔助副本上空镜,SQL Server都會啟動相應(yīng)的線程來完成相應(yīng)的任務(wù)浩淘。對于一般的SQL Server服務(wù)器,即沒有配置高可用性吴攒,會運(yùn)行Log Writer的線程张抄,當(dāng)發(fā)生數(shù)據(jù)修改事務(wù)時,此線程負(fù)責(zé)將本次操對應(yīng)的日志信息記錄到日志緩沖區(qū)中洼怔,然后再寫入到物理日志文件署惯。但如果配置了Always On主副本的數(shù)據(jù)庫,SQL Server會為它建立一個叫Log Scanner的線程镣隶,不間斷的工作极谊,負(fù)責(zé)將日志從日志緩沖區(qū)或日志文件里讀出诡右,打包成日志塊,發(fā)送到輔助副本轻猖。因此可以保證發(fā)生的數(shù)據(jù)變化帆吻,不斷送給各輔助副本。
輔助副本上存在固化和重做兩個線程完成數(shù)據(jù)更新操作咙边,固化線程會將主副本Log Scanner所發(fā)過來的日志塊寫入輔助副本磁盤上的日志文件里猜煮,因此稱為固化,然后重做線程負(fù)責(zé)從磁盤上讀取日志塊败许,將日志記錄對應(yīng)的操作重演一遍王带,此時主副本和輔助副本上的數(shù)據(jù)就一致了。重做線程每隔固定的時間點檐束,會跟主副本通信辫秧,告知自己的工作進(jìn)度束倍,主副本由此知道兩邊數(shù)據(jù)的差距被丧。Log Scanner負(fù)責(zé)傳送日志塊,不需要等待Log Writer完成日志固化绪妹;輔助副本完成日志固化以后就會發(fā)送消息到主副本甥桂,告知數(shù)據(jù)傳輸完成,而不需要等待重做完成邮旷,這樣各自獨立的設(shè)計黄选,是盡可能減少 Always On所帶來的操作對數(shù)據(jù)庫性能的影響。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末婶肩,一起剝皮案震驚了整個濱河市办陷,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌律歼,老刑警劉巖民镜,帶你破解...
    沈念sama閱讀 211,348評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異险毁,居然都是意外死亡制圈,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,122評論 2 385
  • 文/潘曉璐 我一進(jìn)店門畔况,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鲸鹦,“玉大人,你說我怎么就攤上這事跷跪〔鍪龋” “怎么了?”我有些...
    開封第一講書人閱讀 156,936評論 0 347
  • 文/不壞的土叔 我叫張陵吵瞻,是天一觀的道長嵌戈。 經(jīng)常有香客問我覆积,道長,這世上最難降的妖魔是什么熟呛? 我笑而不...
    開封第一講書人閱讀 56,427評論 1 283
  • 正文 為了忘掉前任宽档,我火速辦了婚禮,結(jié)果婚禮上庵朝,老公的妹妹穿的比我還像新娘吗冤。我一直安慰自己,他們只是感情好九府,可當(dāng)我...
    茶點故事閱讀 65,467評論 6 385
  • 文/花漫 我一把揭開白布椎瘟。 她就那樣靜靜地躺著,像睡著了一般侄旬。 火紅的嫁衣襯著肌膚如雪肺蔚。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,785評論 1 290
  • 那天儡羔,我揣著相機(jī)與錄音宣羊,去河邊找鬼。 笑死汰蜘,一個胖子當(dāng)著我的面吹牛仇冯,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播族操,決...
    沈念sama閱讀 38,931評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼苛坚,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了色难?” 一聲冷哼從身側(cè)響起泼舱,我...
    開封第一講書人閱讀 37,696評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎枷莉,沒想到半個月后娇昙,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,141評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡依沮,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,483評論 2 327
  • 正文 我和宋清朗相戀三年涯贞,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片危喉。...
    茶點故事閱讀 38,625評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡宋渔,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出辜限,到底是詐尸還是另有隱情皇拣,我是刑警寧澤,帶...
    沈念sama閱讀 34,291評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站氧急,受9級特大地震影響颗胡,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜吩坝,卻給世界環(huán)境...
    茶點故事閱讀 39,892評論 3 312
  • 文/蒙蒙 一毒姨、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧钉寝,春花似錦弧呐、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至逮走,卻和暖如春鸠蚪,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背师溅。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工茅信, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人险胰。 一個月前我還...
    沈念sama閱讀 46,324評論 2 360
  • 正文 我出身青樓汹押,卻偏偏與公主長得像矿筝,于是被迫代替她去往敵國和親起便。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,492評論 2 348

推薦閱讀更多精彩內(nèi)容