在一臺機器的3個實例中進行數據庫鏡像

預備知識: 數據庫鏡像基本概念
http://msdn2.microsoft.com/zh-cn/library/ms177412.aspx
http://msdn2.microsoft.com/zh-cn/library/ms189852.aspx

--------一 準備工作----------
-------(一) 安裝三個實例,分別爲:-----
SZDXBAK/SQLSERVER(默認實例), 作爲主體服務器
SZDXBAK/SQL2 作爲鏡像服務器
SZDXBAK/WITNESS 作爲鑑證服務器
注: 所有實例服務使用SQLService賬戶啓動

------(二) 數據庫準備-------
--1 在主體服務上創建測試數據庫 RecoveryDb
並創建一個完全備份
--2 在鏡像服務上使用NORECOVERY選項恢復數據庫,
恢復後數據庫狀態爲'正在還原'


-----  二 創建數據庫鏡像端點----
--1 在主體數據庫(SQLSERVER實例)上創建端點,用於夥伴通訊
CREATE ENDPOINT DbMirroring
STATE=STARTED
AS TCP(LISTENER_PORT=5022)
FOR DATABASE_MIRRORING(ROLE=PARTNER,ENCRYPTION=SUPPORTED)
go

--2 在鏡像數據庫(SQL2實例)上創建端點,用於夥伴通訊
CREATE ENDPOINT DbMirroring
STATE=STARTED
AS TCP(LISTENER_PORT=5033)
FOR DATABASE_MIRRORING(ROLE=PARTNER,ENCRYPTION=SUPPORTED)
go

--3 在鑑證服務器(WITNESS實例)上創建端點,用於鑑證通訊
CREATE ENDPOINT DbMirroring
STATE=STARTED
AS TCP(LISTENER_PORT=5022)
FOR DATABASE_MIRRORING(ROLE=WITNESS,ENCRYPTION=SUPPORTED)
go

ALTER ENDPOINT DbMirroring STATE=STARTED
go

--4 檢查端點配置,可分別在不同服務器上運行以下查詢
SELECT * FROM sys.database_mirroring_endpoints

-----  三 配置數據庫鏡像安全性--------

--1 主體數據庫(SQLSERVER實例)
use master
go
GRANT CONNECT ON ENDPOINT::"DbMirroring" TO "SZDXBAK/SQLService"
go

--2 鏡像數據庫(SQL2實例)
use master
go
GRANT CONNECT ON ENDPOINT::"DbMirroring" TO "SZDXBAK/SQLService"
go

--3 鑑證服務器(WITNESS實例)
use master
go
GRANT CONNECT ON ENDPOINT::"DbMirroring" TO "SZDXBAK/SQLService"
go


----- -四 啓動數據庫鏡像-----
--注意配置順序
--1 在鏡像數據庫(SQL2實例)上,指定到主體服務器(SQLSERVER實例)的夥伴端點
ALTER DATABASE RecoveryDb
SET PARTNER=N'TCP://SZDXBAK:5022'
go

--2 在主數據庫(SQLSERVER實例)上,指定到鏡像服務器(SQL2實例)的夥伴端點
ALTER DATABASE RecoveryDb
SET PARTNER=N'TCP://SZDXBAK:5033'
go

--注: 以上兩步完成後,已經配置爲高保護級別性模式
--3 如果要創建高可用性模式:在主數據庫上(SQLSERVER實例),指定鑑證服務器端點
ALTER DATABASE RecoveryDb
SET WITNESS=N'TCP://SZDXBAK:5044
go

--4 在高可用性模式下:配置數據庫鏡像事務安全級別
ALTER DATABASE RecoveryDb SET SAFETY FULL
go

--- 五  查看數據庫鏡像的配置狀態
--1 通過Management Studio 對象資源管理器,查看主體數據庫,鏡像數據庫狀態
--2 通過Management Studio 對象資源管理器中的數據庫屬性查看狀態
--3 通過系統目錄視圖查看數據庫鏡像配置情況
SELECT * FROM sys.database_mirroring_endpoints
SELECT * FROM sys.database_mirroring_endpoints
WHERE database_id = (SELECT database_id FROM sys.database
WHERE name='RecoveryDb')

以上配置完成後,主體數據庫的狀態爲:主體,已同步
鏡像數據庫的狀態爲:鏡像,已同步/正在還原..


--- 六 服務器角色切換測試----
預備知識
數據庫鏡像角色切換
自動故障轉移
  只針對高可用性模式
  SAFETY=FULL
手動故障轉移
  針對高可用性模式和高保護級別性模式
  SAFETY=FULL
強制服務
  只針對高性能模式
  SAFETY=OFF

---(一) 自動故障轉移
在主體服務器上,斷開網絡連接,通過數據庫資源管理器查看主體/鏡像服務器上數據庫的狀態
鏡像服務器狀態: 主體,已斷開連接
恢復主體服務器
此時原來主體服務器(SQLSERVER實例)變爲鏡像服務器 狀態爲:鏡像,已同步/正在還原..
原來鏡像服務器(SQL2實例)變爲主體服務器 狀態:主體,已同步


---(二) 手動故障轉移
-- 主體服務器上執行故障轉移過程
USE MASTER
go
ALTER DATABASE RecoveryDb SET PARTNER FAILOVER
go
執行完後主體服務器狀態變爲: 鏡像,已同步/正在還原..
鏡像服務器狀態變爲 主體,已同步

---(三) 強制服務,有可能造成數據丟失
--1) 在鏡像服務器上,取消對鑑證服務器的配置
ALTER DATABASE RecoveryDb SET WINTESS OFF

--2) 在鏡像服務器上,配置事務安全性爲OFF
ALTER DATABASE RecoveryDb SET SAFETY OFF

--3) 斷開主體服務器,在鏡像服務器上,強制服務 進行角色切換
ALTER DATABASE RecoveryDb SET PARTNER FORCE_SERVICE_ALLOW_DATA_LOSS
完成後數據庫狀態爲 主體,已斷開連接


-----七 如何查詢鏡像服務器上的數據: 在鏡像服務器上創建數據庫快照
--1 在鏡像服務器上,創建數據庫快照
CREATE DATABASE ReconveryDb_snap_1
ON (NAME=RecoveryDb,FILENAM='H:/seconddb/recovery_snap1.ss')
AS SNAPSHOT OF RecoveryDb

--2  訪問鏡像數據庫
USE ReconveryDb_snap_1
go
SELECT * FROM test 

發佈了14 篇原創文章 · 獲贊 1 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章