SQL Server 2008 R2 Mirroring 建立初探

  • 16321
  • 0

SQL Server 2008 R2 Mirroring 建立初探

目標

高可用性Mirroring 的Server端建置介紹

0. 環境介紹

  a. AD Server + Storage Server (簡稱Storage Server)

      OS : Windows 2008 Server R2 (64bit)

   b. SQL Server 1

      OS : Windows 2008 Server R2 (64bit)

SQL : SQL Server 2008 R2

   c. SQL Server 2

      OS : Windows 2008 Server R2 (64bit)

SQL : SQL Server 2008 R2

   d. Witness

      OS : Windows 2008 Server R2 (64bit)

SQL : SQL Server 2008 R2

1. 概念解紹

鏡像其實不難,但是若能在開始設定時,對相關細節有一個初步的了解,就能夠很快的了解其運作原理。因此,讓我們來看看Mirroring的概念吧!

clip_image002

在高可用性Mirroring中,就是除了主體與鏡像Server外,多了一個見證者(Witness)。

那主體與鏡像Server(可以容錯互換腳色的),我們就稱之為夥伴伺服器(Partner)。

為達成任務,這三個Server必須知道對方的存在,知道對方的角色,這才能能夠相互溝通。

而在SQL Server中,”門牌”這角色就是由”端點”擔任。藉由對方端點,讓我們可以知道如何找到他,這才有機會開始溝通。

既然是門牌,就會有中國人說的…”門神”,用來守護這個門的進出。因此,端點也需要有認證的機制,該機制的細節,我們會在後面說明,我們只需要知道,共有兩種:”國內人士” (Windows認證), “外國人士”(憑證認證)。想想跟出入境大廳的管理方式也沒有甚麼差別…。

在上圖中,由於預設是由”Windodws”認證,因此溝通時候都會用本身的服務啟動者作為連入身分的識別基礎。

至於”端點”的識別方式則是”TCP://Server Name.DomainName:特定Port”。

clip_image004

因為要互通,所以每台Server都必須做以下幾件事情

a. 為遠端Server建立帳號,這樣他們連過來才有權限基礎。

b. 建立端點,這樣別人才能連過來。

c. 授權這些帳號可連接此端點。這樣守門員才會放他們過關。

在Mirroring端,則需要事先針對要Mirroring 的DB 準備好。這樣才能有同步的基礎。

最後我們用圖式輕鬆的來說明不同認證模式下,溝通的差異。

clip_image006

clip_image008

2. 建立鏡像前的準備動作

請先建立好鏡像伺服器端的DB

P.S.

1. 詳細操作過程請參考後面的”附註”中的” 建立資料庫 for 鏡像”

2. 這是精靈沒有辦法幫我們做的,所以…請捲起袖子,自己動手。

 

3. 建立鏡像

建立登入Principle Server(主要伺服器),並選擇需要鏡像的資料庫。

image

利用精靈設定參數。

參數內容有:

各Server的端點資料,登入權限,執行服務的啟動者。

clip_image012

clip_image013

由於我們要建立”高安全性”,所以選擇需要見證伺服器。

clip_image014

clip_image015

 

各位可以發現,這些資料都將用於建立”端點”。

clip_image016

clip_image017

但各位是否發現,除了選ServerName外,精靈刻意的確認我們是否能夠登入該Server。

這是因為,在最後精靈必須用這帳號(不論是Windows認證 或 SQL 帳號認證),幫我們到該Server去建立端點與其他Server的登入帳號。

clip_image018

clip_image019

見證端也是相同的設定原理。

clip_image020

clip_image021

clip_image022

在這邊,要指名各Server Instance 的服務啟動者。

這樣精靈才有辦法幫我們到各Server去建立帳號,舉例來說,在主伺服器,精靈就會建立SQLStart2 , SQLStart3 並授予可連接主伺服器的節點。

clip_image023

這資料可以清楚的看到,精靈預計要幫我們做的事情。

clip_image024

clip_image025

clip_image027

啟動時,可能會發生說鏡像端的資料庫未準備完成的錯誤,請參考後面的”附註”中的” 建立資料庫 for 鏡像”。

讓我們看看啟動後的差異。

在主Server,狀態是(主體,已同步處理)

clip_image028

在鏡像Server,狀態是(鏡像,已同步處理/正在還原…)

clip_image029

 

附註:

1. 建立資料庫 for 鏡像

http://msdn.microsoft.com/zh-tw/library/ms189047.aspx

  a. 完整備份

clip_image032

clip_image034

記得,該SQL Instance 啟動服務者,必須對目的目錄有寫入的權限,否則寫入將會失敗。

clip_image036

b. 備份Log

clip_image038

clip_image040

將這兩個檔案複製到鏡像Server,準備復原該資料庫,作為鏡像資料庫的基礎。

clip_image041

clip_image042

clip_image045

       記得這邊要選擇With NORECOVERY

clip_image047

clip_image049

      完成後會發現,該資料庫的狀態為(正在還原…)。

clip_image050

接下來,還原Log檔案。

clip_image052

clip_image054

       記得這邊要選擇With NORECOVERY

clip_image056

clip_image058

      完成後該資料庫的狀態為(正在還原…)。

clip_image050[1]

================================================================

以前電腦老師跟我說 : 這條路是一條不歸路。

十五年後,發現.....老師說對了! 

以前電腦老師跟我說 : 不要把興趣當壓力。

十五年後,發現.....老師又說對了! 

老師在講,我都沒在聽......   Orz