類比鏡像伺服器磁碟問題的兩個測試【轉】

來源:互聯網
上載者:User

標籤:

目前資料庫鏡像提供兩種配置的方式:高安全模式和高效能模式。

我們知道在高安全模式下,在主伺服器上提交的事務必須同時在鏡像伺服器上提交成功,否則該事務無法在主要資料庫上提交。

  

在上面的圖中,一個事務在主要資料庫上提交的步驟包含:

  1. 用戶端程式將事務發送給主要資料庫伺服器SQLServer
  2. 主要資料庫伺服器 SQL Server為這個事務寫記錄檔

2.1         主要資料庫伺服器將這個事務的日誌內容傳遞給鏡像伺服器的SQL Server

  1. 鏡像資料庫伺服器SQL Server將收到的日誌內容寫入到記錄檔。
  2. 鏡像伺服器回複主伺服器寫日誌的動作完成。
  3. 主伺服器SQL Server回複用戶端程式該事務提交成功。

>2.主要資料庫伺服器SQL Server在檢查點時將該事務修改的資料頁從記憶體中寫入資料檔案。

>3.鏡像資料庫伺服器SQL Server將日誌對於的資料頁在檔案上做變更。

 

從這樣的順序中,我們提出一個問題,如果鏡像伺服器的SQL Server在那個時候不能完成步驟3,是否這時主要資料庫伺服器對於的資料庫就不能正常的提交事務了呢?本文介紹的兩個測試就是類比記錄檔和資料庫不可用時候的測試結果

測試一:資料庫有多個資料檔案和記錄檔,分布在不同的磁碟上,在鏡像資料庫聯機的情況下刪除一個磁碟,即一個資料檔案和記錄檔不可能的測試:

 

  1. 1.    建立資料庫test,添加四個檔案。注意為第一個記錄檔設定較小的大小並禁止自動成長:

 

test               C:\Program Files\Microsoft SQL Server\MSSQL.2\MSSQL\DATA\test.mdf        

test_log           C:\Program Files\Microsoft SQL Server\MSSQL.2\MSSQL\DATA\test_log.ldf    

test1              E:\test1.ndf                                                             

testlog1           E:\testlog1.ldf                                                           

 

  1. 2.    設定資料庫鏡像高安全模式,主伺服器為SQL1,鏡像資料庫為SQL2.

 

  1. 3.    建立兩張測試表 testtest1, 插入超過 1,000,000 行資料到test表中.  由於第一個記錄檔較小且不能自動成長,因此SQL Server開始使用第二個記錄檔testlog1.檢查資料庫鏡像的狀態:

 

結果:主要資料庫顯示已principal/sychronized

 

  1. 4.    執行下面的指令碼,開始事務,這個事務會執行超過10分鐘:

 

begin tran

insert into test  select * from test

insert into test  select * from test

commit

 

  1. 當事務開始執行1分鐘以後,暫停資料庫鏡像 1分鐘,然後在手工恢複資料庫鏡像的同步:

 

結果: 主要資料庫狀態顯示principal/synchronizing.

訪問test1表,可以返回資料。

 

6. 手工將E盤從鏡像資料庫服務上拔出:.

 

結果: 主要資料庫狀態立即變更為 (principal/suspend)。

測試訪問主要資料庫並查詢test1表

鏡像資料庫狀態變更為: (mirrored, suspend/restoring)

 

7. 檢查事務的執行:

幾分鐘以後,這個事務顯示在主要資料庫上提交成功。

.

 

8. 檢查主要資料庫和鏡像資料庫的SQL Server錯誤記錄檔:

 

 

主要資料庫:

Error: 1453, Severity: 16, State: 1.

‘TCP://LDUA2481460-2.DOM248146.COM:5023‘, the remote mirroring partner for database ‘test‘, encountered error 5159, status 1, severity 24. Database mirroring has been suspended.  Resolve the error on the remote server and resume mirroring, or remove mirroring and re-establish the mirror server instance.

 

鏡像資料庫:

‘TCP://LDUA2481460-2.DOM248146.COM:5023‘, the remote mirroring partner for database ‘test‘, encountered error 5159, status 1, severity 24. Database mirroring has been suspended.  Resolve the error on the remote server and resume mirroring, or remove mirroring and re-establish the mirror server instance.

Operating system error 2(The system cannot find the file specified.) on file "E:\test_3.ldf" during RestoreFileHdr.

 

 

Test 2: 在執行並同步一個大事務的時候將鏡像資料庫刪除

 1.    建立資料庫test,包含一個資料檔案一個記錄檔。

test1            E:\test1.mdf    

test1_log        E:\test1_log.ldf

 

2. 設定資料庫鏡像高安全模式,主伺服器為SQL1,鏡像資料庫為SQL2.

 

3. 建立兩張測試表 testtest1, 插入超過 1,000,000 行資料到test表中.  由於第一個記錄檔較小且不能自動成長,因此SQL Server開始使用第二個記錄檔testlog1.檢查資料庫鏡像的狀態:

 

結果:主要資料庫顯示已principal/sychronized

 

4. 執行下面的指令碼,開始事務,這個事務會執行超過10分鐘:

 

begin tran

insert into test select * from test

insert into test select * from test

commit

 

5. 當事務開始執行1分鐘以後,暫停資料庫鏡像 1分鐘,然後在手工恢複資料庫鏡像的同步:

 

結果: 主要資料庫狀態顯示principal/synchronizing.

訪問test1表,可以返回資料。

 

 

6. 手工將E盤從鏡像資料庫服務上拔出:

 

結果: 主要資料庫狀態立即變更為 (principal/ disconnected)。

測試訪問主要資料庫並查詢test1表

鏡像資料庫不存在。

 

 

7. 檢查事務的執行:

幾分鐘以後,這個事務顯示在主要資料庫上提交成功。

 

8. 檢查主要資料庫和鏡像資料庫的SQL Server錯誤記錄檔:

主要資料庫:

1453, Severity: 16, State: 1

‘TCP://LDUA2481460-2.DOM248146.COM:5023‘, the remote mirroring partner for database ‘test1‘, encountered error 5149, status 1, severity 16. Database mirroring has been suspended.  Resolve the error on the remote server and resume mirroring, or remove mirroring and re-establish the mirror server instance..

 

鏡像資料庫:

Error: 17053<c/> Severity: 16<c/> State: 1

RestoreFileHdr: Operating system error 2(The system cannot find the file specified.) encountered.

Error: 5159<c/> Severity: 24<c/> State: 1

Operating system error 2(The system cannot find the file specified.) on file "E:\test1_1.ldf" during RestoreFileHdr.

 

Error: 823<c/> Severity: 24<c/> State: 3.

The operating system returned error 21(The device is not ready.) to SQL Server during a write at offset 0x00000000012000 in file ‘E:\test1.mdf‘. Additional messages in the SQL Server error log and system event log may provide more detail. This is a severe system-level error condition that threatens database integrity and must be corrected immediately. Complete a full database consistency check (DBCC CHECKDB). This error can be caused by many factors; for more information<c/> see SQL Server Books Online.

 

Error: 1454<c/> Severity: 16<c/> State: 1.

While acting as a mirroring partner for database ‘test1‘<c/> server instance ‘LDUA2481460-1\MSSQLSERVER1‘ encountered error 823<c/> status 3<c/> severity 24. Database mirroring will be suspended.  Try to resolve the error and resume mirroring.

 

測試結果:

主要資料庫在這兩種情況下依然可以訪問並且成功提交事務

 

轉自:http://blogs.msdn.com/b/apgcdsd/archive/2012/03/09/10280123.aspx

類比鏡像伺服器磁碟問題的兩個測試【轉】

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.