學習筆記(十五)——鏡像的知識點與注意事項

學習筆記(十五)——鏡像的知識點與注意事項數據庫

1、基礎知識安全

     一、SQL Server鏡像只有兩種模式:高安全模式和高性能模式。兩種模式的主要區別在於在事務提交後的操做。服務器

       在高性能模式下,主體服務器不須要等待鏡像服務器響應便可提交事務。異步

  在高安全性模式,須要把事務同步到鏡像並獲得響應後才最終提交主體服務器的事務。性能

二、SQL Server鏡像狀態可能包含下面幾種:學習

  • SYNCHRONIZING:正在同步,一般在第一次啓用數據庫鏡像時出現,表示鏡像服務器正在追上主體服務器的進度。
  • SYNCHRONIZED:已經同步完畢,大部分時間都是這種狀態,一旦有爆發性的事務傳輸到鏡像數據庫,狀態會從SYNCHRONIZED轉變成SYNCHRONIZING。在高安全性模式下,這種狀態一般不會致使數據丟失,僅表示鏡像服務器正在同步,可是在高性能模式下,可能有數據丟失的風險。
  • SUSPENDED:掛起,當主體服務器不發送事務到鏡像服務器時出現,在Failover發生後會出現這種狀態(若是鏡像環境依舊運行,僅使用Failover則不出現,可是若是鏡像庫斷開鏈接,則會出現)。手動暫停鏡像會話或者redo 日誌發生錯誤時都會出現。
  • PENDING_FAILOVER:僅當主體服務器變成鏡像服務器而且斷開用戶鏈接時,會在原主體服務器出現這種狀態。在這種狀態下,主體服務器和鏡像服務器都會表現這種狀態。可是見證服務器會出現:CONNECTED/DISCONNECTED/UNKNOWN的其中一種狀態。
    • CONNECTED:表明見證服務器能連到其中一個夥伴,另外兩種表明不能連到夥伴服務器,這種狀況下,數據庫會變成不可用,若是鏡像環境使用了見證,而鏡像服務器爲DISCONNECTED,而且鏡像服務器奔潰,那麼數據庫(即便在主體服務器上)都會變得沒法訪問。因此當見證爲disconnected,能夠關閉見證,從而禁用仲裁,使用ALTER DATABASE <DB> SET WITNESS OFF實現。
    • DISCONNECTED:當鏡像環境中的夥伴均沒法鏈接對方時出現。

  可使用sys.database_mirroring目錄視圖查看鏡像信息。加密

2、示例spa

一、分別在主體服務器、鏡像服務器上建立端點設計

IF EXISTS

(SELECT 1

FROM sys.database_mirroring_endpoints AS E

DROP ENDPOINT ep_EduBase_Mirroring;

GO

CREATE ENDPOINT ep_EduBase_Mirroring

STATE=STARTED // 端點將當即啓動

AS TCP(LISTENER_PORT=5022) //監聽TCP端口

FOR DATABASE_MIRRORING

(AUTHENTICATION=WINDOWS NEGOTIATE      //身份驗證方式設爲Windows協商(即在NTLM和KERBEROS之間選擇)

,ENCRYPTION=SUPPORTED      //若通訊端點支持加密,則鏡像過程使用加密

,ROLE=PARTNER);       PARTNER     //角色用於主體/鏡像服務器;WITNESS角色用於見證服務器;

二、經過完整備份、日誌備份(如有必要)、還原,將數據庫從主體服務器複製到鏡像服務器上日誌

DECLARE @FullBkDesc VARCHAR(MAX);

SELECT

@FullBkDesc = 'Full backup on principal server for database mirroring at '+CONVERT(VARCHAR,GETDATE(),120)+'.';

BACKUP DATABASE EduBase2017

TO DISK='C:\EduBase2017\Mirroring\EduBase_FullBackup_ForMirroring.bak'

WITH

  INIT

,Name = 'EduBase_FullBackup'

,DESCRIPTION = @FullBkDesc; //完整備份

GO

  DECLARE @LogBkDesc VARCHAR(MAX);

SELECT

@LogBkDesc = 'Log backup on principal server for database mirroring at '+CONVERT(VARCHAR,GETDATE(),120)+'.';

BACKUP LOG EduBase2017

TO DISK='C:\EduBase2017\Mirroring\EduBase_LogBackup_ForMirroring.bak'

WITH

INIT

,Name = 'EduBase_LogBackup'

,DESCRIPTION = @LogBkDesc;

//日誌備份:若在完整備份後,主體服務器的數據庫發生更改,則需進一步備份、還原日誌,以便保持日誌鏈完整

 

//爲便於鏡像服務器訪問主體服務器的備份文件,可在cmd控制檯將備份文件所在位置設爲共享。

RESTORE HEADERONLY

FROM DISK='\\WinSvr-1\EduBase2015Mirroring\EduBase2015_FullBackup_ForMirroring.bak'; 鏡像服務器經過統一命名約定(UNC)地址訪問主體服務器中的備份文件

RESTORE DATABASE EduBase2015

FROM DISK = '\\WinSvr-1\EduBase2015Mirroring\EduBase2015_FullBackup_ForMirroring.bak' WITH

FILE = 1

,REPLACE

,NORECOVERY; 從完整備份中還原

GO

RESTORE HEADERONLY

FROM DISK= '\\WinSvr-1\EduBase2015Mirroring\EduBase2015_LogBackup_ForMirroring.bak'; RESTORE DATABASE EduBase2015

FROM DISK='\\WinSvr-1\EduBase2015Mirroring\EduBase2015_LogBackup_ForMirroring.bak' WITH

FILE = 1

,NORECOVERY;
// 從日誌備份中還原  最後一步備份務必指定非還原狀態,以確保鏡像服務器的數據庫不可用

//鏡像數據庫已包含主體數據庫中的數據庫用戶,但鏡像服務器未包含映射至這些數據庫用戶的登陸,故需另行建立

三、分別在鏡像服務器、主體服務器的相應數據庫上啓動鏡像會話

ALTER DATABASE EduBase2015

SET PARTNER='TCP://WINSVR-1.EDUBASE.COM:5022'; //在鏡像服務器的數據庫上,設置主體服務器的完整域名、監聽端點

ALTER DATABASE EduBase2015

SET PARTNER='TCP://WINSVR-2.EDUBASE.COM:5022'; //在主體服務器的數據庫上,設置鏡像服務器的完整域名、監聽端點

ALTER DATABASE EduBase2015 //在主體服務器中設置鏡像安全性

SET SAFETY FULL; //完整安全性:主體服務器的數據庫中的事務在提交前,必須同步寫入鏡像服務器的數據庫若設爲OFF,則容許異步寫入,可能致使丟失

ALTER DATABASE EduBase2015 //在主體服務器中設置鏡像安全性

SET SAFETY FULL;

//在客戶端的ADO.Net的鏈接字符串中,增長Failover Partner=鏡像服務器名,ADO.Net將自動重定向服務器

四、在主體服務器的數據庫中修改數據

USE EduBase2015;

UPDATE Course  

 SET Name='計算機導論(1)'

 WHERE Name='計算機導論';

UPDATE Course  

 SET Name='C語言程序設計(2)'

 WHERE Name='C語言程序設計';

//亦可在客戶端中進行操做

五、假設發生故障,此時在主體服務器上手動設置故障轉移,從而切換主體服務器、鏡像服務器的角色

ALTER DATABASE EduBase2015

SET PARTNER FAILOVER;

六、在當前的主體服務器(即先前的鏡像服務器)的數據庫中檢查數據是否一致,隨後修改數據

USE EduBase2015;

SELECT * FROM Course;

UPDATE Course  

 SET Name='VB語言程序設計(3)'

 WHERE Name='VB語言程序設計';

//亦可在客戶端中進行操做

七、假設主體服務器的數據庫遇到大量數據寫入,此時掛起鏡像會話,隨後繼續鏡像會話

ALTER DATABASE EduBase2015

SET PARTNER SUSPEND;

ALTER DATABASE EduBase2015

SET PARTNER RESUME;

八、當前的鏡像服務器(即先前的主體服務器)已排除故障,此時在當前的主體服務器(即先前的鏡像服務器)上手動設置故障轉移,從而切換主體服務器、鏡像服務器的角色,隨後檢查數據是否一致

ALTER DATABASE EduBase2015

SET PARTNER FAILOVER;

USE EduBase2013;

SELECT * FROM tb_Course;

九、中止鏡像會話

ALTER DATABASE EduBase2015

SET PARTNER OFF;
相關文章
相關標籤/搜索