非域環境下使用證書部署數據庫(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.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配置出站連接

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

3配置數據庫登錄信息

在主體數據庫中查詢 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

到此服務器配置成功

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM