SQL SERVER 2008R2 鏡像高可用(非域)

SQL DNS 防火牆 Windows 閒來看看 2017-04-01

簡要介紹:

鏡像高可用: 使用3臺數據庫服務器,分別為主數據庫,鏡像數據庫,見證數據庫.通過見證數據庫監控主備數據庫故障情況,自動進行故障轉移

主數據庫:提供對外訪問

鏡像數據庫:主數據庫的備機,支持故障轉移

見證數據庫:監控主 鏡像數據庫故障情況,自動進行故障轉移

程序如何判斷現在哪臺數據庫提供服務:(針對sqlserver jdbc驅動)

  1. 當驅動連接上主數據庫A時,會緩存A的partner數據庫B到本地.

  2. 當A發生故障時,會嘗試訪問B(在超時時間內會多次嘗試)

  3. 連上B時, 此時B將作為主數據庫,驅動將緩存B的partner數據庫A到本地(A B互為partner)

  4. 當第一次連接數據庫時,如果主數據庫連接失敗,由於尚未連上數據庫,所以本地沒有緩存partner數據庫 此時就會發生故障

  5. 為了避免4的情況 驅動程序支持我們在jdbcUrl中提供一個failoverPartner作為partner.

注意:當failoverPartner只在第一次連接數據庫時有作用,當連上數據庫後會緩存partner數據庫 並覆蓋failoverPartner

jdbc參考例子

高可用步驟:

(儘量在一個dns域名下 ,計算機名一定要不同!)

  1. 配置目標數據庫為完整恢復模式(屬性-選項-恢復模式-完整)

  2. (3臺機子 包括連接客戶端)配置hosts,防火牆開啟端口出`入站

  3. sqlserver配置管理器 開啟TCP/IP功能

  4. 數據庫方面-外圍應用服務器 開啟RemoteDacEnabled

  5. 主數據庫 完整備份 事務日誌備份

  6. 鏡像數據庫 還原 (RESTORE WITH NORECOVER)

  7. 創建證書 用於其他機子登陸 配置登陸賬戶

  8. 測試 手動故障轉移

=====創建證書 端點 導出證書=============

USE master

GO

CREATE MASTER KEY ENCRYPTION BY PASSWORD = '!szkj1234567';

USE master

GO

CREATE CERTIFICATE Host_A_Cert

WITH Subject = 'Host_A Certificate',

Expiry_Date = '2099-1-1'; --過期日期

/*創建端點*/

IF NOT EXISTS ( SELECT 1

FROM sys.database_mirroring_endpoints )

BEGIN

CREATE ENDPOINT site STATE = STARTED AS TCP ( LISTENER_PORT = 5022,

LISTENER_IP = ALL ) FOR DATABASE_MIRRORING ( AUTHENTICATION =

CERTIFICATE Host_A_Cert, ENCRYPTION = REQUIRED Algorithm AES, ROLE =

ALL );

END

BACKUP CERTIFICATE Host_A_Cert

TO FILE = 'e:\Host_A_Cert.cer';

======導入證書=================

CREATE LOGIN Host_B_Login WITH PASSWORD = '!szkj1234567';

CREATE USER Host_B_User For Login Host_B_Login;

CREATE CERTIFICATE Host_B_Cert

AUTHORIZATION Host_B_User

FROM FILE = 'e:\Host_A_Cert.cer';

/*賦予connect權限*/

GRANT CONNECT ON ENDPOINT::site TO [Host_B_Login];

/*設置partner(鏡像必須處於正在還原狀態)*/

ALTER DATABASE test

SET PARTNER = 'TCP://WIN-75.airportsz.com:5022';

GO

======反向過程=================

/*

--刪除主密鑰

USE master;

DROP MASTER KEY

--刪除證書

USE master;

DROP CERTIFICATE HOST_A_cert

DROP CERTIFICATE HOST__cert

--刪除端點

drop endpoint site

---取消正在還原狀態

alter database db_name set partner off;

restore database db_name with recovery;

---刪除登陸賬戶 用戶 證書

drop certificate Host_B_Cert

drop login Host_B_Login

drop user Host_B_User

*/

USE master;

ALTER DATABASE test SET PARTNER RESUME; --恢復鏡像

ALTER DATABASE test SET PARTNER FAILOVER; --切換主備

相關推薦

推薦中...