非域环境下使用证书部署数据库(SqlServer2008R2)镜像
?非域環境下使用證書部署數據庫(SqlServer2008R2)鏡像
前言
部署數據庫鏡像一般有兩種方式域環境下部署http://liulike.blog.51cto.com/1355103/339183 和 非域環境下 證書部署參考地址:?http://www.cnblogs.com/shanyou/archive/2010/05/10/1732007.html
這里是自己在三個虛擬機非域環境下部署測試的 ?
?
一、環境
| 數據庫 | 系統 | IP | 角色 |
| SqlServer2008R2 | Server 2008R2 | 10.10.0.52 | 主體 |
| SqlServer2008R2 | Server 2008R2 | 10.10.0.53 | 鏡像 |
| SqlServer2008R2 | Server 2008R2 | 10.10.0.54 | 見證 |
配置數據庫鏡像之前 需要打開端口1433和5022 是三臺服務器的都要
下面將圖示說明開啟1433和5022的步驟:
?
?
?
?二、鏡像部署
1證書與端點(出站連接)
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'; GO1.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'; GO1.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'; GO2配置出站連接
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]; GO2.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]; GO2.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]; GO3配置數據庫登錄信息
在主體數據庫中查詢 sid和name
USE master; select sid,name from syslogins;在備份數據庫執行
USE master; exec sp_addlogin @loginame = 'xiejun', @passwd = '1qaz!QAZ', @sid = 0x9E2D3238732D264483489528B0DC0D9F ;4備份數據庫
主體數據庫中執行
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的形式還原
?5配置伙伴服務器
執行順序為 鏡像-》主體-》見證
在鏡像服務器配置
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到此服務器配置成功
?
轉載于:https://www.cnblogs.com/net-xiejun/p/5016396.html
總結
以上是生活随笔為你收集整理的非域环境下使用证书部署数据库(SqlServer2008R2)镜像的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Codeforces 1045. A.
- 下一篇: Jquery 多行拖拽图片排序 jq优化