|
最初在為公司設計SQLServer數據庫鏡像的時候,首先考慮的是高可用性(三臺計算機,一臺見證服務器,一臺做主數據庫,一臺做鏡像)
在虛擬機環境下部署成功,一切都是那么的完美。 故障轉移3秒之內就可以順利完成。
1.高可用性的實施代碼:


/********************************************************
此腳本在主體服務器執行
********************************************************/
--鏡像只支持完全恢復模式,在備份數據庫之前檢查恢復的模式
--對要鏡像的數據庫進行完整備份后,復制到鏡像數據庫以NORECOVERNY選項進行恢復
USE master;
--DROP MASTER KEY
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'password';
GO
--為此服務器實例制作一個證書。
--DROP CERTIFICATE HOST_A_cert
CREATE CERTIFICATE HOST_A_cert
WITH SUBJECT = 'HOST_A certificate',START_DATE = '01/01/2009';
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 證書,并將其復制到其他機器,將 C:/HOST_A_cert.cer 復制到 HOST_B/HOST_C。
BACKUP CERTIFICATE HOST_A_cert TO FILE = 'e:/HOST_A_cert.cer';
GO
--為入站連接配置 Host_A
--在 HOST_A 上為 HOST_B 創建一個登錄名。
USE master;
--DROP LOGIN HOST_B_login
CREATE LOGIN HOST_B_login WITH PASSWORD = 'password';
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 = 'e:/HOST_B_cert.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 = 'password';
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 = 'e:/HOST_C_cert.cer'
GO
--授予對遠程鏡像端點的登錄名的 CONNECT 權限。
GRANT CONNECT ON ENDPOINT::Endpoint_Mirroring TO [HOST_C_login];
GO
USE master;
--DROP LOGIN HOST_A_login
CREATE LOGIN HOST_A_login WITH PASSWORD = 'password';
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
--必須要在鏡像數據庫中先設置好伙伴后,才能在主體服務器執行
--在 HOST_A 的主體服務器實例上,將 HOST_B 上的服務器實例設置為伙伴(使其成為初始鏡像服務器實例)。
ALTER DATABASE crm
SET PARTNER = 'TCP://192.168.1.205:5022';
GO
--設置見證服務器
ALTER DATABASE crm SET WITNESS = N'TCP://192.168.1.204:5022';
GO
it知識庫:SQLServer的數據庫鏡像實施筆記,轉載需保留來源!
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。