服務器角色 | 機器名/角色名 | 軟件 | IP |
---|---|---|---|
主體服務器 | RepA | sql server 2008 r2 | 192.168.0.10 |
鏡像服務器 | RepB | sql server 2008 r2 | 192.168.0.20 |
見證服務器 | win7 | sql server 2008 r2 | 192.168.0.30 |
2.服務器相關設置算法
一、建立文件夾 Certifications 用來存放認證證書 ShareFolders 用來存放共享文件,方便服務器之間傳遞文件 二、保證主體服務器與鏡像服務器的數據文件夾路徑相同 三、保證數據庫的恢復模式爲FULL
建立數據庫主密鑰sql
USE master; GO CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'Pa$$w0rd'; /* 刪除主密鑰 USE master; DROP MASTER KEY 使用相同方式在RepB闖將主密鑰
二、建立證書並用主密鑰加密數據庫
USE master; GO CREATE CERTIFICATE Host_A_Cert WITH Subject = 'Host_C Certificate', Expiry_Date = '99991231' /* 刪除證書 USE master; DROP CERTIFICATE HOST_A_Cert 在RepB使用一樣的方法建立證書HOST_B_Cert
三、建立端點(也就是監聽)服務器
CREATE ENDPOINT EDP_Mirror STATE = STARTED AS TCP( LISTENER_PORT = 5022, -- 鏡像端點使用的通訊端口 LISTENER_IP = ALL) -- 偵聽的IP地址 FOR DATABASE_MIRRORING( AUTHENTICATION = CERTIFICATE Host_A_Cert, -- 證書身份驗證 ENCRYPTION = DISABLED, -- 不對傳輸的數據加密,若是須要加密,能夠配置爲 SUPPORTED 或 REQUIRED, 並可選擇加密算法 ROLE = ALL) -- 端點支持全部的數據庫鏡像角色, 也能夠設置爲 WITNESS(僅見證服務器),或 PARTNER(僅鏡像夥伴) 在RepB使用相同的方法,×××名,建立端點
四、備份證書ide
BACKUP CERTIFICATE Host_A_Cert TO FILE = 'C:\ShareFolders\Host_A_Cert.cer'; 在RepB上執行相同的操做,備份Host_B_Cert RepA 和 RepB 的Certifications文件夾上都要有全部服務器的證書,能夠經過共享文件夾複製
五、建立用戶和登陸帳號加密
建立登陸帳號給鏡像服務器 USE master; CREATE LOGIN Host_B_Login WITH PASSWORD = 'Pa$$w0rd'; 建立用戶並映射到登陸帳號上 CREATE USER Host_B_User For Login Host_B_Login; 在RepB上使用相同的方法給RepB建立用戶和登陸帳號,注意更更名稱
六、使用證書受權用戶code
建立一個新的證書,並用從夥伴服務器複製來的證書導入,而後受權上面建立的帳號 CREATE CERTIFICATE Host_B_Cert AUTHORIZATION Host_B_User FROM FILE = 'C:\Certifications\Host_B_Cert.cer'; 在RepB上使用一樣的操做,注意更更名稱
七、登陸帳號受權訪問端口server
GRANT CONNECT ON ENDPOINT::EDP_Mirror TO Host_B_Login; 在 RepB上使用一樣的操做,注意更更名稱
八、備份還原數據庫it
完整備份RepA上的數據庫,並以Norecovery選項還原到RepB(使用還原文件和文件組)
九、啓動鏡像io
注意順序,如今RepB上執行 ALTER DATABASE MirrorDB SET PARTNER = 'TCP://RepA:5022'; GO 而後在RepA上執行 ALTER DATABASE MirrorDB SET PARTNER = 'TCP://RepB:5022'; GO 完畢,接下來是配置見證服務器
一、與RepA和RepB相似配置見證服務器的主密鑰證書,端點,以及受權。並複製證書,保證每臺服務器都有三臺服務器的證書
二、在RepA和RepB上執行下面語句,爲見證服務器建立端點權限
USE master; CREATE LOGIN Host_C_Login WITH PASSWORD = 'Pa$$w0rd'; GO CREATE USER Host_C_User For Login Host_C_Login; GO CREATE CERTIFICATE Host_C_Cert AUTHORIZATION Host_C_User FROM FILE = 'C:\Certifications\Host_C_Cert.cer'; GO GRANT CONNECT ON ENDPOINT::EDP_Mirror TO Host_C_Login; GO
三、主體服務器RepA加入見證服務器
ALTER DATABASE MirrorDB SET WITNESS = 'TCP://win7:5022'