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

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