日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

第三篇——第二部分——第一文 SQL Server镜像简介

發(fā)布時間:2023/12/15 数据库 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第三篇——第二部分——第一文 SQL Server镜像简介 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
原文: 第三篇——第二部分——第一文 SQL Server鏡像簡介

原文出處:http://blog.csdn.net/dba_huangzj/article/details/26951563

  鏡像是什么?說白了就是個鏡子(沒用過鏡子?沒鏡子你總要小便吧?開個玩笑。。 ),這里鏡子的含義主要有兩個:1、一模一樣,下面會詳細介紹,包括庫名、數(shù)據(jù)文件和日志文件的存放路徑都要一樣。2、看得到,卻“用不了”,鏡像庫在沒有做任何處理時是不可訪問的。下面進入專業(yè)一點的解釋:

  數(shù)據(jù)庫鏡像(SQL Server Mirroring)從SQL Server 2005? SP2開始引入,雖然從2008開始被列為“將會被棄用”的功能,但是由于其有很多優(yōu)勢,一直被廣泛使用至今。本文將介紹鏡像的基礎,也會介紹和其他SQL Server提供的高可用方案的對比。《SQL Server掃盲》系列將會單獨介紹各種高可用方案,所以這里不會過多介紹,主要是進行對比。

?

術語:

本系列將會用到很多鏡像甚至高可用的術語,所以這里先介紹相關概念:

  • 主體服務器,Principal:在鏡像環(huán)境中,包含活動庫的源服務器,可以理解為主服務器。
  • 鏡像服務器,Mirror:在鏡像環(huán)境中,包含目標數(shù)據(jù)庫的服務器,即鏡像環(huán)境中的目標服務器。
  • 見證服務器,Witness:可選的一個服務器,用于監(jiān)控主體服務器和鏡像服務器,最主要的作用是進行自動故障轉(zhuǎn)移(automatic Failover)。
  • 伙伴服務器,Partner:相對于鏡像環(huán)境而言,鏡像服務器就是主體服務器的伙伴服務器,而主體服務器也是鏡像服務器的伙伴服務器。
  • 端點,Endpoint:綁定到網(wǎng)絡協(xié)議中的對象,允許SQL Server通過端點在網(wǎng)絡間交互。
  • 會話,Session:活動于鏡像環(huán)境中,用于維護服務器之間的狀態(tài)信息和關系。簡單來說就是鏡像環(huán)境中各個伙伴服務器之間信息的傳遞者。
  • 運行模式,Operating Mode:表示鏡像環(huán)境的安全級別,鏡像的運行模式有三種:帶有自動故障轉(zhuǎn)移的高安全性模式(帶有見證服務器的同步模式),不帶有自動故障轉(zhuǎn)移的高安全性模式(沒有見證服務器的同步模式),高性能模式(沒有見證服務器的異步同步)。
  • 角色,Role:在鏡像環(huán)境中的功能,同一時刻,一個特定的服務器只能是三種角色中的其中一種:主體、鏡像或見證。

?

運行模式:

  從大層面來說,SQL Server鏡像只有兩種模式:高安全模式和高性能模式。兩種模式的主要區(qū)別在于在事務提交后的操作。可以從圖1-1中查看運行模式。

  在高性能模式下,主體服務器不需要等待鏡像服務器響應即可提交事務。

  在高安全性模式,需要把事務同步到鏡像并得到響應后才最終提交主體服務器的事務。

?

注意:不管使用何種模式,主體庫都必須配置為完整恢復模式。

?

圖1-1 SQL Server鏡像運行模式

高安全模式,High-Safety Mode:

?

  這種模式是同步模式,可以細分為帶有自動故障轉(zhuǎn)移(即有見證服務器)的高安全模式和不帶自動故障轉(zhuǎn)移(即沒有見證服務器)的高安全性模式。如果沒有配置見證服務器,那么【帶自動故障轉(zhuǎn)移功能的高安全性(同步)】選項將會為灰色,即不可選。

  兩者最大的區(qū)別在于是否引入見證服務器,前面提到過,見證服務器能作為仲裁,偵測主體服務器的狀態(tài),一旦見證服務器不能連接主體服務器,將把會話自動切換到鏡像服務器,如果沒有見證服務器,那么需要手動切換。

  在高安全模式下,事務必須在鏡像庫上提交,才能在主體庫提交,這也意味著整套程序都必須等待鏡像提交事務后才能最終提交,如果在網(wǎng)絡情況不理想,將影響整個運行過程。高安全模式支持標準版和企業(yè)版,并且主體和鏡像服務器必須是相同版本,比如不能一個是標準版,一個是企業(yè)版。

  如果需要最高級別的鏡像安全性,可以使用見證服務器作為仲裁,見證服務器不是必須的,但是卻是自動Failover(故障轉(zhuǎn)移)功能必須的。見證服務器可以使用Workgroup(工作組版)或者Express版。

  見證服務器用于檢查鏡像環(huán)境中,主體庫和鏡像庫的聯(lián)接是否正常。見證服務器并不實際執(zhí)行Failover,僅僅是告知鏡像服務器:“主體服務器宕機了”。即使見證服務器也宕機了,僅僅是不能自動Failover而已,不影響鏡像環(huán)境。可以把見證服務器理解為,僅用于回答:主體服務器是否已經(jīng)宕機了?圖1-2 是帶有見證服務器的高安全性模式的示意圖

?

?

圖1-2 帶有見證服務器的高安全性模式

  當出現(xiàn)性能問題的時候,可以根據(jù)圖1-2的步驟來一步一步偵測。

高性能模式,High-Performance Mode:

?

  這種模式是異步模式,只能手動Failover,所以沒有必要設置見證服務器(實際上是可以設置,但是沒有任何意義。)。這種模式會有數(shù)據(jù)丟失的可能。和高安全性模式相比,這種模式不需要等待鏡像服務器的確認,所以在網(wǎng)絡條件不理想的環(huán)境下,是不錯的選擇。圖1-3是高性能運行模式的示意圖。

圖1-3? 高性能運行模式

?

同步、異步處理:

?

  從圖1-1 中可以看到,三種運行模式又可以分為兩類處理,同步和異步。當鏡像運行在同步模式下時,數(shù)據(jù)庫的SAFETY選項為FULL。當鏡像為異步時,數(shù)據(jù)庫SAFETY的選項為OFF。兩種高安全模式均為同步模式,高性能模式使用異步處理。表1-1 列出了兩種模式的主要特點:

表1-1 同步和異步模式的特點:

模式

版本要求

數(shù)據(jù)丟失

SAFETY選項

性能影響

恢復速度

故障轉(zhuǎn)移

同步

標準/企業(yè)

0丟失

FULL

網(wǎng)絡可能影響性能

可自動

異步

企業(yè)版

有可能丟失數(shù)據(jù)

OFF

影響較小

根據(jù)需要提交的事務量而定

不可自動

?圖1-4 SQL Server鏡像運行模式選擇

??????????????? SQL Server鏡像的運行模式及其重要,直接影響到配置、預算及故障偵測和性能優(yōu)化。需要在前期做好評估,并且選擇滿足當前SLA要求的模式。

會話:

?

  在配置完數(shù)據(jù)庫鏡像之后,就可以開始鏡像會話。在鏡像環(huán)境的所有服務器交互過程中,都通過會話來維護對方的狀態(tài)信息。開始會話本質(zhì)上就是開始主體數(shù)據(jù)庫和鏡像數(shù)據(jù)庫的同步進程。

暫停和恢復會話:

?

  當服務器出現(xiàn)性能問題時,暫停數(shù)據(jù)庫會話可以臨時停止因為鏡像帶來的壓力,但是要注意,暫停會話會導致日志依舊活動,并且無法截斷,如果時間持續(xù)太久,會引起日志文件的迅速增長,帶來一系列的性能問題。日志相關問題可以查看《SQL Server掃盲》中關于日志備份的文章。地址:http://blog.csdn.net/dba_huangzj/article/details/26844859

SSMS暫停會話:

  可以通過圖1-5中的方式暫時鏡像會話

?

圖1-5 暫停會話

T-SQL暫停、恢復會話:

  可在主體庫或者鏡像庫上執(zhí)行下面的腳本暫停和恢復會話:

ALTER DATABASE AdventureWorks2008R2 SET PARTNER SUSPEND;--暫停會話ALTER DATABASE AdventureWorks2008R2 SET PARTNER RESUME;--恢復會話

  當數(shù)據(jù)庫鏡像會話啟動后,主體服務器會發(fā)送事務給鏡像服務器,所有未發(fā)送到鏡像服務器的事務都被收集到發(fā)送隊列(send queue)。在高安全性模式下,僅在鏡像庫處于暫停狀態(tài)時才會建立send queue。如果是高性能模式,不僅鏡像處于暫停,即使服務器處于高使用率、網(wǎng)絡慢、鏡像服務器上有一個大型redo 隊列或者其他原因都會引起send queue。

  在鏡像庫中,已經(jīng)傳送過來但是未被寫入鏡像庫的事務日志的事務會存放到redo queue中。如果redo操作失敗,鏡像服務器會暫停會話直到問題解決。

  關于隊列的介紹,將會在本系列的第六篇《監(jiān)控和優(yōu)化SQL Server鏡像》中介紹。http://blog.csdn.net/dba_huangzj/article/details/26846203

  注意:一個數(shù)據(jù)庫只能有一個鏡像庫,如果需要保持多個副本,可以借助日志傳送加鏡像。

鏡像狀態(tài):?

SQL Server鏡像狀態(tài)可能包含下面幾種:

  • SYNCHRONIZING:正在同步,通常在第一次啟用數(shù)據(jù)庫鏡像時出現(xiàn),表示鏡像服務器正在追上主體服務器的進度。
  • SYNCHRONIZED:已經(jīng)同步完畢,大部分時間都是這種狀態(tài),一旦有爆發(fā)性的事務傳輸?shù)界R像數(shù)據(jù)庫,狀態(tài)會從SYNCHRONIZED轉(zhuǎn)變成SYNCHRONIZING。在高安全性模式下,這種狀態(tài)通常不會導致數(shù)據(jù)丟失,僅表示鏡像服務器正在同步,但是在高性能模式下,可能有數(shù)據(jù)丟失的風險。
  • SUSPENDED:掛起,當主體服務器不發(fā)送事務到鏡像服務器時出現(xiàn),在Failover發(fā)生后會出現(xiàn)這種狀態(tài)(如果鏡像環(huán)境依舊運行,僅使用Failover則不出現(xiàn),但是如果鏡像庫斷開連接,則會出現(xiàn))。手動暫停鏡像會話或者redo 日志發(fā)生錯誤時都會出現(xiàn)。
  • PENDING_FAILOVER:僅當主體服務器變成鏡像服務器并且斷開用戶連接時,會在原主體服務器出現(xiàn)這種狀態(tài)。在這種狀態(tài)下,主體服務器和鏡像服務器都會表現(xiàn)這種狀態(tài)。但是見證服務器會出現(xiàn):CONNECTED/DISCONNECTED/UNKNOWN的其中一種狀態(tài)。
    • CONNECTED:代表見證服務器能連到其中一個伙伴,另外兩種代表不能連到伙伴服務器,這種情況下,數(shù)據(jù)庫會變成不可用,如果鏡像環(huán)境使用了見證,而鏡像服務器為DISCONNECTED,并且鏡像服務器奔潰,那么數(shù)據(jù)庫(即使在主體服務器上)都會變得無法訪問。所以當見證為disconnected,可以關閉見證,從而禁用仲裁,使用ALTER DATABASE <DB> SET WITNESS OFF實現(xiàn)。
    • DISCONNECTED:當鏡像環(huán)境中的伙伴均無法連接對方時出現(xiàn)。

  可以使用sys.database_mirroring目錄視圖查看鏡像信息。

切換角色:

?

相比其他高可用,鏡像可以輕易切換角色,SQL Server鏡像可以使用下面三種方式切換角色:

手動Failover:

使用T-SQL語句:

Use master go ALTER DATABASE <DB> SET PARTNER FAILOVER--在主體服務器上執(zhí)行

使用SSMS:

?

圖1-6使用SSMS實現(xiàn)手動Failover

注意:高性能模式下不支持手動切換

自動Failover:

帶有見證服務器的高安全模式,當主體連接失敗或者停止工作時,會自動切換到鏡像服務器。當原主體服務器重新連機時,這臺原主體服務器會變成鏡像環(huán)境中的鏡像服務器。

可能丟失數(shù)據(jù)的強制切換:

這種切換方式支持沒有見證服務器的高性能和高安全模式,可以使用下面的T-SQL語句實現(xiàn):

ALTER DATABASE <DB> SET PARTNER FORCE_SERVICE_ALLOW_DATA_LOSS --在鏡像庫執(zhí)行

透明客戶端重定向?:

由SQL Native Client(SNAC)提供,允許鏡像環(huán)境下,應用程序自動重定向到鏡像數(shù)據(jù)庫中。通過在連接字符串加上Failover_Partner關鍵字來實現(xiàn)。應用程序需要添加重新嘗試聯(lián)接的功能。?

SQL Server2008鏡像的改進:

日志流壓縮:

基于最小化網(wǎng)絡帶寬帶來的影響,2008引入了日志流壓縮功能,但是需要注意壓縮和解壓功能天生就會增加CPU的開銷。

自動頁還原:

在過去,頁損壞是很頭痛的事情,并且很難恢復。2008的鏡像功能通過把鏡像庫的對應頁恢復到主體庫的頁上,從而恢復數(shù)據(jù)。但是有些頁鏡像是不能回復的,比如文件頭(page 0),數(shù)據(jù)庫啟動頁(boot page,page 9),SGAM、PFS。但是對于下面的情況,鏡像可以恢復:

  • Error 823:OScyclic redundancy check(CRC)failure
  • Error 824:logical errors including a bad page checksum or torn write
  • Error 829:page has been marked as restore pending

SQL Server鏡像各功能所需版本:

  一圖抵千言,圖1-7展示了SQL Server鏡像中各個功能所需的版本支持:

?

圖1-7 SQL Server鏡像中各個功能所需的版本支持

其他高可用對比

截至SQL Server 2012為止,內(nèi)置的高可用功能有集群(Cluster)、鏡像(Mirroring)、復制(Replication)、日志傳送(Log Shipping)和AlwaysOn(2012出現(xiàn))。其中AlwaysOn基本上已經(jīng)實現(xiàn)了集群、鏡像的組合功能,所以本文不把鏡像和AlwaysOn比較。僅對其他部分比較。詳細信息可以看官方文檔:

http://msdn.microsoft.com/zh-cn/library/ms190202(v=sql.105).aspx

下面簡要介紹一下鏡像和其他部分的對比:

集群(Cluster)

優(yōu)點:
  • 這部分特指2012之前的Cluster,它基于Windows 的故障轉(zhuǎn)移集群,可以自動檢測SQL Server的健康狀態(tài),進行自動故障轉(zhuǎn)移切換(自動Failover)。并且它的切換時間幾乎等于SQL Server服務啟動時間,除非有大量事務需要redo,否則一般不會延時很久,和帶有見證服務器的高安全運行模式一起被稱為2012之前的0延時高可用技術。另外兩種都不能實現(xiàn)自動切換及0延時。
  • 通過虛擬網(wǎng)絡名稱,客戶端可以透明訪問活動實例,而不用修改程序的連接字符串,這一點比鏡像有進一步的改進,鏡像由于只有一個鏡像庫,所以在第一次Failover成功之后,如果不做處理,鏡像環(huán)境中原主體庫即使重新聯(lián)機。
  • 從2008開始可以指定對非活躍節(jié)點進行升級維護。
缺點:
  • 使用共享磁盤,如果共享磁盤出問題,整個Cluster都會癱瘓。
  • 非活躍節(jié)點一直處于停止狀態(tài),不能分攤負載,也造成資源浪費。
  • 實施成本高,需要最少3臺機且必須在域中。
  • 故障轉(zhuǎn)移是整個實例的,和鏡像不同,如果只有某個或者少數(shù)幾個庫出現(xiàn)問題需要Failover,鏡像可以進行單獨轉(zhuǎn)移,但是Cluster不可以,這樣會導致少數(shù)不相關的庫受牽連。

  Cluster有譯成群集,不過這個無所謂,大家知道這個意思即可。我個人偏向使用英文。

復制(Replication)

  復制天生就不是一種高可用技術,實際上是用來進行數(shù)據(jù)同步而已。如果單純進行高可用方案,復制不是一個首選方案。

優(yōu)點:
  • 實現(xiàn)對象級別的同步,可以細化到列和行。
  • 訂閱庫(也就是復制環(huán)境下的目標庫)是可讀的,可以進行讀寫分離方案。
  • 支持多個庫訂閱一個庫。延時可以達到秒級。
  • 可以使用不同的SQL Server版本。
缺點:
  • 不提供自動故障轉(zhuǎn)移。
  • 不保證對象0丟失。
  • 故障偵測較為困難,錯誤信息往往不能很明顯地表現(xiàn)出問題。
  • 對表的定義有一定限制,比如事務復制要求表必須有主鍵。

日志傳送(Log Shipping)

優(yōu)點:
  • 目標庫可作為報表使用。并且過程中對主體服務器的壓力很小。
  • 支持冗余多個副本,可進行遠程暖備。
  • 機制簡單,故障偵測較為容易。
缺點:
  • 不支持不同版本的SQL Server。
  • 延時是一定有的,不能實現(xiàn)完全同步。
  • 不支持自動偵測和轉(zhuǎn)移。
  • 還原日志時,目標庫不能對外訪問。
  • 同步以庫為單位。

?

  下面借用《SQL Server 2012 實施與管理實戰(zhàn)指南》上的一個表格來總結(jié)一下:

功能

Cluster

日志傳送

鏡像

復制

保護級別

實例

數(shù)據(jù)庫對象

數(shù)據(jù)丟失

/

可能

同步模式下無

可能有

自動故障轉(zhuǎn)移

高安全模式下是

對客戶端是否透明

是,但需要設置字符串

停機時間

基于服務重啟

等于恢復時間

多備用庫

備用副本可讀

/

抵御誤操作

抵御磁盤故障

是否需要特定硬件

Windows集群

要求較好的磁盤和網(wǎng)絡

對性能影響

版本支持

2000開始

2000開始

2005開始

2000開始

下一篇:第三篇——第二部分——第二文 計劃搭建SQL Server鏡像?

總結(jié)

以上是生活随笔為你收集整理的第三篇——第二部分——第一文 SQL Server镜像简介的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。