非域环境下使用证书部署数据库(SqlServer2008R2)镜像
?非域環(huán)境下使用證書部署數(shù)據(jù)庫(SqlServer2008R2)鏡像
前言
部署數(shù)據(jù)庫鏡像一般有兩種方式域環(huán)境下部署http://liulike.blog.51cto.com/1355103/339183 和 非域環(huán)境下 證書部署參考地址:?http://www.cnblogs.com/shanyou/archive/2010/05/10/1732007.html
這里是自己在三個虛擬機(jī)非域環(huán)境下部署測試的 ?
?
一、環(huán)境
| 數(shù)據(jù)庫 | 系統(tǒng) | IP | 角色 |
| SqlServer2008R2 | Server 2008R2 | 10.10.0.52 | 主體 |
| SqlServer2008R2 | Server 2008R2 | 10.10.0.53 | 鏡像 |
| SqlServer2008R2 | Server 2008R2 | 10.10.0.54 | 見證 |
配置數(shù)據(jù)庫鏡像之前 需要打開端口1433和5022 是三臺服務(wù)器的都要
下面將圖示說明開啟1433和5022的步驟:
?
?
?
?二、鏡像部署
1證書與端點(出站連接)
1.1主題服務(wù)器
USE master; --DROP MASTER KEY CREATE MASTER KEY ENCRYPTION BY PASSWORD = '1qaz!QAZ'; GO --為主體服務(wù)器 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 --使用該證書為服務(wù)器實例創(chuàng)建一個鏡像端點。 --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 證書,并將其復(fù)制到鏡像服務(wù)器 host_B 和見證服務(wù)器 host_C BACKUP CERTIFICATE host_A_cert TO FILE = 'c:\DbMirror\host_A.cer'; GO1.2鏡像服務(wù)器
/*********************************************** 在鏡像服務(wù)器 host_B 執(zhí)行此腳本 ***********************************************/USE master;--DROP MASTER KEY CREATE MASTER KEY ENCRYPTION BY PASSWORD = '1qaz!QAZ'; GO--為鏡像服務(wù)器 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 中為服務(wù)器實例創(chuàng)建一個鏡像端點。 --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 證書,并將其復(fù)制到主體服務(wù)器 host_A 和見證服務(wù)器 host_C 上BACKUP CERTIFICATE host_B_cert TO FILE = 'c:\DbMirror\host_B.cer'; GO1.3見證服務(wù)器
/**************************** 見證服務(wù)器 host_C 執(zhí)行 *****************************/--ALTER DATABASE MirrorDB SET PARTNER OFF USE master; --DROP MASTER KEY CREATE MASTER KEY ENCRYPTION BY PASSWORD = '1qaz!QAZ'; GO--為此服務(wù)器實例制作一個證書。 --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--使用該證書為服務(wù)器實例創(chuàng)建一個鏡像端點。 --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 證書,并將其復(fù)制到主體服務(wù)器 host_A 和鏡像服務(wù)器 host_C 上BACKUP CERTIFICATE host_C_cert TO FILE = 'c:\dbmirror\host_C.cer'; GO2配置出站連接
2.1主體服務(wù)器
--在 host_A 上為鏡像服務(wù)器 host_B 創(chuàng)建一個登錄名。USE master; --DROP LOGIN host_B_login CREATE LOGIN host_B_login WITH PASSWORD = '1qaz!QAZ'; GO--創(chuàng)建一個使用該登錄名的用戶。 --DROP USER host_B_user CREATE USER host_B_user FOR LOGIN host_B_login; GO--使證書與該用戶關(guān)聯(lián)。 --DROP CERTIFICATE host_B_cert CREATE CERTIFICATE host_B_cert AUTHORIZATION host_B_user FROM FILE = 'c:\DbMirror\host_B.cer' GO--授予對遠(yuǎn)程鏡像端點的登錄名的 CONNECT 權(quán)限。 GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [host_B_login]; GO--在主體服務(wù)器 host_A 上為見證服務(wù)器 host_C 創(chuàng)建一個登錄名。 USE master; --DROP LOGIN host_C_login CREATE LOGIN host_C_login WITH PASSWORD = '1qaz!QAZ'; GO--創(chuàng)建一個使用該登錄名的用戶。 --DROP USER host_C_user CREATE USER host_C_user FOR LOGIN host_C_login;GO--使證書與該用戶關(guān)聯(lián)。 --DROP CERTIFICATE host_C_cert CREATE CERTIFICATE host_C_cert AUTHORIZATION host_C_user FROM FILE = 'c:\DbMirror\host_C.cer' GO--授予對遠(yuǎn)程鏡像端點的登錄名的 CONNECT 權(quán)限。 GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [host_C_login]; GO--主體服務(wù)器上創(chuàng)建用于本機(jī)的登錄名(MS可以省略) USE master; --DROP LOGIN host_A_login CREATE LOGIN host_A_login WITH PASSWORD= '1qaz!QAZ'; GO--創(chuàng)建一個使用該登錄名的用戶。 --DROP USER host_A_user CREATE USER host_A_user FOR CERTIFICATE host_A_cert; GO--授予對遠(yuǎn)程鏡像端點的登錄名的 CONNECT 權(quán)限。 GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [host_A_login]; GO2.2鏡像服務(wù)器
--在鏡像服務(wù)器 host_B 上為主體服務(wù)器 host_A 創(chuàng)建一個登錄名。USE master; --DROP LOGIN host_A_login CREATE LOGIN host_A_login WITH PASSWORD = '1qaz!QAZ'; GO--創(chuàng)建一個使用該登錄名的用戶。 --DROP USER host_A_user CREATE USER host_A_user FOR LOGIN host_A_login; GO--使證書與該用戶關(guān)聯(lián)。 --DROP CERTIFICATE host_A_cert CREATE CERTIFICATE host_A_cert AUTHORIZATION host_A_user FROM FILE = 'c:\Dbmirror\host_A.cer' GO--授予對遠(yuǎn)程鏡像端點的登錄名的 CONNECT 權(quán)限。 GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [host_A_login]; GO--在鏡像服務(wù)器 host_B 上為見證服務(wù)器 host_C 創(chuàng)建一個登錄名。USE master; --DROP LOGIN host_C_login CREATE LOGIN host_C_login WITH PASSWORD = '1qaz!QAZ'; GO----創(chuàng)建一個使用該登錄名的用戶。 --DROP USER host_C_user CREATE USER host_C_user FOR LOGIN host_C_login; GO----使證書與該用戶關(guān)聯(lián)。 --DROP CERTIFICATE host_C_cert CREATE CERTIFICATE host_C_cert AUTHORIZATION host_C_user FROM FILE = 'c:\Dbmirror\host_C.cer' GO----授予對遠(yuǎn)程鏡像端點的登錄名的 CONNECT 權(quán)限。 GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [host_C_login]; GO--在鏡像服務(wù)器 host_B 上為本機(jī)創(chuàng)建一個登錄名(MS可以省略) USE master; --DROP LOGIN host_B_login CREATE LOGIN host_B_login WITH PASSWORD = '1qaz!QAZ'; GO--創(chuàng)建一個使用該登錄名的用戶。 --DROP USER host_B_user CREATE USER host_B_user FOR CERTIFICATE host_B_cert; GO--授予對遠(yuǎn)程鏡像端點的登錄名的 CONNECT 權(quán)限。 GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [host_B_login]; GO2.3見證服務(wù)器
--在見證服務(wù)器 host_C 上為主體服務(wù)器 host_A 創(chuàng)建一個登錄名。USE master; --DROP LOGIN host_A_login CREATE LOGIN host_A_login WITH PASSWORD = '1qaz!QAZ'; GO--創(chuàng)建一個使用該登錄名的用戶。 --DROP USER host_A_user CREATE USER host_A_user FOR LOGIN host_A_login; GO--使證書與該用戶關(guān)聯(lián)。 --DROP CERTIFICATE host_A_cert CREATE CERTIFICATE host_A_cert AUTHORIZATION host_A_user FROM FILE = 'c:\DbMirror\host_A.cer' GO--授予對遠(yuǎn)程鏡像端點的登錄名的 CONNECT 權(quán)限。 GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [host_A_login]; GO--在見證服務(wù)器 host_C 上為鏡像服務(wù)器 host_B 創(chuàng)建一個登錄名。USE master; --DROP LOGIN host_B_login CREATE LOGIN host_B_login WITH PASSWORD = '1qaz!QAZ'; GO--創(chuàng)建一個使用該登錄名的用戶。 --DROP USER host_B_user CREATE USER host_B_user FOR LOGIN host_B_login; GO--使證書與該用戶關(guān)聯(lián)。 --DROP CERTIFICATE host_B_cert CREATE CERTIFICATE host_B_cert AUTHORIZATION host_B_user FROM FILE = 'c:\DbMirror\host_B.cer' GO--授予對遠(yuǎn)程鏡像端點的登錄名的 CONNECT 權(quán)限。 GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [host_B_login]; GO3配置數(shù)據(jù)庫登錄信息
在主體數(shù)據(jù)庫中查詢 sid和name
USE master; select sid,name from syslogins;在備份數(shù)據(jù)庫執(zhí)行
USE master; exec sp_addlogin @loginame = 'xiejun', @passwd = '1qaz!QAZ', @sid = 0x9E2D3238732D264483489528B0DC0D9F ;4備份數(shù)據(jù)庫
主體數(shù)據(jù)庫中執(zhí)行
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在鏡像數(shù)據(jù)庫
還原的時候必須把數(shù)據(jù)庫和事務(wù)日志以NoRecovery的形式還原
?5配置伙伴服務(wù)器
執(zhí)行順序為 鏡像-》主體-》見證
在鏡像服務(wù)器配置
ALTER DATABASE xiejun SET PARTNER = 'TCP://10.10.0.52:5022'; GO?
在主體服務(wù)器配置
ALTER DATABASE xiejun SET PARTNER = 'TCP://10.10.0.53:5022'; GO?
在主體服務(wù)器配置
ALTER DATABASE [xiejun] SET WITNESS = 'TCP://10.10.0.54:5022'; GO到此服務(wù)器配置成功
?
轉(zhuǎn)載于:https://www.cnblogs.com/net-xiejun/p/5016396.html
總結(jié)
以上是生活随笔為你收集整理的非域环境下使用证书部署数据库(SqlServer2008R2)镜像的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Codeforces 1045. A.
- 下一篇: 数据库实现,以及工厂方法模式实现