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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

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

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

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

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

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

?

術(shù)語:

本系列將會(huì)用到很多鏡像甚至高可用的術(shù)語,所以這里先介紹相關(guān)概念:

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

?

運(yùn)行模式:

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

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

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

?

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

?

圖1-1 SQL Server鏡像運(yùn)行模式

高安全模式,High-Safety Mode:

?

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

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

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

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

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

?

?

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

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

高性能模式,High-Performance Mode:

?

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

圖1-3? 高性能運(yùn)行模式

?

同步、異步處理:

?

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

表1-1 同步和異步模式的特點(diǎn):

模式

版本要求

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

SAFETY選項(xiàng)

性能影響

恢復(fù)速度

故障轉(zhuǎn)移

同步

標(biāo)準(zhǔn)/企業(yè)

0丟失

FULL

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

可自動(dòng)

異步

企業(yè)版

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

OFF

影響較小

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

不可自動(dòng)

?圖1-4 SQL Server鏡像運(yùn)行模式選擇

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

會(huì)話:

?

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

暫停和恢復(fù)會(huì)話:

?

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

SSMS暫停會(huì)話:

  可以通過圖1-5中的方式暫時(shí)鏡像會(huì)話

?

圖1-5 暫停會(huì)話

T-SQL暫停、恢復(fù)會(huì)話:

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

ALTER DATABASE AdventureWorks2008R2 SET PARTNER SUSPEND;--暫停會(huì)話ALTER DATABASE AdventureWorks2008R2 SET PARTNER RESUME;--恢復(fù)會(huì)話

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

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

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

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

鏡像狀態(tài):?

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

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

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

切換角色:

?

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

手動(dòng)Failover:

使用T-SQL語句:

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

使用SSMS:

?

圖1-6使用SSMS實(shí)現(xiàn)手動(dòng)Failover

注意:高性能模式下不支持手動(dòng)切換

自動(dòng)Failover:

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

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

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

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

透明客戶端重定向?:

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

SQL Server2008鏡像的改進(jìn):

日志流壓縮:

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

自動(dòng)頁(yè)還原:

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

  • 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鏡像中各個(gè)功能所需的版本支持:

?

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

其他高可用對(duì)比

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

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

下面簡(jiǎn)要介紹一下鏡像和其他部分的對(duì)比:

集群(Cluster)

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

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

復(fù)制(Replication)

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

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

日志傳送(Log Shipping)

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

?

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

功能

Cluster

日志傳送

鏡像

復(fù)制

保護(hù)級(jí)別

實(shí)例

庫(kù)

庫(kù)

數(shù)據(jù)庫(kù)對(duì)象

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

/

可能

同步模式下無

可能有

自動(dòng)故障轉(zhuǎn)移

高安全模式下是

對(duì)客戶端是否透明

是,但需要設(shè)置字符串

停機(jī)時(shí)間

基于服務(wù)重啟

長(zhǎng)

等于恢復(fù)時(shí)間

長(zhǎng)

多備用庫(kù)

備用副本可讀

/

抵御誤操作

抵御磁盤故障

是否需要特定硬件

Windows集群

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

對(duì)性能影響

版本支持

2000開始

2000開始

2005開始

2000開始

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

總結(jié)

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

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