SQL SERVER 2005相對于SQL SERVER2000來說,無論是性能還是功能都有一個相當(dāng)大的提高,甚至可以用“革命”來形容這一次升級。SQL SERVER 2005使 SQL SERVER 躋身于企業(yè)級數(shù)據(jù)庫行列。在數(shù)據(jù)高可用性方面,SQL SERVER2005為用戶提供了數(shù)據(jù)鏡像、復(fù)制、故障轉(zhuǎn)移群集、日志傳送功能。
同步復(fù)制教程
一、準(zhǔn)備工作:
1.建立一個 WINDOWS 用戶,設(shè)置為管理員權(quán)限,并設(shè)置密碼,作為發(fā)布快照文件的有效訪問用戶。
2.在SQL SERVER下實現(xiàn)發(fā)布服務(wù)器和訂閱服務(wù)器的通信正常(即可以互訪)。打開1433端口,在防火墻中設(shè)特例
3.在發(fā)布服務(wù)器上建立一個共享目錄,作為發(fā)布快照文件的存放目錄。例如:在D盤根目錄下建文件夾名為SqlCopy
4.設(shè)置SQL 代理(發(fā)布服務(wù)器和訂閱服務(wù)器均設(shè)置)
打開服務(wù)(控制面板---管理工具---服務(wù))
---右擊SQLSERVER AGENT---屬性---登錄---選擇“此帳戶“
---輸入或選擇第一步中創(chuàng)建的WINDOWS 用戶
---“密碼“中輸入該用戶密碼
5.設(shè)置SQL SERVER 身份驗證,解決連接時的權(quán)限問題(發(fā)布、訂閱服務(wù)器均設(shè)置)
步驟為:對象資源管理器----右擊SQL實例-----屬性----安全性----服務(wù)器身份驗證------選“SQL Server和WINDOWS“,然后點確定
6.開啟SQL Server 2005的網(wǎng)絡(luò)協(xié)議TCP/IP和管道命名協(xié)議并重啟網(wǎng)絡(luò)服務(wù)。
7.在SQL Server中創(chuàng)建步驟1中對應(yīng)的系統(tǒng)用戶登陸名,作為發(fā)布數(shù)據(jù)庫的擁有者(設(shè)置為dbo_owner和public)。
8.以系統(tǒng)超級用戶sa登陸SQL Server建立數(shù)據(jù)庫和表。
9.發(fā)布服務(wù)器和訂閱服務(wù)器互相注冊
步驟如下:視圖----單擊以注冊服務(wù)器----右鍵數(shù)據(jù)庫引擎----新建服務(wù)器注冊-----填寫要注冊的遠(yuǎn)程服務(wù)器名稱------身份驗證選“SQL Server驗證“-----用戶名(sa) 密碼------創(chuàng)建組(也可不建)-----完成。
10.對于只能用IP,不能用計算機(jī)名的,為其注冊服務(wù)器別名
二、開始:
發(fā)布服務(wù)器配置(在發(fā)布服務(wù)器上配置發(fā)布和訂閱)
1. 選擇 復(fù)制 節(jié)點
2. 右鍵本地發(fā)布 ----下一步---------系統(tǒng)彈出對話框看提示----直到“指定快照文件夾“
----在“快照文件夾“中輸入準(zhǔn)備工作中創(chuàng)建的目錄(指向步驟3所建的共享文件夾)------選擇發(fā)布數(shù)據(jù)庫-------選擇發(fā)布類型-------選擇訂閱服務(wù)器類型-------選擇要發(fā)布的對象------設(shè)置快照代理-------填寫發(fā)布名稱。
3. 右鍵本地訂閱--------選擇發(fā)布服務(wù)器-------選擇訂閱方式(如果是在服務(wù)器方訂閱的話選擇推送訂閱反之選擇請求訂閱)-------填加訂閱服務(wù)器--------選擇代理計劃(一般選擇連續(xù)運行)---------其余選擇默認(rèn)項。
至此, SQL SERVER 2005 同步復(fù)制就完成了。使用復(fù)制技術(shù),用戶可以將一份客戶端的數(shù)據(jù)發(fā)布到多臺服務(wù)器上,從而使不同的服務(wù)器用戶都可以在權(quán)限的許可的范圍內(nèi)共享這份數(shù)據(jù)。
復(fù)制技術(shù)可以確保分布在不同地點的數(shù)據(jù)自動同步更新,從而保證數(shù)據(jù)的一致性,就無需編程實現(xiàn)客戶端和服務(wù)器端數(shù)據(jù)同步了!大大提高了工作效率!
在安裝完Microsoft SQL Server 2005 后,發(fā)現(xiàn)從Microsoft SQL Server Management Studio 連接到服務(wù)器時,如果在服務(wù)器名稱處填寫的不是機(jī)器名,而是IP地址時,連接總是提示失敗,提示信息為:
無法連接到10.114.*.*
其他信息:
已成功與服務(wù)器建立連接,但是在登錄過程中發(fā)生錯誤。(provider:命名管道提供程序,error:0-管道的另一端上無任何進(jìn)程。)(Microsoft SQL Server,錯誤:233)
解決方法:打開“開始—所有程序—Microsoft SQL Server 2005 —配置工具—SQL Server 配置管理器”,在彈出的窗體中,找到“SQL Server 2005 網(wǎng)絡(luò)配置”,把“MSSQLSERVER的協(xié)議”下的“Named Pipes”和“TCP/IP”啟用,然后重新啟動SQL Server 即可。
SQL SERVER 2005高可用性之鏡像
SQL SERVER 2005相對于SQL SERVER2000來說,無論是性能還是功能都有一個相當(dāng)大的提高,甚至可以用“革命”來形容這一次升級。SQL SERVER 2005使 SQL SERVER 躋身于企業(yè)級數(shù)據(jù)庫行列。在數(shù)據(jù)高可用性方面,SQL SERVER2005為用戶提供了數(shù)據(jù)鏡像、復(fù)制、故障轉(zhuǎn)移群集、日志傳送功能。本文向讀者簡單介結(jié)SQL SERVER2005鏡像功能。
一、鏡像簡介
數(shù)據(jù)庫鏡像是一個高可用性軟件解決方案,為客戶端提供小于10秒故障轉(zhuǎn)移。每個數(shù)據(jù)庫鏡像配置均包含一個主體服務(wù)器(包含主體數(shù)據(jù)庫)、一個鏡像服務(wù)器(包含鏡像數(shù)據(jù)庫)和一個見證服務(wù)器,其中見證服務(wù)器是可選的。主體服務(wù)器和鏡像服務(wù)器要求是獨立的服務(wù)器實例。主體服務(wù)器和鏡像服務(wù)器角色是相對的,可以自動或者手動的將主體服務(wù)器設(shè)為鏡像服務(wù)器,鏡像服務(wù)器設(shè)為主體服務(wù)器。與主體服務(wù)器和鏡像服務(wù)器不同的是,見證服務(wù)器并不能用于數(shù)據(jù)庫。見證服務(wù)器監(jiān)視主體服務(wù)器和鏡像服務(wù)器,確保在給定的時間這兩個故障轉(zhuǎn)移服務(wù)器中有且只有一個作為主體服務(wù)器,從而支持自動故障轉(zhuǎn)移。如果存在見證服務(wù)器,同步會話將以“高可用性模式”運行,如果主體服務(wù)器出現(xiàn)故障,可以實現(xiàn)故障自動轉(zhuǎn)移。如果見證服務(wù)器不存在,同步會話將以“高級別保護(hù)模式”運行,出現(xiàn)故障需要手動故障轉(zhuǎn)移,并且有可能丟失數(shù)據(jù)。
數(shù)據(jù)庫準(zhǔn)備結(jié)束,端點創(chuàng)建完成,用戶便可以啟用數(shù)據(jù)庫鏡像。鏡像啟動后,每個伙伴都將開始維護(hù)所在數(shù)據(jù)庫中有關(guān)其數(shù)據(jù)庫、另一個伙伴和見證服務(wù)器的狀態(tài)信息。這些狀態(tài)信息允許服務(wù)器實例維護(hù)稱為“數(shù)據(jù)庫鏡像會話”的當(dāng)前關(guān)系。在數(shù)據(jù)庫鏡像會話過程中,服務(wù)器實例將通過彼此定期交換 PING 消息來互相監(jiān)視。
鏡像會話啟動后,鏡像服務(wù)器將識別鏡像數(shù)據(jù)庫上最新完成的事務(wù)的日志序列號 (LSN),并要求主體服務(wù)器提供所有后續(xù)事務(wù)的事務(wù)日志,主體服務(wù)器向像鏡像服務(wù)器發(fā)生一份當(dāng)前活動的事務(wù)日志,鏡像服務(wù)器會立即將傳入日志鏡像到磁盤。主體服務(wù)器繼續(xù)讓客戶端連接使用主體數(shù)據(jù)庫,每次客戶端更新主體數(shù)據(jù)庫時,主體服務(wù)器都會在寫入到日志時,并將得到的事務(wù)日志發(fā)送給鏡像服務(wù)器,鏡像服務(wù)器會將其鏡像到磁盤。同時,鏡像服務(wù)器將從最早的事務(wù)日志開始,將事務(wù)應(yīng)用到鏡像數(shù)據(jù)庫中,從而實現(xiàn)主體數(shù)據(jù)庫和鏡像數(shù)據(jù)庫同步。
二、配置實例
了解數(shù)據(jù)庫鏡像的基本知識之后,看一看怎樣去配置鏡像。(使用鏡像功能請確保安裝了SQL SERVER 2005 SP1)
筆者為做鏡像實驗,在同一個服務(wù)器上同時裝三個實例: SERVER01、SERVER02、SERVER03,SERVER01將作為主體服務(wù)器。、SERVER02作為鏡像服務(wù)器、 SERVER03作為見證服務(wù)器。
在完成本實驗的第一步需要將主體服務(wù)器的DBMirror數(shù)據(jù)庫,完全備份出來,然后在SERVER02上還原,在還原的時候注意使用NORECOVERY,使用鏡像數(shù)據(jù)處于還原狀態(tài)。在備份之前請將DBMirror數(shù)據(jù)庫的日志模式設(shè)置為完整。
完成了上面的準(zhǔn)備之后就可以設(shè)置鏡像。
第一步:創(chuàng)建端點。
在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上執(zhí)行下面的SQL,創(chuàng)建見證服務(wù)器。
CREATE ENDPOINT DbMirroring
STATE=STARTED
AS TCP(LISTENER_PORT=5033)
FOR DATABASE_MIRRORING(ROLE=WITNESS,ENCRYPTION=SUPPORTED)
go
第二步:啟動鏡像
在前面的規(guī)劃中SERVER01將作為主體服務(wù)器。、SERVER02作為鏡像服務(wù)器,首先在主體服務(wù)器上執(zhí)行下面的SQL:
ALTER DATABASE DBMirror
SET PARTNER='TCP://jeffery:5022' --(注:筆記的機(jī)器名稱是jeffery)
go
指定SERVER01的通訊伙伴是SERVER02(因為前面定義端點的時候SERVER02的端口號為5022)
在SERVER02的上執(zhí)行下面的SQL,指定通訊伙伴為SERVER01。
ALTER DATABASE DBMirror
SET PARTNER='TCP://jeffery:5011'
go
回到主體服務(wù)器,指定見證服務(wù)器。在SERVER01上執(zhí)行下面的SQL:
ALTER DATABASE DBMirror
SET WITNESS='TCP://jeffery:5033'
go
完成以上步驟之后,鏡像配置完成。如圖3所示。
(圖3)
三、管理鏡像
1、相關(guān)系統(tǒng)視圖
sys.database_mirroring 此視圖顯示服務(wù)器實例中每個鏡像數(shù)據(jù)庫的數(shù)據(jù)庫鏡像元數(shù)據(jù)。實例 SQL Server 中的每個數(shù)據(jù)庫在表中占一行。如果數(shù)據(jù)庫未聯(lián)機(jī),或未啟用數(shù)據(jù)庫鏡像,則除 database_id 以外的所有列的值都將為 NULL。
sys.database_mirroring_endpoints 目錄視圖顯示有關(guān)服務(wù)器實例的數(shù)據(jù)庫鏡像端點的信息。
sys.dm_db_mirroring_connections 為每個數(shù)據(jù)庫鏡像網(wǎng)絡(luò)連接返回一行
2、手動主體、鏡像服務(wù)器之間的切換。
在主體服務(wù)器中執(zhí)行下面的代碼就可以將鏡像服務(wù)器設(shè)為主體服務(wù)器,主體服務(wù)器設(shè)置為鏡像服務(wù)器。
USE MASTER
Go
ALTER DATABASE DBMirror SET PARTNER FAILOVER
Go
數(shù)據(jù)庫鏡像是一個很好的高可用性解決方案,筆者參加微軟的技術(shù)論壇時曾看到過微軟的技術(shù)人員演示鏡像的故障轉(zhuǎn)移,不主體服務(wù)器出現(xiàn)故障,在10秒內(nèi)客戶端就重新連到數(shù)據(jù)庫服務(wù)器。限于篇幅和筆者的水平,對數(shù)據(jù)庫鏡像作了簡單的介紹,還有很多東西沒有提及到比如說客戶端怎樣連到服務(wù)器等等,希望本文成為讀者學(xué)習(xí)鏡像功能的開端。
本文在寫作過程中參考了微軟的SQL SERVER 2005在線幫助。