部署數據庫鏡像通常有兩種方式域環境下部署http://liulike.blog.51cto.com/1355103/339183 和 非域環境下 證書部署參考地址: http://www.cnblogs.com/shanyou/archive/2010/05/10/1732007.htmlhtml
這裏是本身在三個虛擬機非域環境下部署測試的 數據庫
數據庫服務器 |
系統測試 |
IPspa |
角色日誌 |
SqlServer2008R2code |
Server 2008R2htm |
10.10.0.52blog |
主體事務 |
SqlServer2008R2 |
Server 2008R2 |
10.10.0.53 |
鏡像 |
SqlServer2008R2 |
Server 2008R2 |
10.10.0.54 |
見證 |
配置數據庫鏡像以前 須要打開端口1433和5022 是三臺服務器的都要
下面將圖示說明開啓1433和5022的步驟:
1.1主題服務器
USE master; --DROP MASTER KEY CREATE MASTER KEY ENCRYPTION BY PASSWORD = '1qaz!QAZ'; GO --爲主體服務器 host_A 實例製做一個證書。 --DROP CERTIFICATE host_A_cert CREATE CERTIFICATE host_A_cert WITH SUBJECT = 'host_A certificate',START_DATE = '3/12/2015',EXPIRY_DATE = '01/01/2099'; GO --使用該證書爲服務器實例建立一個鏡像端點。 --DROP ENDPOINT Endpoint_Mirroring 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 = PARTNER ); GO --備份host_A 證書,並將其複製到鏡像服務器 host_B 和見證服務器 host_C BACKUP CERTIFICATE host_A_cert TO FILE = 'c:\DbMirror\host_A.cer'; GO
1.2鏡像服務器
/*********************************************** 在鏡像服務器 host_B 執行此腳本 ***********************************************/ USE master; --DROP MASTER KEY CREATE MASTER KEY ENCRYPTION BY PASSWORD = '1qaz!QAZ'; GO --爲鏡像服務器 host_B 實例製做一個證書。 --DROP CERTIFICATE host_B_cert CREATE CERTIFICATE host_B_cert WITH SUBJECT = 'host_B certificate',START_DATE = '3/12/2015',EXPIRY_DATE = '01/01/2099'; GO --在 host_B 中爲服務器實例建立一個鏡像端點。 --DROP ENDPOINT Endpoint_Mirroring 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 = PARTNER ); GO --備份 host_B 證書,並將其複製到主體服務器 host_A 和見證服務器 host_C 上 BACKUP CERTIFICATE host_B_cert TO FILE = 'c:\DbMirror\host_B.cer'; GO
1.3見證服務器
/**************************** 見證服務器 host_C 執行 *****************************/ --ALTER DATABASE MirrorDB SET PARTNER OFF USE master; --DROP MASTER KEY CREATE MASTER KEY ENCRYPTION BY PASSWORD = '1qaz!QAZ'; GO --爲此服務器實例製做一個證書。 --DROP CERTIFICATE host_C_cert CREATE CERTIFICATE host_C_cert WITH SUBJECT = 'host_C certificate',START_DATE = '3/12/2015',EXPIRY_DATE = '01/01/2099'; GO --使用該證書爲服務器實例建立一個鏡像端點。 --DROP ENDPOINT Endpoint_Mirroring CREATE ENDPOINT Endpoint_Mirroring STATE = STARTED AS TCP ( LISTENER_PORT=5022 , LISTENER_IP = ALL ) FOR DATABASE_MIRRORING ( AUTHENTICATION = CERTIFICATE host_C_cert , ENCRYPTION = REQUIRED ALGORITHM AES , ROLE = WITNESS ); GO --備份 host_C 證書,並將其複製到主體服務器 host_A 和鏡像服務器 host_C 上 BACKUP CERTIFICATE host_C_cert TO FILE = 'c:\dbmirror\host_C.cer'; GO
2.1主體服務器
--在 host_A 上爲鏡像服務器 host_B 建立一個登陸名。 USE master; --DROP LOGIN host_B_login CREATE LOGIN host_B_login WITH PASSWORD = '1qaz!QAZ'; GO --建立一個使用該登陸名的用戶。 --DROP USER host_B_user CREATE USER host_B_user FOR LOGIN host_B_login; GO --使證書與該用戶關聯。 --DROP CERTIFICATE host_B_cert CREATE CERTIFICATE host_B_cert AUTHORIZATION host_B_user FROM FILE = 'c:\DbMirror\host_B.cer' GO --授予對遠程鏡像端點的登陸名的 CONNECT 權限。 GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [host_B_login]; GO --在主體服務器 host_A 上爲見證服務器 host_C 建立一個登陸名。 USE master; --DROP LOGIN host_C_login CREATE LOGIN host_C_login WITH PASSWORD = '1qaz!QAZ'; GO --建立一個使用該登陸名的用戶。 --DROP USER host_C_user CREATE USER host_C_user FOR LOGIN host_C_login; GO --使證書與該用戶關聯。 --DROP CERTIFICATE host_C_cert CREATE CERTIFICATE host_C_cert AUTHORIZATION host_C_user FROM FILE = 'c:\DbMirror\host_C.cer' GO --授予對遠程鏡像端點的登陸名的 CONNECT 權限。 GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [host_C_login]; GO --主體服務器上建立用於本機的登陸名(MS能夠省略) USE master; --DROP LOGIN host_A_login CREATE LOGIN host_A_login WITH PASSWORD= '1qaz!QAZ'; GO --建立一個使用該登陸名的用戶。 --DROP USER host_A_user CREATE USER host_A_user FOR CERTIFICATE host_A_cert; GO --授予對遠程鏡像端點的登陸名的 CONNECT 權限。 GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [host_A_login]; GO
2.2鏡像服務器
--在鏡像服務器 host_B 上爲主體服務器 host_A 建立一個登陸名。 USE master; --DROP LOGIN host_A_login CREATE LOGIN host_A_login WITH PASSWORD = '1qaz!QAZ'; GO --建立一個使用該登陸名的用戶。 --DROP USER host_A_user CREATE USER host_A_user FOR LOGIN host_A_login; GO --使證書與該用戶關聯。 --DROP CERTIFICATE host_A_cert CREATE CERTIFICATE host_A_cert AUTHORIZATION host_A_user FROM FILE = 'c:\Dbmirror\host_A.cer' GO --授予對遠程鏡像端點的登陸名的 CONNECT 權限。 GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [host_A_login]; GO --在鏡像服務器 host_B 上爲見證服務器 host_C 建立一個登陸名。 USE master; --DROP LOGIN host_C_login CREATE LOGIN host_C_login WITH PASSWORD = '1qaz!QAZ'; GO ----建立一個使用該登陸名的用戶。 --DROP USER host_C_user CREATE USER host_C_user FOR LOGIN host_C_login; GO ----使證書與該用戶關聯。 --DROP CERTIFICATE host_C_cert CREATE CERTIFICATE host_C_cert AUTHORIZATION host_C_user FROM FILE = 'c:\Dbmirror\host_C.cer' GO ----授予對遠程鏡像端點的登陸名的 CONNECT 權限。 GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [host_C_login]; GO --在鏡像服務器 host_B 上爲本機建立一個登陸名(MS能夠省略) USE master; --DROP LOGIN host_B_login CREATE LOGIN host_B_login WITH PASSWORD = '1qaz!QAZ'; GO --建立一個使用該登陸名的用戶。 --DROP USER host_B_user CREATE USER host_B_user FOR CERTIFICATE host_B_cert; GO --授予對遠程鏡像端點的登陸名的 CONNECT 權限。 GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [host_B_login]; GO
2.3見證服務器
--在見證服務器 host_C 上爲主體服務器 host_A 建立一個登陸名。 USE master; --DROP LOGIN host_A_login CREATE LOGIN host_A_login WITH PASSWORD = '1qaz!QAZ'; GO --建立一個使用該登陸名的用戶。 --DROP USER host_A_user CREATE USER host_A_user FOR LOGIN host_A_login; GO --使證書與該用戶關聯。 --DROP CERTIFICATE host_A_cert CREATE CERTIFICATE host_A_cert AUTHORIZATION host_A_user FROM FILE = 'c:\DbMirror\host_A.cer' GO --授予對遠程鏡像端點的登陸名的 CONNECT 權限。 GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [host_A_login]; GO --在見證服務器 host_C 上爲鏡像服務器 host_B 建立一個登陸名。 USE master; --DROP LOGIN host_B_login CREATE LOGIN host_B_login WITH PASSWORD = '1qaz!QAZ'; GO --建立一個使用該登陸名的用戶。 --DROP USER host_B_user CREATE USER host_B_user FOR LOGIN host_B_login; GO --使證書與該用戶關聯。 --DROP CERTIFICATE host_B_cert CREATE CERTIFICATE host_B_cert AUTHORIZATION host_B_user FROM FILE = 'c:\DbMirror\host_B.cer' GO --授予對遠程鏡像端點的登陸名的 CONNECT 權限。 GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [host_B_login]; GO
在主體數據庫中查詢 sid和name
USE master; select sid,name from syslogins;
在備份數據庫執行
USE master; exec sp_addlogin @loginame = 'xiejun', @passwd = '1qaz!QAZ', @sid = 0x9E2D3238732D264483489528B0DC0D9F ;
主體數據庫中執行
USE MASTER; GO BACKUP DATABASE xiejun TO DISK = 'c:\DbMirror\DB.bak' WITH INIT GO BACKUP LOG xiejun TO DISK = 'c:\DbMirror\DB_log.bak' WITH INIT GO
在鏡像數據庫
還原的時候必須把數據庫和事務日誌以NoRecovery的形式還原
執行順序爲 鏡像-》主體-》見證
在鏡像服務器配置
ALTER DATABASE xiejun SET PARTNER = 'TCP://10.10.0.52:5022'; GO
在主體服務器配置
ALTER DATABASE xiejun SET PARTNER = 'TCP://10.10.0.53:5022'; GO
在主體服務器配置
ALTER DATABASE [xiejun] SET WITNESS = 'TCP://10.10.0.54:5022'; GO
到此服務器配置成功