SQL Server 2005 鏡像(自己實踐總結)

SQL Server 2005相對於SQL Server 2000來說,無論是性能還是功能都有一個相當大的提高,甚至可以用“革命”來形容這一次升級。SQL Server 2005使 SQL Server 躋身於企業級數據庫行列。在數據高可用性方面,SQL Server 2005爲用戶提供了數據鏡像、複製、故障轉移羣集、日誌傳送功能。本文向讀者簡單介結SQL Server 2005鏡像功能。

  一、鏡像簡介

  數據庫鏡像是一個高可用性軟件解決方案,爲客戶端提供小於10秒故障轉移。每個數據庫鏡像配置均包含一個主體服務器(包含主體數據庫)、一個鏡像服務器(包含鏡像數據庫)和一個見證服務器,其中見證服務器是可選的。主體服務器和鏡像服務器要求是獨立的服務器實例。主體服務器和鏡像服務器的角色是相對的,可以自動或者手動地將主體服務器設置爲鏡像服務器,鏡像服務器設置爲主體服務器。與主體服務器和鏡像服務器不同的是,見證服務器並不能用於數據庫。見證服務器監視主體服務器和鏡像服務器,確保在給定的時間內這兩個故障轉移服務器中有且只有一個作爲主體服務器,從而支持自動故障轉移。如果存在見證服務器,同步會話將以“高可用性模式”運行,如果主體服務器出現故障,可以實現故障自動轉移。如果見證服務器不存在,同步會話將以“高級別保護模式”運行,出現故障需要手動故障轉移,並且有可能丟失數據。


圖1:兩臺服務器鏡像


圖2:兩臺服務器鏡像,一臺見證服務器

數據庫準備結束,端點創建完成,用戶便可以啓用數據庫鏡像。鏡像啓動後,每個夥伴都將開始維護所在數據庫中有關其數據庫,以及另一個夥伴和見證服務器的狀態信息。這些狀態信息允許服務器實例維護稱爲“數據庫鏡像會話”的當前關係。在數據庫鏡像會話過程中,服務器實例將通過彼此定期交換 PING 消息來互相監視。

  鏡像會話啓動後,鏡像服務器將識別鏡像數據庫上最新完成的事務的日誌序列號 (LSN),並要求主體服務器提供所有後續事務的事務日誌,主體服務器向像鏡像服務器發生一份當前活動的事務日誌,鏡像服務器會立即將傳入日誌鏡像到磁盤。主體服務器繼續讓客戶端連接使用主體數據庫,每次客戶端更新主體數據庫時,主體服務器都會在寫入到日誌時,並將得到的事務日誌發送給鏡像服務器,鏡像服務器會將其鏡像到磁盤。同時,鏡像服務器將從最早的事務日誌開始,將事務應用到鏡像數據庫中,從而實現主體數據庫和鏡像數據庫同步。

  二、配置實例

  瞭解數據庫鏡像的基本知識之後,看一看怎樣去配置鏡像。(使用鏡像功能請確保安裝了SQL Server 2005 SP1)。

  筆者爲做鏡像實驗,在同一個服務器上同時裝三個實例: SERVER01、SERVER02、SERVER03。其中,SERVER01將作爲主體服務器、SERVER02作爲鏡像服務器、 SERVER03作爲見證服務器。

  在完成本實驗的第一步需要將主體服務器的DBMirror數據庫,完全備份出來,然後在SERVER02上還原,在還原的時候注意使用NORECOVERY,使用鏡像數據處於還原狀態。在備份之前請將DBMirror數據庫的日誌模式設置爲完整。

  完成了上面的準備之後就可以設置鏡像。

  第一步:創建端點。

  在SERVER01上運行下面的SQL:

 

CREATE ENDPOINT DbMirroring
STATE=STARTED
AS TCP(LISTENER_PORT=5011)
FOR DATABASE_MIRRORING(ROLE=PARTNER,ENCRYPTION=SUPPORTED)
go

在SERVER02上運行下面的SQL:
CREATE ENDPOINT DbMirroring
STATE=STARTED
AS TCP(LISTENER_PORT=5022)
FOR DATABASE_MIRRORING(ROLE=PARTNER,ENCRYPTION=SUPPORTED)
go

在SERVER03上執行下面的SQL,創建見證服務器。
CREATE ENDPOINT DbMirroring
STATE=STARTED
AS TCP(LISTENER_PORT=5033)
FOR DATABASE_MIRRORING(ROLE=WITNESS,ENCRYPTION=SUPPORTED)
go

 

  第二步:啓動鏡像

  在前面的規劃中SERVER01將作爲主體服務器、SERVER02作爲鏡像服務器,首先在主體服務器上執行下面的SQL:

 

ALTER DATABASE DBMirror
SET PARTNER='TCP://jeffery:5022'    --(注:筆記的機器名稱是jeffery)
go

 

  指定SERVER01的通訊夥伴是SERVER02(因爲前面定義端點的時候SERVER02的端口號爲5022)。

在SERVER02的上執行下面的SQL,指定通訊夥伴爲SERVER01。

 

ALTER DATABASE DBMirror
SET PARTNER='TCP://jeffery:5011'
go

 

  回到主體服務器,指定見證服務器。在SERVER01上執行下面的SQL:

 

ALTER DATABASE DBMirror
SET WITNESS='TCP://jeffery:5033'
go

 

  完成以上步驟之後,鏡像配置完成。如圖3所示。


圖3
三、管理鏡像

  1、 相關係統視圖

  sys.database_mirroring:此視圖顯示服務器實例中每個鏡像數據庫的數據庫鏡像元數據。實例 SQL Server 中的每個數據庫在表中佔一行。如果數據庫未聯機,或未啓用數據庫鏡像,則除 database_id 以外的所有列的值都將爲 NULL。

  sys.database_mirroring_endpoints:目錄視圖顯示有關服務器實例的數據庫鏡像端點的信息。

  sys.dm_db_mirroring_connections:爲每個數據庫鏡像網絡連接返回一行。

  2、 手動主體、鏡像服務器之間的切換

  在主體服務器中執行下面的代碼就可以將鏡像服務器設爲主體服務器,主體服務器設置爲鏡像服務器。

 

USE MASTER
Go

ALTER DATABASE DBMirror SET PARTNER FAILOVER
Go

 

  數據庫鏡像是一個很好的高可用性解決方案,筆者參加微軟的技術論壇時曾看到過微軟的技術人員演示鏡像的故障轉移,如主體服務器出現故障,在10秒內客戶端就重新連到數據庫服務器。限於篇幅和筆者的水平,對數據庫鏡像作了簡單的介紹,還有很多東西沒有提及到比如說客戶端怎樣連到服務器等等,希望本文成爲讀者學習鏡像功能的開端。

過程簡單把,問題也一大堆把

1,在端點配置中禁用了數據庫鏡像傳輸功能。默認情況下,數據庫鏡像是禁用的。但是,只需使用跟蹤標誌 1400 作爲啓動參數,您就可以出於評估目的而啓用數據庫鏡像。不應該在生產環境中使用數據庫鏡像。Microsoft 產品支持服務不支持使用數據庫鏡像的數據庫或應用程序。SQL Server 2005 中包含的數據庫鏡像文檔僅用於評估目的。此外,SQL Server 2005 支持和升級的文檔策略不適用於數據庫鏡像文檔。

解決辦法:

1)啓動鏡象
       DBCC TRACEON (1400, -1)
2)裝SQL Server 2005 SP1

2,完全限定名

    要在域中嗎?回答是不需要,真是個NND的功能

   右擊-〉我的電腦-〉屬性-〉計算機名-〉更改-〉其他 -〉在此計算機的主DNS後綴 裏面 隨便輸入一個 www什麼的,這樣的完全限定名就是 計算機名.www

3,本機多實例和多臺服務器的區別 (2010-08-10 補充 發現有人引用我的這篇,還沒有配置成功)

     1)本機多實例:一般我們會先在自己的機器上裝3個實例分爲主,見證,鏡像。按照上面的配置絕對沒有問題,如果有問題,我估計你要多試幾次。

      2)多臺服務器:實際的部署中我們可能是多臺服務器,假設3臺分爲主、見證、鏡像。這裏有個特別要注意的,如果你一直配置不成功就必須要注意,其實是3臺服務器的SQL SERVER服務器通信時權限不夠,那麼需要修改服務運行的賬戶,並卻確保3臺服務器上有一個相同用戶名和密碼的賬戶,然後3臺服務器的SQL SERVER服務都是用這個賬戶,我用的是Administrator(3臺服務器的密碼都一樣),下圖是我用SQL Server 2008截的,我想你應該知道在哪裏改了


祝你配置成功

發佈了8 篇原創文章 · 獲贊 5 · 訪問量 15萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章