国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > SQL Server > 正文

SQL SERVER 2005數(shù)據(jù)庫鏡像(3)

2024-08-31 00:50:06
字體:
供稿:網(wǎng)友

  因?yàn)閟erver a無法看見見證服務(wù)器server w或者原先的鏡像伙伴server b,因此必須進(jìn)入disconnected狀態(tài)并使數(shù)據(jù)庫不可用。

  server b和server w可以組成quorum。server b無法看見server a,因此server b試圖成為主服務(wù)器并使其數(shù)據(jù)庫聯(lián)機(jī)。因?yàn)閟erver w也看不到server a,因此同意了server b。 server b現(xiàn)在有了quorum,擔(dān)當(dāng)起會(huì)話的主服務(wù)器角色,然后還原其數(shù)據(jù)庫。

  如果恢復(fù)通信連路,server a能夠看到server b如今成為主服務(wù)器,并檢測(cè)到見證服務(wù)器server w也認(rèn)可server b為主服務(wù)器。server a將其角色轉(zhuǎn)換為鏡像服務(wù)器,然后嘗試與新主服務(wù)器同步。同步之后的配置結(jié)果如圖15所示。

  圖15:該場(chǎng)景通信連路恢復(fù)后的版本,數(shù)據(jù)庫鏡像按反方向進(jìn)行

  總結(jié):見證服務(wù)器位于鏡像服務(wù)器的遠(yuǎn)程站點(diǎn)上,如果站點(diǎn)間的通信鏈路中斷,自動(dòng)的故障轉(zhuǎn)移產(chǎn)生。

  場(chǎng)景 hacl5:兩個(gè)站點(diǎn),見證服務(wù)器位于主服務(wù)器站點(diǎn)

  在這個(gè)高可用場(chǎng)景中,假設(shè)將見證服務(wù)器放置在主服務(wù)器所在的同一站點(diǎn)上,如圖16所示,然后兩個(gè)站點(diǎn)間的通信中斷了。

  圖16:主服務(wù)器/見證服務(wù)器和鏡像服務(wù)器之間的通信中斷

  在這種情況下,負(fù)責(zé)鏡像數(shù)據(jù)庫的server b被主服務(wù)器和見證服務(wù)器孤立。

  server a和server w繼續(xù)組成quorum,因此server a保持其數(shù)據(jù)庫為主數(shù)據(jù)庫。

  但是,server a同時(shí)將數(shù)據(jù)庫設(shè)置成disconnected狀態(tài),因?yàn)樗鼰o法看到server b也不可能進(jìn)行數(shù)據(jù)傳輸。server b也無法看到server a,因此也進(jìn)入disconnected狀態(tài)。配置結(jié)果如圖17所示。

  圖17:該場(chǎng)景中通信失敗導(dǎo)致兩個(gè)伙伴為disconnected狀態(tài)

  server a繼續(xù)接受事務(wù)但無法截?cái)嗍聞?wù)日志記錄。如果迅速恢復(fù)了鏈路,鏡像會(huì)話還可以重新同步并返回到初始操作狀態(tài)。

  總結(jié):見證服務(wù)器和主服務(wù)器位于同一站點(diǎn),鏡像服務(wù)器位于遠(yuǎn)程站點(diǎn),站點(diǎn)之間的通信中斷不會(huì)產(chǎn)生自動(dòng)的故障轉(zhuǎn)移。

  總結(jié):高可用場(chǎng)景中通信連路中斷

  在使用三臺(tái)獨(dú)立服務(wù)器的高可用配置中,有三條獨(dú)立的通信連路。

  ◆主服務(wù)器/鏡像服務(wù)器出現(xiàn)通信失敗,沒有自動(dòng)的故障轉(zhuǎn)移會(huì)發(fā)生。

  ◆主服務(wù)器/見證服務(wù)器首先出現(xiàn)通信失敗,隨后主服務(wù)器/鏡像服務(wù)器通信中斷 ,自動(dòng)的故障轉(zhuǎn)移將發(fā)生。恢復(fù)鏈路將繼續(xù)反方向的數(shù)據(jù)庫鏡像。

  ◆鏡像服務(wù)器/見證服務(wù)器通信失敗,沒有自動(dòng)的故障轉(zhuǎn)移會(huì)發(fā)生。

  在只有一條通信連路的高可用配置模式中,見證服務(wù)器駐留在主服務(wù)器或者鏡像服務(wù)器所在站點(diǎn)上。

  ◆見證服務(wù)器駐留在鏡像服務(wù)器的遠(yuǎn)程站點(diǎn)上,如果站點(diǎn)之間的通信鏈路中斷,那么自動(dòng)的故障轉(zhuǎn)移將發(fā)生。

  ◆見證服務(wù)器和主服務(wù)器位于同一站點(diǎn)上,鏡像服務(wù)器在遠(yuǎn)程站點(diǎn),站點(diǎn)之間的通信中斷不會(huì)導(dǎo)致自動(dòng)的故障轉(zhuǎn)移發(fā)生。

  高保護(hù)方案

  高保護(hù)模式配合safety full一起工作,但沒有見證服務(wù)器。因?yàn)殓R像配置中只包括主數(shù)據(jù)庫服務(wù)器和鏡像數(shù)據(jù)庫服務(wù)器,因此只有一條通信連路。這使場(chǎng)景數(shù)量大大降低。

  場(chǎng)景1:高保護(hù)操作模式只包括兩個(gè)server實(shí)例,主服務(wù)器和鏡像服務(wù)器。由于沒有見證服務(wù)器,自動(dòng)的故障轉(zhuǎn)移師不可能的。服務(wù)器之間僅有一條通信連路會(huì)中斷,導(dǎo)致配置結(jié)果如圖18所示。

  圖19:高保護(hù)場(chǎng)景中如果鏡像服務(wù)器不可用 ,那么主數(shù)據(jù)庫不受影響

  場(chǎng)景3:高保護(hù)場(chǎng)景中如果主數(shù)據(jù)庫不可用,那么鏡像數(shù)據(jù)庫必須繼續(xù)擔(dān)任鏡像,但進(jìn)入disconnected狀態(tài),如圖20所示。

  圖20:高保護(hù)場(chǎng)景中如果主數(shù)據(jù)庫不可用,那么鏡像數(shù)據(jù)庫進(jìn)入disconnected狀態(tài)

  因?yàn)楦弑Wo(hù)操作模式使用safety full,因此任何破壞都導(dǎo)致主數(shù)據(jù)庫比可用,而鏡像數(shù)據(jù)庫繼續(xù)維持recovering狀態(tài):沒有數(shù)據(jù)庫是聯(lián)機(jī)的。其結(jié)果是:該模式對(duì)于高可用性需求而言不是一個(gè)好的解決方案,因此更適合作為一種臨時(shí)方案,如必須將見證服務(wù)器移除一小段時(shí)間。

  高性能方案

  高性能操作模式配合safety off一起工作。 沒有見證服務(wù)器角色。因?yàn)殓R像配置中只包括主數(shù)據(jù)庫服務(wù)器和鏡像數(shù)據(jù)庫服務(wù)器,因此只有一條通信連路。盡管類似于高保護(hù)模式,但由于safety設(shè)置為off,因此其行為與高保護(hù)模式并不相同。

  場(chǎng)景1:在高性能操作模式中使用兩個(gè)sql server實(shí)例。一個(gè)負(fù)責(zé)主數(shù)據(jù)庫另一個(gè)負(fù)責(zé)鏡像數(shù)據(jù)庫。因此服務(wù)器之間只有一條通信連路并且可能中斷,導(dǎo)致如圖21所示的配置結(jié)果。

  圖21:高性能場(chǎng)景中通信失敗,兩個(gè)伙伴均進(jìn)入disconnected狀態(tài),但是主數(shù)據(jù)庫依然可用

  由于safety設(shè)置為off, server a不需要quorum就可以使數(shù)據(jù)庫保持為可用狀態(tài)。因此盡管已經(jīng)進(jìn)入disconnected狀態(tài),主服務(wù)器還可以繼續(xù)接受用戶活動(dòng)。如果通信恢復(fù),那么鏡像數(shù)據(jù)庫將嘗試追趕主數(shù)據(jù)庫但無法做到,或者出現(xiàn)redo錯(cuò)誤,如果它不能找回所有丟失的事務(wù)。

  場(chǎng)景2:在高性能場(chǎng)景中,如果鏡像數(shù)據(jù)庫不可用,那么主數(shù)據(jù)庫結(jié)果顯示在圖22中。

  圖22:如果在高性能模式下鏡像服務(wù)器不可用,主數(shù)據(jù)庫不受影響

  由于safety設(shè)置為off,因此主數(shù)據(jù)庫依然可用。

  場(chǎng)景 3:如果在高保護(hù)模式下主數(shù)據(jù)庫不可用,那么鏡像數(shù)據(jù)庫依然作為鏡像,但將被斷開,如圖23所示。

  圖23:如果主服務(wù)器不可用,那么server b不會(huì)受到影響,但是進(jìn)入disconnected狀態(tài)

  高性能操作模式和高保護(hù)模式一樣,沒有自動(dòng)的故障轉(zhuǎn)移。由于safety設(shè)置為off,當(dāng)鏡像服務(wù)器不可用時(shí),主服務(wù)器將保持其數(shù)據(jù)庫為可用。同樣由于safety設(shè)置為off,不保證事務(wù)一定到達(dá)鏡像數(shù)據(jù)庫。如果強(qiáng)制故障轉(zhuǎn)移到鏡像服務(wù)器,那么有些事務(wù)可能會(huì)因此丟失。

  實(shí)現(xiàn)數(shù)據(jù)庫鏡像

  可以在sql server 2005 books online,數(shù)據(jù)庫鏡像主題的“how to”中找到實(shí)現(xiàn)數(shù)據(jù)庫鏡像的基本信息。在白皮書的這一部分,我們來研究實(shí)現(xiàn)數(shù)據(jù)庫鏡像的一個(gè)特殊示例以及最佳實(shí)踐。

  監(jiān)視數(shù)據(jù)庫鏡像

  通過在sql server 2005 management studio的object explorer中檢查主數(shù)據(jù)庫和鏡像數(shù)據(jù)庫,可以查明每個(gè)數(shù)據(jù)庫鏡像伙伴的狀態(tài)。如果主數(shù)據(jù)庫和鏡像數(shù)據(jù)庫是同步的,那么object explorer就在主數(shù)據(jù)庫名稱的后面附加一個(gè)(principal, synchronized)消息,在鏡像服務(wù)器名稱的旁邊附加一個(gè)(mirror, synchronized)。可以在主服務(wù)器上彈出的數(shù)據(jù)庫 properties對(duì)話框中觀察mirroring頁面下方的狀態(tài)框,從而檢查數(shù)據(jù)庫鏡像會(huì)話的狀態(tài)。(數(shù)據(jù)庫 properties對(duì)話框不會(huì)在鏡像服務(wù)器上打開)。

  還可以查詢數(shù)據(jù)庫鏡像目錄視圖sys.database_mirroring和sys.database_mirroring_witnesses(更多關(guān)于使用目錄視圖檢查鏡像會(huì)話中數(shù)據(jù)庫狀態(tài)的信息,請(qǐng)參閱該白皮書前面數(shù)據(jù)庫動(dòng)態(tài)部分的“database mirroring catalog view metadata”。sql server books online中也包含了目錄視圖的完整文檔。)

  數(shù)據(jù)庫鏡像性能計(jì)數(shù)器

  可以使用性能計(jì)數(shù)器監(jiān)視數(shù)據(jù)庫鏡像會(huì)話中鏡像伙伴之間的網(wǎng)絡(luò)流量。 sql server database mirroring對(duì)象包含了大量有用的性能計(jì)數(shù)器來監(jiān)視主服務(wù)器和見證服務(wù)器。(參閱sql server books online中的"monitoring database mirroring")

  可以在每個(gè)數(shù)據(jù)庫上設(shè)置database mirroring對(duì)象。如果需要在一臺(tái)服務(wù)器上監(jiān)視不止一個(gè)數(shù)據(jù)庫,那么既可以單獨(dú)監(jiān)視某個(gè)數(shù)據(jù)庫的活動(dòng),也可以監(jiān)視所有數(shù)據(jù)庫的全部活動(dòng)。

  對(duì)于主服務(wù)器,log bytes sent/sec 計(jì)數(shù)器指示主服務(wù)器發(fā)送日志數(shù)據(jù)到鏡像服務(wù)器的速率,而log send queue指示在某個(gè)給定時(shí)間點(diǎn)事務(wù)日志緩沖區(qū)中有多少字節(jié)要發(fā)送到鏡像服務(wù)器。隨著事務(wù)日志記錄從主服務(wù)器發(fā)送到鏡像服務(wù)器,主服務(wù)器的發(fā)送隊(duì)列將逐漸縮小,但也會(huì)隨著新的日志記錄進(jìn)入日志緩沖區(qū)而增長。主服務(wù)器上的transaction delay 計(jì)數(shù)器指示主服務(wù)器由于等待鏡像服務(wù)器關(guān)于日志接收的確認(rèn)消息導(dǎo)致的延遲。主服務(wù)器上的sent/sec計(jì)數(shù)器與主服務(wù)器給鏡像服務(wù)器發(fā)送的數(shù)據(jù)頁面有關(guān)。

  在鏡像服務(wù)器上,log bytes received/sec指示鏡像服務(wù)器和主服務(wù)器之間相差多少。(見上面log bytes sent/sec 計(jì)數(shù)器)。redo queue 計(jì)數(shù)器指示redo隊(duì)列的大小。鏡像服務(wù)器在redo階段使用redo隊(duì)列重新執(zhí)行來自主服務(wù)器的事務(wù)。redo bytes/sec指示鏡像服務(wù)器執(zhí)行redo隊(duì)列中事務(wù)的速率。

  對(duì)于每個(gè)伙伴服務(wù)器,sends/sec和receives/sec 計(jì)數(shù)器指示有多少個(gè)發(fā)送和接收動(dòng)作bytes sent/sec和bytes received/sec 計(jì)數(shù)器指示在每個(gè)伙伴服務(wù)器上那些發(fā)送和接收動(dòng)作包含的字節(jié)數(shù)。

  估計(jì)redo和catch-up時(shí)間

  如果出現(xiàn)故障轉(zhuǎn)移,可以使用redo queue和redo bytes/sec來估算鏡像數(shù)據(jù)庫完成redo并成為可用狀態(tài)需要花費(fèi)的時(shí)間。使用下面的簡(jiǎn)單公式進(jìn)行計(jì)算:

  估計(jì)的redo時(shí)間(秒) =

  (redo queue)/(redo bytes/sec)

  類似的,如果主服務(wù)器上的活動(dòng)領(lǐng)先于鏡像服務(wù)器,可以使用log send queue和log bytes received/sec 計(jì)數(shù)器估算鏡像服務(wù)器追趕上主服務(wù)器需要花費(fèi)的時(shí)間。 下面給出了計(jì)算公式:

  估計(jì)的catch up時(shí)間(秒) =

  (log send queue)/( log bytes received /sec)

  profiler事件

  sql server 2005 profiler包含了一個(gè)數(shù)據(jù)庫鏡像事件類。database:database mirroring state change事件將記錄被監(jiān)視服務(wù)器是否發(fā)生了狀態(tài)改變。(參見sql server books online主題“database mirroring state change event class”)。當(dāng)使用這個(gè)事件類時(shí)包含database name和state來會(huì)對(duì)您大有幫助。可以使用該事件通知您數(shù)據(jù)庫鏡像會(huì)話中的任何狀態(tài)改變。

  數(shù)據(jù)庫鏡像排錯(cuò)

  數(shù)據(jù)庫鏡像最容易出錯(cuò)的地方就是配置過程和運(yùn)行過程。

  排除設(shè)置錯(cuò)誤

  如果已經(jīng)設(shè)置了數(shù)據(jù)庫鏡像但是無法啟動(dòng),那么重新開始所有配置步驟。

  1.確認(rèn)鏡像服務(wù)器盡可能接近主數(shù)據(jù)庫。如果嘗試啟動(dòng)數(shù)據(jù)庫鏡像時(shí)收到了以下的錯(cuò)誤消息:

  遠(yuǎn)程“adventureworks”數(shù)據(jù)庫沒有前滾到本地?cái)?shù)據(jù)庫日志副本中包含的一個(gè)時(shí)間點(diǎn)。(microsoft sql server, 錯(cuò)誤:1412)

  說明鏡像數(shù)據(jù)庫滯后于主數(shù)據(jù)庫。需要將主數(shù)據(jù)庫的事務(wù)日志備份應(yīng)用到鏡像數(shù)據(jù)庫(使用norecovery),從而使鏡像數(shù)據(jù)庫恢復(fù)到某個(gè)時(shí)間點(diǎn),并可以從此時(shí)間點(diǎn)開始接收來自主數(shù)據(jù)庫的日志記錄。

  2.確認(rèn)每個(gè)服務(wù)器的sql server windows服務(wù)帳戶彼此相互信任。如果服務(wù)器所在的域沒有建立信任關(guān)系,那么確保證書是正確的。

  3.通過查詢sys.database_mirroring_endpoints目錄視圖,確認(rèn)不僅定義而且啟動(dòng)了endpoint:

select * from sys.database_mirroring_endpoints;

  確認(rèn)使用了正確的完全限定計(jì)算機(jī)名稱以及正確的端口號(hào)。如果在一臺(tái)物理服務(wù)器的多個(gè)實(shí)例之間配置鏡像,那么端口號(hào)就必須是唯一的。sql server服務(wù)登陸帳號(hào)需要connect到endpoint的訪問權(quán)限。

  最后,確認(rèn)為服務(wù)器定義了正確的endpoint角色。

  4.確認(rèn)在alter database命令中指定了正確的鏡像伙伴名稱。可以在主服務(wù)器和鏡像服務(wù)器的sys.database_mirroring目錄視圖中(以及高可用模式下的sys.database_mirroring_witnesses witnesses)檢查鏡像伙伴名稱。

  排除運(yùn)行時(shí)錯(cuò)誤

  如果數(shù)據(jù)庫鏡像設(shè)置正確,然后在運(yùn)行過程中出現(xiàn)了錯(cuò)誤,請(qǐng)檢查會(huì)話的當(dāng)前狀態(tài)。如果由于錯(cuò)誤而使鏡像處于suspended狀態(tài),就可能在鏡像服務(wù)器上產(chǎn)生redo錯(cuò)誤。檢查并確認(rèn)鏡像服務(wù)器上有足夠的磁盤空間用于redo(數(shù)據(jù)文件所在分區(qū)的剩余空間)和日志hardening(日志文件所在分區(qū)的剩余空間)。當(dāng)您準(zhǔn)備重新啟動(dòng)會(huì)話時(shí),使用alter database來重新開始會(huì)話。

  如果無法連接到主數(shù)據(jù)庫,最可能的原因就是safety設(shè)置為full并且主服務(wù)器無法組成quorum。這種情況能夠發(fā)生,例如,如果系統(tǒng)在高保護(hù)模式下運(yùn)行(safety為full但沒有見證服務(wù)器),鏡像服務(wù)器又?jǐn)嚅_了和舊的主服務(wù)器的聯(lián)系。可以在鏡像服務(wù)器上使用下面的命令強(qiáng)制鏡像服務(wù)器進(jìn)行恢復(fù):

alter database [adventureworks] set partner force_service_allow_data_loss

  問題就在于一旦恢復(fù)了鏡像數(shù)據(jù)庫,鏡像服務(wù)器將成為主服務(wù)器但卻無法形成quorum,因此無法服務(wù)于數(shù)據(jù)庫。如果那樣的話,只要把safety設(shè)置為off就可以允許它服務(wù)于數(shù)據(jù)庫了。

  安全性與性能

  數(shù)據(jù)庫鏡像的性能是關(guān)于活動(dòng)類型和事務(wù)安全性的一個(gè)函數(shù)。

  傳輸日志到鏡像服務(wù)器會(huì)影響主服務(wù)器性能。數(shù)據(jù)庫鏡像給主服務(wù)器帶來的開銷是關(guān)于活動(dòng)類型的一個(gè)函數(shù)。數(shù)據(jù)庫鏡像在多用戶以及大量長事務(wù)的系統(tǒng)上操作性能最好,因?yàn)閿?shù)據(jù)庫服務(wù)器正常的事務(wù)活動(dòng)會(huì)掩蓋傳輸日志記錄到鏡像服務(wù)器的引起的開銷。如果單個(gè)用戶順序執(zhí)行大量短事務(wù),那么數(shù)據(jù)庫鏡像給每個(gè)事務(wù)造成的開銷將十分顯著。

  主服務(wù)器性能同樣受safety設(shè)置的影響。當(dāng)safety設(shè)置為full時(shí),主服務(wù)器必須等待鏡像服務(wù)器表示已經(jīng)收到日志記錄的確認(rèn)信息,才可以將事務(wù)提交消息返回給客戶端。如果有大量的用戶和大量的長事務(wù),那么這種等待導(dǎo)致的開銷并不明顯。單線程系統(tǒng)和包含許多小事務(wù)的系統(tǒng)在safety off時(shí)可以運(yùn)行的更好。

  因?yàn)殓R像服務(wù)器連續(xù)不斷地重新執(zhí)行從主服務(wù)器接收的數(shù)據(jù)更新事務(wù),鏡像服務(wù)器的數(shù)據(jù)緩存將變得'hot'。 換句話說,就是使用那些和主服務(wù)器類型相同的數(shù)據(jù)更新操作所涉及的數(shù)據(jù)頁面和索引頁面來加工緩存。為了使鏡像服務(wù)器的緩存更接近于主服務(wù)器緩存,數(shù)據(jù)庫鏡像將一個(gè)select提示也傳遞給鏡像服務(wù)器,從而可以在鏡像服務(wù)器重新生成用于數(shù)據(jù)查詢的緩存內(nèi)容。這樣可以幫助鏡像服務(wù)器更接近于主服務(wù)器,同時(shí)減少故障轉(zhuǎn)移時(shí)剩余的redo時(shí)間。很明顯,鏡像服務(wù)器上任何其他活動(dòng),包括對(duì)數(shù)據(jù)庫快照的查詢也會(huì)影響緩存的狀態(tài),并因此增加故障轉(zhuǎn)移時(shí)完成日志redo的時(shí)間。

  測(cè)試數(shù)據(jù)庫鏡像

  當(dāng)設(shè)置自己的系統(tǒng)來測(cè)試數(shù)據(jù)庫鏡像時(shí),有許多選項(xiàng)可用。所有數(shù)據(jù)庫鏡像都要求在數(shù)據(jù)庫鏡像會(huì)話中的服務(wù)器必須是不同的sql server實(shí)例。因此可以在一臺(tái)物理服務(wù)器上配置和測(cè)試數(shù)據(jù)庫鏡像,如果您安裝了多個(gè)sql server 2005關(guān)系數(shù)據(jù)庫引擎。也可以在一臺(tái)虛擬服務(wù)器上測(cè)試多個(gè)實(shí)例,但是在物理服務(wù)器上進(jìn)行測(cè)試更加可信。

  進(jìn)行數(shù)據(jù)庫鏡像的負(fù)載和壓力測(cè)試時(shí)需要不同的物理服務(wù)器。一臺(tái)服務(wù)器上的兩個(gè)或者三個(gè)實(shí)例可能會(huì)消耗不切實(shí)際的服務(wù)器資源。此外服務(wù)器之間的網(wǎng)絡(luò)連接質(zhì)量也同樣重要。主服務(wù)器和鏡像服務(wù)器之間的網(wǎng)絡(luò)越好,日志記錄和消息傳送的速度就越快。

  最逼真的測(cè)試就是在一臺(tái)真正的目標(biāo)服務(wù)器或者試驗(yàn)臺(tái)上進(jìn)行,并且和最終系統(tǒng)的物理屬性完全相同。當(dāng)您在一臺(tái)服務(wù)器上測(cè)試多個(gè)實(shí)例時(shí),只能通過停止實(shí)例或者關(guān)機(jī)的方式來模擬數(shù)據(jù)庫鏡像中服務(wù)器失敗的效果。使用多臺(tái)物理服務(wù)器時(shí),就可以通過斷開網(wǎng)線的方式來測(cè)試網(wǎng)絡(luò)連接失敗的效果。

  下面的實(shí)踐能夠幫助您創(chuàng)建測(cè)試環(huán)境:

  ◆要測(cè)試服務(wù)器失敗,關(guān)閉sql server實(shí)例,通過sql configuration manager或者使用 shutdown with nowait。

  ◆要測(cè)試通信失敗,拔掉服務(wù)器上的網(wǎng)線。

  ◆要測(cè)試數(shù)據(jù)庫失敗,停止sql server服務(wù),重新命名。mdf文件,然后再重啟sql server。

  ◆要導(dǎo)致鏡像數(shù)據(jù)庫的redo錯(cuò)誤, 為主數(shù)據(jù)庫添加一個(gè)新文件,將文件存放在主服務(wù)器存在但鏡像服務(wù)器中不存在的分區(qū)中。

  ◆另一種導(dǎo)致鏡像服務(wù)器redo錯(cuò)誤的方法就是強(qiáng)制鏡像服務(wù)器的數(shù)據(jù)庫文件空間不足。

  ◆要迫使主服務(wù)器的數(shù)據(jù)庫停工,強(qiáng)制主數(shù)據(jù)庫數(shù)據(jù)文件空間不足。

  ◆要導(dǎo)致主數(shù)據(jù)庫或鏡像數(shù)據(jù)庫日志緩沖區(qū)hardening失敗,強(qiáng)制日志文件空間不足。

  為故障轉(zhuǎn)移準(zhǔn)備鏡像服務(wù)器

  數(shù)據(jù)庫鏡像其實(shí)就是數(shù)據(jù)庫到數(shù)據(jù)庫的聯(lián)系。只有數(shù)據(jù)庫中的數(shù)據(jù)會(huì)通過日志記錄從主數(shù)據(jù)庫發(fā)送到鏡像數(shù)據(jù)庫。就像日志傳送和復(fù)制一樣,必須準(zhǔn)備備用服務(wù)器和鏡像數(shù)據(jù)庫,以便出現(xiàn)故障時(shí)可以完全接管主數(shù)據(jù)庫的工作。當(dāng)您準(zhǔn)備鏡像服務(wù)器時(shí),應(yīng)該從以下幾個(gè)層面進(jìn)行考慮。

  在物理服務(wù)器層面,確保備用服務(wù)器和主服務(wù)器擁有相同的或者盡可能接近的物理cpu和內(nèi)存配置,否則備用服務(wù)器在故障轉(zhuǎn)移后將無法勝任工作。此外可能還有一些支持應(yīng)用程序、監(jiān)視器、以及支持程序運(yùn)行的可執(zhí)行文件等等,都需要在鏡像服務(wù)器上進(jìn)行配置。

  在sql server層面,確保備用服務(wù)器和主服務(wù)器擁有相同的sql server配置(例如,awe、最大并行化程度)。但最重要的就是登陸帳戶和賬戶權(quán)限。主服務(wù)器上所有激活的sql server登陸帳戶都必須同時(shí)存在鏡像服務(wù)器上,否則一旦出現(xiàn)故障轉(zhuǎn)移,那么應(yīng)用程序?qū)o法使用這些登陸帳戶連接到新的主服務(wù)器上。可以使用sql server集成服務(wù)的transfer logins任務(wù)將登陸帳戶和密碼從一臺(tái)服務(wù)器拷貝到另一臺(tái)服務(wù)器,但您還必須為這些登陸帳戶設(shè)置數(shù)據(jù)庫權(quán)限。如果將登陸帳戶傳輸?shù)搅硪粋€(gè)不同的域,那么可能出現(xiàn)不匹配色的sid,需要您去匹配它們。

  sql server主服務(wù)器上可能還存在大量的支持對(duì)象需要被轉(zhuǎn)移到備用服務(wù)器上:sql agent作業(yè)和警報(bào)、sql server集成服務(wù)包、支持?jǐn)?shù)據(jù)庫、連接服務(wù)器的定義、備份設(shè)備、維護(hù)計(jì)劃、sql mail或者數(shù)據(jù)庫設(shè)置、可能還有分布式事務(wù)協(xié)調(diào)器(msdtc)設(shè)置,等等。

  當(dāng)sql agent作業(yè)被傳輸?shù)絺溆梅?wù)器后,大部分將被迫設(shè)置為禁用。一旦出現(xiàn)故障轉(zhuǎn)移,需要您啟用這些作業(yè)。

  故障轉(zhuǎn)移后,如果應(yīng)用程序使用sql server驗(yàn)證,還需要將sql server新的主服務(wù)器上的登陸帳戶解析成新的主服務(wù)器上的數(shù)據(jù)庫用戶。完成該任務(wù)最好的工具就是存儲(chǔ)過程sp_change_users_login。

  多數(shù)據(jù)庫的問題

  許多應(yīng)用程序使用一臺(tái)服務(wù)器上的多個(gè)數(shù)據(jù)庫。多個(gè)數(shù)據(jù)庫可以被一個(gè)應(yīng)用程序引用,也可能被多個(gè)應(yīng)用程序引用。但是數(shù)據(jù)庫鏡像每次只能在一個(gè)數(shù)據(jù)庫上工作。當(dāng)您設(shè)計(jì)數(shù)據(jù)庫鏡像時(shí)需要考慮這一點(diǎn)。

  如果您希望高可用模式,那么最適合的就是一個(gè)應(yīng)用程序配合一個(gè)數(shù)據(jù)庫。當(dāng)自動(dòng)的故障轉(zhuǎn)移發(fā)生時(shí)應(yīng)用程序不再需要主服務(wù)器上的任何數(shù)據(jù)庫。考慮如果多個(gè)數(shù)據(jù)庫在一臺(tái)服務(wù)器上并且操作在高可用模式下,那么可能出現(xiàn)什么情況呢?如果一臺(tái)物理服務(wù)器掉電了,或者一個(gè)sql server實(shí)例失敗了,或者網(wǎng)絡(luò)通信失敗了,那么所有數(shù)據(jù)庫將自動(dòng)故障轉(zhuǎn)移到備用服務(wù)器,而他們的鏡像將成為新的主數(shù)據(jù)庫。如果見證服務(wù)器可用,應(yīng)用程序可以連接到新的主數(shù)據(jù)庫。但是如果某個(gè)數(shù)據(jù)庫由于磁盤失敗而產(chǎn)生了分頁,因此只有這個(gè)數(shù)據(jù)庫被故障轉(zhuǎn)移,那么會(huì)發(fā)生什么呢?如果那樣的話,應(yīng)用程序就有可能無法連接到所有正確的數(shù)據(jù)庫。

  因此依賴多數(shù)據(jù)庫的應(yīng)用程序不適合使用數(shù)據(jù)庫鏡像的高可用模式。您可以將safety設(shè)置成off,實(shí)際上就是不使用自動(dòng)故障轉(zhuǎn)移,但您必需使用某種高效的方式保持和其它數(shù)據(jù)庫服務(wù)器的同步。

  數(shù)據(jù)庫鏡像和高可用性技術(shù)

  sql server 2005現(xiàn)在至少支持四種高可用性技術(shù),盡管不同技術(shù)相互之間有些功能重疊,但每種技術(shù)都有各自的優(yōu)缺點(diǎn)。這些技術(shù)是:

  ◆數(shù)據(jù)庫鏡像 – 為了便于討論,我們將考慮高可用操作模式以及full safety和見證服務(wù)器。

  ◆故障轉(zhuǎn)移群集 – 最典型的配置就是2節(jié)點(diǎn)的windows故障轉(zhuǎn)移群集配置一個(gè)sql server實(shí)例。

  ◆日志傳送 – 采用sql server內(nèi)置的日志傳送和一個(gè)獨(dú)立的監(jiān)視服務(wù)器。

  ◆事務(wù)復(fù)制 – 一臺(tái)分發(fā)服務(wù)器和一臺(tái)訂閱服務(wù)器,如果發(fā)行服務(wù)器失敗,訂閱服務(wù)器作為備用服務(wù)器。

  在這一部分我們將比較這四種技術(shù)的基本功能,然后深入探討怎樣對(duì)數(shù)據(jù)庫鏡像進(jìn)行補(bǔ)充或者提供一個(gè)更好的解決方案。

  下表顯示了四種技術(shù)的幾個(gè)高可用性功能。

  表14:比較sql server 2005高可用性技術(shù)

  類別

  可用性功能

  數(shù)據(jù)庫鏡像 (ha模式)

  故障轉(zhuǎn)移群集

  日志傳送

  事務(wù)復(fù)制

  故障轉(zhuǎn)移特性

  備用服務(wù)器類型

  hot

  hot

  warm

  hot

  自動(dòng)角色轉(zhuǎn)換

  是

  是

  需要自己編寫代碼

  需要自己編寫代碼

  故障轉(zhuǎn)移保留已提交的工作

  是

  是

  否

  否

  故障轉(zhuǎn)移類型

  自動(dòng)和手動(dòng)

  自動(dòng)和手動(dòng)

  故障轉(zhuǎn)移過程數(shù)據(jù)庫停工時(shí)間

  少于10秒

  30秒+ 數(shù)據(jù)庫還原

  可變的

  可變的

  物理配置

  冗余的存儲(chǔ)位置

  是

  否(共享磁盤)

  是

  是

  硬件需求

  標(biāo)準(zhǔn)服務(wù)器

  群集驗(yàn)證的服務(wù)器和存儲(chǔ)

  標(biāo)準(zhǔn)服務(wù)器

  標(biāo)準(zhǔn)服務(wù)器

  物理距離限制

  沒有

  100米

  沒有

  沒有

  其它服務(wù)器角色

  見證服務(wù)器

  沒有

  監(jiān)視服務(wù)器

  分發(fā)服務(wù)器

  管理

  復(fù)雜性等級(jí)

  低

  高

  低

  中等

  備用服務(wù)器的可訪問性

  通過數(shù)據(jù)庫快照,性能可能受到影響

  不可訪問

  r/o但是與數(shù)據(jù)庫還原不兼容

  允許只讀工作

  多備用服務(wù)器

  無

  無

  是

  是

  備用服務(wù)器加載延遲

  沒有

  沒有

  有延遲

  沒有

  可用性范圍

  數(shù)據(jù)庫

  服務(wù)器實(shí)例

  數(shù)據(jù)庫

  數(shù)據(jù)庫

  客戶訪問

  客戶重定向

  由ado。net和 sql native client提供支持

  不需要,使用虛擬ip

  需要自己編寫代碼

  需要自己編寫代碼

  上表總結(jié)了所有四種高可用技術(shù)的特性。下一部分將進(jìn)行更詳細(xì)的比較。

  數(shù)據(jù)庫鏡像和群集

  數(shù)據(jù)庫鏡像和故障轉(zhuǎn)移群集最主要的差異就是提供了不同級(jí)別的冗余。數(shù)據(jù)庫鏡像提供的保護(hù)是數(shù)據(jù)庫級(jí)別的,而群集提供的保護(hù)是服務(wù)器實(shí)例級(jí)別的。另一個(gè)主要差別就是在數(shù)據(jù)庫鏡像中,主服務(wù)器和鏡像服務(wù)器是獨(dú)立的 sql server實(shí)例,兩個(gè)實(shí)例有不同的名稱;而群集中的 sql server實(shí)例則使用相同的虛擬服務(wù)器名稱和ip地址,而且無論哪個(gè)節(jié)點(diǎn)主持群集實(shí)例,虛擬服務(wù)器名稱和ip地址始終保持不變。

  如果您需要在服務(wù)器一級(jí)的數(shù)據(jù)庫保護(hù)(例如,您的應(yīng)用程序需要同時(shí)訪問統(tǒng)一服務(wù)器上的多個(gè)數(shù)據(jù)庫),故障轉(zhuǎn)移群集將是更適合的選擇。但是,如果每次只須為一個(gè)數(shù)據(jù)庫提供可用性,那么數(shù)據(jù)庫鏡像具有更多優(yōu)勢(shì)。

  數(shù)據(jù)庫鏡像不像群集那樣需要專門的硬件,也沒有共享存儲(chǔ)介質(zhì)失敗的潛在危險(xiǎn)。數(shù)據(jù)庫鏡像可以在最短時(shí)間內(nèi)讓備用數(shù)據(jù)庫開始提供服務(wù),其速度快于任何其它的高可用技術(shù)。此外,數(shù)據(jù)庫鏡像能夠與ado。net和sql native access client很好的配合在一起,從而實(shí)現(xiàn)客戶端的故障轉(zhuǎn)移。

  不能在群集中使用數(shù)據(jù)庫鏡像,但是可以考慮使用數(shù)據(jù)庫鏡像作為一種手段來創(chuàng)建群集數(shù)據(jù)庫實(shí)例的一個(gè)熱備用份。這樣做需要特別小心,因?yàn)槿杭墓收限D(zhuǎn)移時(shí)間長于數(shù)據(jù)庫鏡像的超時(shí)值,高可用模式下的鏡像會(huì)話將對(duì)群集的故障轉(zhuǎn)移做出反應(yīng),認(rèn)為這是主服務(wù)器失敗了,然后會(huì)將群集節(jié)點(diǎn)設(shè)置為鏡像狀態(tài)。

  數(shù)據(jù)庫鏡像和事務(wù)復(fù)制

  數(shù)據(jù)庫鏡像和事務(wù)復(fù)制都建立在讀取原始服務(wù)器事務(wù)日志的基礎(chǔ)上,但此后采用的技術(shù)就截然不同了。(更多關(guān)于事務(wù)復(fù)制的細(xì)節(jié),請(qǐng)參閱sql server books online中的相關(guān)主題)。事務(wù)復(fù)制多用于配置高可用性,因?yàn)樗梢詫l(fā)行數(shù)據(jù)庫中的用戶事務(wù)在幾秒鐘內(nèi)遞送到訂閱數(shù)據(jù)庫中。數(shù)據(jù)庫鏡像的優(yōu)點(diǎn)是速度對(duì)于甚至快于復(fù)制,但需要遞送所有的數(shù)據(jù)庫事務(wù),而不單單是與用戶表相關(guān)的事務(wù)。

  事務(wù)復(fù)制技術(shù)適合于將數(shù)據(jù)擴(kuò)充到多個(gè)訂閱者。事務(wù)復(fù)制的訂閱數(shù)據(jù)庫通常是只讀的,如果需要近乎實(shí)時(shí)的數(shù)據(jù)訪問,那么事務(wù)復(fù)制是理想的候選者。

  數(shù)據(jù)庫鏡像與事務(wù)復(fù)制兼容,如果需要維持發(fā)行數(shù)據(jù)庫的一個(gè)熱備份,數(shù)據(jù)庫鏡像就是非常有用的一種方式。其它用于保護(hù)復(fù)制發(fā)行商的方式,例如日志傳送無法在發(fā)行商自己的訂閱者之前維持發(fā)行商的備用服務(wù)器。換句話說,事務(wù)復(fù)制將事務(wù)日志遞送給訂閱者的速度要快于事務(wù)日志備份。正是因?yàn)閿?shù)據(jù)庫鏡像速度很快,因此特別適合用于維持發(fā)行數(shù)據(jù)庫的熱備份。

  但是如果發(fā)行服務(wù)器失敗,就必須手動(dòng)使用還原好的備用數(shù)據(jù)庫重新建立發(fā)行商,然后重新連接到分發(fā)服務(wù)器,, 使用日志傳輸維護(hù)發(fā)行商服務(wù)器的備用服務(wù)器所必須做的工作與此相同。

  數(shù)據(jù)庫鏡像和日志傳輸

  數(shù)據(jù)庫鏡像和日志傳輸都依賴sql server數(shù)據(jù)庫提供的恢復(fù)和還原功能。在數(shù)據(jù)庫鏡像中,鏡像數(shù)據(jù)庫始終保持recovering狀態(tài),連續(xù)不斷地還原來自主數(shù)據(jù)庫的事務(wù)日志。而日志傳輸中的備用數(shù)據(jù)庫則周期性地應(yīng)用事務(wù)日志備份中的事務(wù)。因?yàn)閎ulk-logged數(shù)據(jù)被附加到事務(wù)日志備份中,因此日志傳送可以工作在bulk-logged恢復(fù)模型下。數(shù)據(jù)庫鏡像則不同,它直接將日志記錄從主數(shù)據(jù)庫傳送到鏡像數(shù)據(jù)庫中而且不能遞送bulk-logged數(shù)據(jù)。

  很多情況下數(shù)據(jù)庫鏡像可以提供與日志傳送相同的數(shù)據(jù)冗余以及更高的可用性和自動(dòng)故障轉(zhuǎn)移。但是,如果應(yīng)用程序依賴一臺(tái)服務(wù)器上的多個(gè)數(shù)據(jù)庫,那么日志傳送是有效的方式(參閱前一部分介紹的“multi-database considerations”)。

  此外,某些數(shù)據(jù)庫鏡像場(chǎng)景中還可以通過日志傳送作為補(bǔ)充。例如:您可以某處配置一個(gè)高可用數(shù)據(jù)庫鏡像,然后將主數(shù)據(jù)庫日志傳送到遠(yuǎn)程站點(diǎn)以提供災(zāi)難恢復(fù)。圖24顯示了如何進(jìn)行這種配置。

  圖24:將主數(shù)據(jù)庫日志傳送到遠(yuǎn)程服務(wù)器

  這種方式的優(yōu)點(diǎn)就是:一旦整個(gè)站點(diǎn)失敗了,第二個(gè)站點(diǎn)上的數(shù)據(jù)還繼續(xù)可用。但是,如果數(shù)據(jù)庫鏡像失敗了,從server b到遠(yuǎn)程備用服務(wù)器的日志傳送通常必須重新開始。

  其它使用日志傳送補(bǔ)充數(shù)據(jù)庫鏡像的場(chǎng)景就是作為主服務(wù)器的本地備用,主服務(wù)器的數(shù)據(jù)庫鏡像會(huì)話用于災(zāi)難恢復(fù)。此時(shí),數(shù)據(jù)庫鏡像會(huì)話運(yùn)行在高性能操作模式下,遠(yuǎn)程站點(diǎn)的鏡像服務(wù)器作為遠(yuǎn)程備用服務(wù)器。

  圖25:通過主數(shù)據(jù)庫日志傳送的方式來保留所有的事務(wù)

  在高性能模式中存在的數(shù)據(jù)丟失,如果主服務(wù)器失敗并且使用強(qiáng)制恢復(fù)服務(wù)的方式恢復(fù)了鏡像服務(wù)器。如果您正在對(duì)舊的主服務(wù)器進(jìn)行日志傳送,并且如果舊的主服務(wù)器事務(wù)日志文件沒有損壞,那么可以對(duì)主數(shù)據(jù)庫進(jìn)行“結(jié)尾日志”備份來獲得事務(wù)日志中最后一組記錄。如果備用日志傳輸數(shù)據(jù)庫已經(jīng)應(yīng)用了所有其它的事務(wù)日志備份,您就可以將結(jié)尾日志備份應(yīng)用到備用服務(wù)器,這樣不會(huì)丟失舊的主服務(wù)器上的任何數(shù)據(jù)。然后可以對(duì)日志傳送備用服務(wù)器中的數(shù)據(jù)和遠(yuǎn)程數(shù)據(jù)庫做個(gè)比較,在需要時(shí)將丟失的數(shù)據(jù)拷貝到遠(yuǎn)程服務(wù)器。

  當(dāng)您對(duì)比日志傳輸和數(shù)據(jù)庫鏡像功能時(shí),需要明確的一點(diǎn)就是:對(duì)主數(shù)據(jù)庫進(jìn)行數(shù)據(jù)庫和日志備份很重要。將這些日志備份應(yīng)用到的日志傳送服務(wù)器可以對(duì)數(shù)據(jù)庫鏡像配置起到補(bǔ)充作用。

  結(jié)論

  數(shù)據(jù)庫鏡像是sql server 2005中的新技術(shù),可以實(shí)現(xiàn)高可用性和高性能的可數(shù)據(jù)庫冗余解決方案。在數(shù)據(jù)庫鏡像中,當(dāng)主數(shù)據(jù)庫的事務(wù)日志緩沖區(qū)被寫入磁盤時(shí)(硬化的),事務(wù)日志記錄就從主數(shù)據(jù)庫直接發(fā)送到鏡像數(shù)據(jù)庫。這種技術(shù)可以使鏡像數(shù)據(jù)庫幾乎和主數(shù)據(jù)庫的數(shù)據(jù)保持同步,同時(shí)不會(huì)丟失提交的數(shù)據(jù)。在導(dǎo)可用性操作模式中,如果主服務(wù)器失敗了,那么鏡像服務(wù)器將自動(dòng)成為新的主服務(wù)器并還原數(shù)據(jù)庫。使用新的ado.net或者sql native access client驅(qū)動(dòng)程序,應(yīng)用程序還可以從自己的服務(wù)器上進(jìn)行自動(dòng)的故障轉(zhuǎn)移。數(shù)據(jù)庫鏡像成為sql server 2005提供的高可用技術(shù)家族中的新成員。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 屏东市| 林州市| 和田县| 忻州市| 金湖县| 仙居县| 莱芜市| 资源县| 万源市| 高要市| 武宣县| 新巴尔虎右旗| 若羌县| 涪陵区| 沁源县| 高清| 即墨市| 玛多县| 庆阳市| 高碑店市| 北辰区| 图片| 文山县| 建水县| 汝南县| 六安市| 嘉荫县| 木里| 拉孜县| 商河县| 仁寿县| 调兵山市| 和田县| 射阳县| 龙门县| 靖西县| 会理县| 镇远县| 五河县| 高阳县| 两当县|