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