下面主要是2008 MSSQL的一個(gè) 鏡像 安裝步驟,使用到的工具是mssql自帶的Management Studio purpose : SQL SERVER 2008 mirror configuration Created : 2012-04-13 Author : kenyon 鏡像 安裝的環(huán)境: 主機(jī):win server 2003,sql server 2008,IP:192.168.9.1
下面主要是2008 MSSQL的一個(gè)鏡像安裝步驟,使用到的工具是mssql自帶的Management Studio
purpose : SQL SERVER 2008 mirror configuration
Created : 2012-04-13
Author : kenyon
鏡像安裝的環(huán)境:
主機(jī):win server 2003,sql server 2008,IP:192.168.9.182 PC賬戶:administrator
備機(jī):win server 2003,sql server 2008,IP:192.168.9.181 PC賬戶:administrator
無見證服務(wù)器(witness)
說明:
a.鏡像服務(wù)器備份的是用戶的數(shù)據(jù)庫,不是系統(tǒng)的數(shù)據(jù)庫,比如不能鏡像master,msdb,model和tempdb
b.鏡像的數(shù)據(jù)庫對象恢復(fù)模式必須是完整的,不能是簡單和大容量日志類型的
c.備機(jī)鏡像不能被訪問,正常情況下一直處于正在還原的狀態(tài)
d.主機(jī)可以被訪問,正常情況下一直處于主體正在同步的狀態(tài)
e.主機(jī)和備機(jī)的5022端口必須沒有被占用,可以用telnet 192.168.9.182 5022來驗(yàn)證
0.確定主機(jī)的恢復(fù)模式是完整性恢復(fù)的
USE master;
ALTER DATABASE backuptest SET RECOVERY FULL;
1.創(chuàng)建證書,實(shí)現(xiàn)互通的根本
--主機(jī)
USE master;
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'clq';
CREATE CERTIFICATE HOST_A_cert WITH SUBJECT = 'HOST_A certificate' ,
START_DATE = '09/20/2011';
--備機(jī)
USE master;
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'clq';
CREATE CERTIFICATE HOST_B_cert WITH SUBJECT = 'HOST_B certificate',
START_DATE = '09/20/2011';
2.創(chuàng)建主備連接的端點(diǎn)
--主機(jī)
CREATE ENDPOINT Endpoint_Mirroring
STATE = STARTED
AS
TCP ( LISTENER_PORT=5022 , LISTENER_IP = ALL )
FOR
DATABASE_MIRRORING
( AUTHENTICATION = CERTIFICATE HOST_A_cert , ENCRYPTION = REQUIRED ALGORITHM AES , ROLE = ALL );
--備機(jī)
CREATE ENDPOINT Endpoint_Mirroring
STATE = STARTED
AS
TCP ( LISTENER_PORT=5022 , LISTENER_IP = ALL )
FOR
DATABASE_MIRRORING
( AUTHENTICATION = CERTIFICATE HOST_B_cert , ENCRYPTION = REQUIRED ALGORITHM AES , ROLE = ALL );
3.備份證書用來互換
--主機(jī)
BACKUP CERTIFICATE HOST_A_cert TO FILE = 'D:\working\HOST_A_cert.cer';
--備機(jī)
BACKUP CERTIFICATE HOST_B_cert TO FILE = 'D:\working\HOST_B_cert.cer';
4.主備之間互換證書
將主機(jī)上產(chǎn)生的證書HOST_A_cert復(fù)制到備機(jī)上,將備機(jī)上產(chǎn)生的證書HOST_B_cert復(fù)制到主機(jī)上,放在第5步指定的目錄
5.新增主備登陸用戶
--主機(jī)
CREATE LOGIN HOST_B_login WITH PASSWORD = 'clq'; --主機(jī)上登錄到備機(jī)的用戶
CREATE USER HOST_B_user FOR LOGIN HOST_B_login;
CREATE CERTIFICATE HOST_B_cert AUTHORIZATION HOST_B_user FROM FILE = 'D:\working\HOST_B_cert.cer';
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_B_login];
--備機(jī)
CREATE LOGIN HOST_A_login WITH PASSWORD = 'clq'; --備機(jī)上登錄到主機(jī)的用戶
CREATE USER HOST_A_user FOR LOGIN HOST_A_login;
CREATE CERTIFICATE HOST_A_cert AUTHORIZATION HOST_A_user FROM FILE = 'D:\working\HOST_A_cert.cer';
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_A_login];
6.登錄名維護(hù),即主機(jī)與備機(jī)有相同的登錄用戶,防止切換到備機(jī)時(shí)業(yè)務(wù)無法登錄,假如主備登錄用戶一致,此步驟可免
--主機(jī)
use master;
select sid,name from syslogins where name = 'clq';
sid name
0xC6C9DB1494DA514882D4BEAA362A8FB7 clq
--備機(jī)
USE master;
exec sp_addlogin
@loginame = 'clq',
@passwd = 'clq',
@sid = 0xC6C9DB1494DA514882D4BEAA362A8FB7 ;
----以下步驟是針對每個(gè)庫執(zhí)行的,有幾個(gè)庫就執(zhí)行幾次
7.準(zhǔn)備備機(jī)數(shù)據(jù)庫
--主機(jī)
backup database backuptest to disk= 'E:\database\sql server\MSSQL10.MSSQLSERVER\MSSQL\Backup\backuptest.log'
with init
go
--備機(jī)
將主機(jī)上備份的文件復(fù)制到備機(jī)上,并還原備機(jī)數(shù)據(jù)庫,還原時(shí)必須指定norecovery參數(shù)
create database backuptest; --該步驟為備機(jī)上無此數(shù)據(jù)時(shí)需先創(chuàng)建一個(gè)空數(shù)據(jù)庫,若已有則直接恢復(fù)
restore database backuptest from disk = 'E:\working\backuptest.log' with norecovery;
恢復(fù)時(shí)指定覆蓋原有備機(jī)數(shù)據(jù)庫即可。
當(dāng)恢復(fù)時(shí)報(bào)錯(cuò)時(shí)可以參考用replace參數(shù)(首次恢復(fù))
restore database EOL_TCCLUB FROM disk= 'd:\backup\EOL_TCCLUB.bak'
with move 'AC_SSC_BZ' to 'D:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\EOL_TCCLUB.mdf',
move 'AC_SSC_BZ_log' to 'D:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\EOL_TCCLUB.ldf',
replace,norecovery.
如果還不行,報(bào)錯(cuò)信息如:日志尾部未備份之類信息,則去主機(jī)上備份日志文件,在備機(jī)上做恢復(fù),恢復(fù)時(shí)同樣指定norecovery。
8.增加鏡像伙伴,需要先在備機(jī)上執(zhí)行,再執(zhí)行主機(jī)
--備機(jī)
ALTER DATABASE backuptest SET PARTNER = 'TCP://192.168.9.181:5022';
--主機(jī)
ALTER DATABASE backuptest SET PARTNER = 'TCP://192.168.9.182:5022';
執(zhí)行成功以后,主機(jī)上數(shù)據(jù)庫backuptest會顯示主體正在同步字樣,備機(jī)數(shù)據(jù)庫會顯示正在還原字樣。若上述步驟
有報(bào)日志錯(cuò)誤,則還需從主機(jī)上備份日志文件,然后在備機(jī)上還原,還原日志時(shí)同樣需要指定norecovery
9.鏡像與主體切換
--主機(jī)
use master;
alter database backuptest set partner failover;
執(zhí)行成功后原主體數(shù)據(jù)庫會顯示正在還原,備機(jī)數(shù)據(jù)庫顯示主體正在同步字樣
10.測試主備切換
主機(jī)崩潰,強(qiáng)制備機(jī)當(dāng)主機(jī),原主機(jī)恢復(fù)后再切換回去
主機(jī)A
備機(jī)B
此時(shí),在B機(jī)上執(zhí)行
use master;
alter database backuptest set partner FORCE_SERVICE_ALLOW_DATA_LOSS; --強(qiáng)制接收
停止主機(jī)A的SQL SERVER 服務(wù)(比如斷電),此時(shí)備機(jī)上的數(shù)據(jù)庫會顯示正在恢復(fù)狀態(tài),大概持續(xù)幾十秒,最后變成
backuptest(主體,已斷開鏈接),即現(xiàn)在的鏡像B可以用來充當(dāng)主機(jī)了
假如現(xiàn)在有業(yè)務(wù)往數(shù)據(jù)庫里插也是能成功的
現(xiàn)在把原主機(jī)A恢復(fù)(通電),然后在B機(jī)里操作
use master;
alter database backuptest set partner resume;
此時(shí)A機(jī)是作為鏡像的,B機(jī)是作為主機(jī)的,要再切換一下,則再在B上執(zhí)行
alter database backuptest set partner failover;
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com