sqlserver2005數據庫複製及數據庫鏡像

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


同步複製教程

一、準備工作:

1.建立一個 WINDOWS 用戶,設置爲管理員權限,並設置密碼,作爲發佈快照文件的有效訪問用戶。

2.在SQL SERVER下實現發佈服務器和訂閱服務器的通信正常(即可以互訪)。打開1433端口,在防火牆中設特例


3.在發佈服務器上建立一個共享目錄,作爲發佈快照文件的存放目錄。例如:在D盤根目錄下建文件夾名爲SqlCopy

4.設置SQL 代理(發佈服務器和訂閱服務器均設置)

打開服務(控制面板---管理工具---服務)

---右擊SQLSERVER AGENT---屬性---登錄---選擇“此帳戶“

---輸入或選擇第一步中創建的WINDOWS 用戶

---“密碼“中輸入該用戶密碼



5.設置SQL SERVER 身份驗證,解決連接時的權限問題(發佈、訂閱服務器均設置)

步驟爲:對象資源管理器----右擊SQL實例-----屬性----安全性----服務器身份驗證------選“SQL Server和WINDOWS“,然後點確定

6.開啓SQL Server 2005的網絡協議TCP/IP和管道命名協議並重啓網絡服務。

 

7.在SQL Server中創建步驟1中對應的系統用戶登陸名,作爲發佈數據庫的擁有者(設置爲dbo_owner和public)。

 

8.以系統超級用戶sa登陸SQL Server建立數據庫和表。

9.發佈服務器和訂閱服務器互相註冊

步驟如下:視圖----單擊以註冊服務器----右鍵數據庫引擎----新建服務器註冊-----填寫要註冊的遠程服務器名稱------身份驗證選“SQL Server驗證“-----用戶名(sa) 密碼------創建組(也可不建)-----完成。



10.對於只能用IP,不能用計算機名的,爲其註冊服務器別名

二、開始:

發佈服務器配置(在發佈服務器上配置發佈和訂閱)

1. 選擇 複製 節點

2. 右鍵本地發佈 ----下一步---------系統彈出對話框看提示----直到“指定快照文件夾“

----在“快照文件夾“中輸入準備工作中創建的目錄(指向步驟3所建的共享文件夾)------選擇發佈數據庫-------選擇發佈類型-------選擇訂閱服務器類型-------選擇要發佈的對象------設置快照代理-------填寫發佈名稱。



3. 右鍵本地訂閱--------選擇發佈服務器-------選擇訂閱方式(如果是在服務器方訂閱的話選擇推送訂閱反之選擇請求訂閱)-------填加訂閱服務器--------選擇代理計劃(一般選擇連續運行)---------其餘選擇默認項。



至此, SQL SERVER 2005 同步複製就完成了。使用複製技術,用戶可以將一份客戶端的數據發佈到多臺服務器上,從而使不同的服務器用戶都可以在權限的許可的範圍內共享這份數據。
複製技術可以確保分佈在不同地點的數據自動同步更新,從而保證數據的一致性,就無需編程實現客戶端和服務器端數據同步了!大大提高了工作效率!

在安裝完Microsoft SQL Server 2005 後,發現從Microsoft SQL Server Management Studio 連接到服務器時,如果在服務器名稱處填寫的不是機器名,而是IP地址時,連接總是提示失敗,提示信息爲:

無法連接到10.114.*.*
其他信息:
已成功與服務器建立連接,但是在登錄過程中發生錯誤。(provider:命名管道提供程序,error:0-管道的另一端上無任何進程。)(Microsoft SQL Server,錯誤:233)

解決方法:打開“開始—所有程序—Microsoft SQL Server 2005 —配置工具—SQL Server 配置管理器”,在彈出的窗體中,找到“SQL Server 2005 網絡配置”,把“MSSQLSERVER的協議”下的“Named Pipes”和“TCP/IP”啓用,然後重新啓動SQL Server 即可。

 

 

SQL SERVER 2005高可用性之鏡像

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

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



數據庫準備結束,端點創建完成,用戶便可以啓用數據庫鏡像。鏡像啓動後,每個夥伴都將開始維護所在數據庫中有關其數據庫、另一個夥伴和見證服務器的狀態信息。這些狀態信息允許服務器實例維護稱爲“數據庫鏡像會話”的當前關係。在數據庫鏡像會話過程中,服務器實例將通過彼此定期交換 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秒內客戶端就重新連到數據庫服務器。限於篇幅和筆者的水平,對數據庫鏡像作了簡單的介紹,還有很多東西沒有提及到比如說客戶端怎樣連到服務器等等,希望本文成爲讀者學習鏡像功能的開端。

本文在寫作過程中參考了微軟的SQL SERVER 2005在線幫助。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章