實(shí)戰(zhàn)SQL 2008 數(shù)據(jù)庫(kù)鏡像功能
發(fā)表日期:2009年6月26日 【編輯錄入:
信息資料處葉建勇 (老師)】
寬屏顯示SQL2008的鏡像功能
數(shù)據(jù)庫(kù)鏡像相當(dāng)于2臺(tái)服務(wù)器提供容錯(cuò)功能,其實(shí)原理是進(jìn)行日志文件的復(fù)制及恢復(fù)操作保持?jǐn)?shù)據(jù)的同步
,一般鏡像服務(wù)2臺(tái)服務(wù)器即可,但出現(xiàn)故障需要手動(dòng)進(jìn)行切換,如果增加一臺(tái)見(jiàn)證服務(wù)器就形成了自動(dòng)切換
的功能,見(jiàn)證服務(wù)器的自動(dòng)切換操作一般在10秒內(nèi)完成,所以對(duì)用戶(hù)來(lái)所感覺(jué)不到任何異樣。
為本次實(shí)驗(yàn)我搭建了3臺(tái)虛擬機(jī),均是windows2003+sql2008,各分配內(nèi)存為500M。
拓補(bǔ)圖如下:
計(jì)算機(jī)名分別是:
sql-1===用作主服務(wù)器 =ip:10.40.1.10
sql-2===用作鏡像服務(wù)器 =ip:10.40.1.11
sql-3===用作見(jiàn)證服務(wù)器 =ip:10.40.1.12
本次環(huán)境為工作組,為方便驗(yàn)證3臺(tái)都已a(bǔ)dministrator來(lái)登入登入密碼都一樣
首先在對(duì)象資源管理器里分別連接到這3臺(tái)服務(wù)器
若無(wú)法連接,請(qǐng)?jiān)诟髯苑?wù)器的sql網(wǎng)絡(luò)配置里啟動(dòng)named pipes和tcp/ip協(xié)議
然后再SQL-1上建立一個(gè)測(cè)試用的數(shù)據(jù)庫(kù)如:ositpro
并設(shè)置數(shù)據(jù)庫(kù)恢復(fù)模式為完整
代碼如下:
alter database ositpro set recovery full with no_wait
圖形界面的設(shè)置位置在數(shù)據(jù)庫(kù)的屬性-選項(xiàng)里,如下圖
接著分別在SQL-1服務(wù)器的D盤(pán)根目錄下建立存放備份的文件夾:sqlbak
在SQL-2服務(wù)器的D盤(pán)根目錄下建立同樣的目錄并設(shè)置共享權(quán)限:sqlbak及保存鏡像還原保存數(shù)據(jù)及
日志的文件夾:sqldata
文件夾建立后我們?cè)赟QL-1上備份剛才創(chuàng)建的ositpro數(shù)據(jù)庫(kù)到sqlbak目錄
backup database ositpro to disk='d:\sqlbak\ositpro.bak'
備份完畢后我們將數(shù)據(jù)拷到sql-2上的sqlbak目錄下,然后再sql-1上直接還原數(shù)據(jù)庫(kù)
選擇目標(biāo)數(shù)據(jù)庫(kù),源備份文件
將行數(shù)據(jù)及日志另存到D盤(pán)sqldata目錄下,并選擇恢復(fù)模式的第2條:restore with norecovery
還原完畢
接下來(lái)分別在3臺(tái)服務(wù)器上創(chuàng)建用于偵聽(tīng)對(duì)象的TCP端點(diǎn)
因?yàn)?臺(tái)SQL服務(wù)器所使用的實(shí)例都不一樣,所以端口號(hào)可以相同,反之必須不同
SQL-1執(zhí)行下面腳本
create endpoint endpoint_mirroring
state=started
as tcp(listener_port=5022)
for database_mirroring(authentication=windows ntlm,encryption=supported,role=partner)
go
SQL-2執(zhí)行下面腳本
create endpoint endpoint_mirroring
state=started
as tcp(listener_port=5022)
for database_mirroring(authentication=windows ntlm,encryption=supported,role=partner)
go
SQL-3執(zhí)行下面腳本
create endpoint endpoint_mirroring
state=started
as tcp(listener_port=5022)
for database_mirroring(authentication=windows ntlm,encryption=supported,role=witness)
go
在sql-2上設(shè)置主服務(wù)器
ALTER DATABASE ositpro SET PARTNER='TCP://sql-1:5022';
GO
在sql-1上設(shè)置鏡像服務(wù)器及見(jiàn)證服務(wù)器
ALTER DATABASE ositpro SET PARTNER='TCP://sql-2:5022';
GO ALTER DATABASE ositpro SET WITNESS='TCP://sql-3:5022';
GO
此時(shí)sql-1上數(shù)據(jù)已顯示為主體,已同步,查看3臺(tái)服務(wù)器的對(duì)象如下
接下來(lái)進(jìn)行模擬故障切換
首先在sql-2上打開(kāi)數(shù)據(jù)庫(kù)鏡像監(jiān)視器,此狀態(tài)每10秒更新一次
此時(shí)sql-1為主體服務(wù)器,sql-2為鏡像,下面我們禁用sql-1的網(wǎng)卡
由下圖可以看到sql-1的數(shù)據(jù)庫(kù)狀態(tài)變成了正在恢復(fù),sql-2變成了主體,因?yàn)闆](méi)有了鏡像服務(wù)器,所以顯示
已斷開(kāi)連接
在sql-2上的鏡像監(jiān)視器里可以看到,sql-2當(dāng)前腳色為主體,鏡像狀態(tài)為斷開(kāi),見(jiàn)證服務(wù)器連接正常
此時(shí)如果sql-1的網(wǎng)卡回復(fù)正常sql-2還是主服務(wù)器,sql-1變成了鏡像服務(wù)器了
2個(gè)不會(huì)恢復(fù)原始狀態(tài)的,如需切換到初始環(huán)境使用下面代碼在sql-1上執(zhí)行即可
ALTER DATABASE ositpro SET PARTNER FAILOVER
OK,使用3臺(tái)服務(wù)器搭建自動(dòng)切換鏡像的實(shí)驗(yàn)完成
上一篇:
ADO 通過(guò) GetString(() 加速腳本下一篇:
交換機(jī)命令