非域環境下使用證書部署數據庫(SqlServer2008R2)鏡像

 非域環境下使用證書部署數據庫(SqlServer2008R2)鏡像

前言

部署數據庫鏡像通常有兩種方式域環境下部署http://liulike.blog.51cto.com/1355103/339183 和 非域環境下 證書部署參考地址: http://www.cnblogs.com/shanyou/archive/2010/05/10/1732007.htmlhtml

這裏是本身在三個虛擬機非域環境下部署測試的  數據庫

 

1、環境

數據庫服務器

系統測試

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. 打開防火牆-》高級設置

 

 

 

 2、鏡像部署

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

到此服務器配置成功

相關文章
相關標籤/搜索