1. 程式人生 > >SQL Server 2005 映象(自己實踐總結)

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截的,我想你應該知道在哪裡改了


祝你配置成功