天天看點

SQL Server 2012配置Always On可用性組

一、AlwaysOn簡介

AlwaysOn可用性組是SQL Server 2012中提供的全新功能,確定了應用程式資料的可用性,實作零資料丢失。AlwaysOn可用性組技術融合了資料庫群集和資料庫鏡像的優點,此技術的一大好處是提供非共享存儲,可以避免因為存儲的單點故障而造成的整個可用性方案失效。

AlwaysOn可用性組基于資料庫(組)級别,是将一組使用者資料庫(可以是一個或多個)劃到一個組中。每組可用性資料庫都由一個可用性副本承載。可用性副本包括一個主副本和一到四個輔助副本。 主副本用于承載主資料庫,輔助副本則承載一組輔助資料庫并作為可用性組的潛在故障轉移目标。主副本使主資料庫可用于用戶端的讀寫連接配接,實作對資料庫的更改操作。 同時在資料庫級别進行同步。 主副本将每個主資料庫的事務日志記錄發送到每個輔助資料庫。 每個輔助副本緩存事務日志記錄,然後将它們還原到相應的輔助資料庫。 主資料庫與每個連接配接的輔助資料庫獨立進行資料同步。 是以,一個輔助資料庫可以挂起或失敗而不會影響其他輔助資料庫,一個主資料庫可以挂起或失敗而不會影響其他主資料庫。

部署 AlwaysOn 可用性組需要一個 Windows Server 故障轉移群集 (WSFC) 群集。 給定可用性組的每個可用性副本必須位于相同 WSFC 群集的不同節點上。 部署AlwaysOn可用性組時,系統會為每個可用性組建立一個 WSFC 資源組。WSFC 群集将監視此資源組,判斷節點間的狀态,以便評估主副本的運作狀況。 當發生失敗時實作故障的轉移,針對 AlwaysOn 可用性組的仲裁基于 WSFC 群集中的所有節點,而與某一給定群集節點是否承載任何可用性副本無關。

使用者可以通過建立一個可用性組偵聽器來提供到給定可用性組的主副本的用戶端連接配接。 “可用性組偵聽器”采用DNS名稱的方式連接配接給定可用性組的資源,以便将用戶端連接配接定向到相應的可用性副本。

對于每個可用性副本,AlwaysOn所支援的事務送出模式分為同步送出模式或異步送出模式。在異步送出模式下,主副本無需等待确認異步送出輔助副本已強制寫入日志,便可送出事務。 異步送出模式可最大限度地減少輔助資料庫上的事務滞後時間,但允許它們滞後于主資料庫,是以可能會導緻某些資料丢失。此可用性模式是一種災難恢複解決方案,适合于可用性副本的分布距離較遠的情況;所謂同步送出模式是指在送出事務之前,同步送出主副本要等待同步送出輔助副本确認它已完成強制寫入日志。 同步送出模式可確定在給定的輔助資料庫與主資料庫同步時,充分保護已送出的事務。 這種保護的代價是延長事務滞後時間。此可用性模式相對于性能而言更強調高可用性和資料保護,當主副本和輔助副本距離較近時可以使用此方法,解決時時同步的問題。

當Windows群集觸發故障轉移後,故障轉移目标(原先的輔助副本)能夠接管主副本角色,對自己管理的資料庫進行恢複操作,使它們作為新的主資料庫。原先的主副本如果在故障轉移後還可用,就會成為輔助副本,它上面的資料庫就成為了輔助資料庫。

故障轉移形式是由主副本和故障轉移目标兩者的模式所共同決定的。兩個副本間要發生自動故障轉移,需要兩者都配置為同步送出模式+自動故障轉移模式。兩者中有一個配置了手動故障轉移,則自動故障轉移就不能發生。兩者間有一個配置了異步送出模式,則它們之間就隻能發生強制故障轉移。

強制故障轉移可能會丢失資料。自動故障轉移和手動故障轉移會保證資料的安全。為了防止丢失資料,自動故障轉移和手動故障轉移都要求故障轉移目标是使用同步送出模式的輔助副本且當時處于SYNCHRONIZED狀态。如果已處于SYNCHRONIZED狀态的輔助副本發出強制故障轉移指令,其行為與手動故障轉移時的行為相同。對于異步送出模式的輔助副本,無論資料是否已經達到同步,它永遠隻會處于SYNCHRONIZING狀态,于是它隻能支援強制故障轉移這一種形式。

相對于資料庫鏡像,AlwaysOn的一個重要優勢就是可以将輔助資料庫配置成可讀模式,這極大地增強了資料庫整體的伸縮性。通過将隻讀請求分流到輔助資料庫,主副本的工作負載得到了減輕,讀和寫之間的沖突可以得到緩解,輔助副本的硬體資源也能得到利用。同時,通過AlwaysOn的“隻讀路由”功能,隻讀操作可以動态地被轉向輔助副本。在一定程度上,可以實作對終端使用者透明。利用這個功能,SQL Server可以實作工作負荷的Scale-out(由多台SQL Server同時響應用戶端發來的工作負載)。當用戶端連接配接使用Listener的名字來通路SQL Server執行個體時,隻讀路由功能可以将來自用戶端的隻讀請求從主副本上自動重定向到可讀的輔助副本上去執行。用戶端應用程式隻需要確定連接配接的伺服器名是Listener的名字,而無須去關心背後到底是哪個副本響應這個請求。這個功能可以自動分流一部分主副本的工作負載,使得主副本有更多的資源處理其他讀寫請求。

要讓隻讀操作能“透明”地被自動轉向輔助副本,必須解決下面三個問題:

用戶端要标明自己發來的操作是“隻讀”操作。這個判定是程式開發員在編寫程式的時候,通過ApplicationIntent關鍵字指定的,ApplicationIntent=ReadOnly,ApplicationIntent=ReadWrite

輔助資料庫要被配成可讀模式。

用戶端的連接配接,要能夠被重定向到可讀輔助副本。AlwaysOn是用“隻讀路由”機制來實作的。

二、部署環境準備

1、部署環境

2、建立故障轉移群集,使用共享磁盤作為仲裁盤。如果有3個以上節點,可以不必使用仲裁盤,但是使用仲裁盤仍是保障群集良好運作的推薦方式

<a href="http://s4.51cto.com/wyfs02/M00/83/14/wKiom1dqOWzj1JjNAABPuBrV_MU321.png" target="_blank"></a>

<a href="http://s4.51cto.com/wyfs02/M01/83/13/wKioL1dqOWzSKVk8AADwrA1wubw940.png" target="_blank"></a>

3、在兩個節點都獨立安裝SQL2012SP1,注意是獨立安裝,而非群集節點安裝

<a href="http://s4.51cto.com/wyfs02/M01/83/14/wKiom1dqOW3xfXlIAAEd2azkxVk967.png" target="_blank"></a>

4、在兩個節點都啟用SQL Server Always On可用性組

<a href="http://s2.51cto.com/wyfs02/M02/83/13/wKioL1dqOW6j59PCAACs4vstKs4400.png" target="_blank"></a>

5、在SQL2012-01上建立TestDB,并設定恢複模式為完整

<a href="http://s4.51cto.com/wyfs02/M02/83/14/wKiom1dqOXCR5WdVAAEkZdpD8aY329.png" target="_blank"></a>

6、為TestDB做一次完整備份

<a href="http://s4.51cto.com/wyfs02/M00/83/13/wKioL1dqOXGgvwr9AAB6P3hdBYs874.png" target="_blank"></a>

<a href="http://s5.51cto.com/wyfs02/M01/83/13/wKioL1dqOXLDNVBTAAAg2s9PSEM911.png" target="_blank"></a>

7、将存儲備份包的目錄共享出來并設定相應的權限

<a href="http://s5.51cto.com/wyfs02/M01/83/14/wKiom1dqOXOSZp2pAADM1GnNq58521.png" target="_blank"></a>

三、配置Always On可用性組

1、使用向導建立可用性組

2、指定可用性組名稱

<a href="http://s5.51cto.com/wyfs02/M01/83/13/wKioL1dqOXfh6jCVAABq_VJtiHA509.png" target="_blank"></a>

3、選擇要添加到可用性組中的資料庫

選要添加到可用組中的資料庫。這些資料庫将會成為一個整體一同發生故障轉移。在一個可用性組裡最多可以添加100個資料庫。在資料庫名的右側,會顯示資料庫的狀态。如果該資料庫的狀态不滿足可用組的要求,那麼就無法勾選這個資料庫。資料庫要滿足的要求包括:

需要是使用者資料庫,系統資料庫不能加入可用性組。

資料庫可以讀寫。隻讀的資料庫不允許加入可用性組。

資料庫要處于多使用者模式。

資料庫沒有使用AUTO_CLOSE。

資料庫的恢複模式是完全恢複。

資料庫已經做過完整備份。

不屬于任何其他的可用性組。

資料庫上沒有配置資料庫鏡像。

<a href="http://s4.51cto.com/wyfs02/M02/83/13/wKioL1dqOXizhNacAAB4Rlg9PqQ972.png" target="_blank"></a>

4、指定副本

點選添加副本,把第二個節點SQL2012-02添加進來(最多可以有5個可用性副本),并指定每個可用性副本的模式:

同步送出模式:該模式決定了主副本和輔助副本之間是否要保持完全同步。最多可以有3個同步送出副本。

自動故障轉移模式:該模式決定了當主副本失敗時是否将可用性組轉移到指定的輔助副本上。最多可以将兩個可用性副本配置為自動故障轉移。

可讀輔助副本:該模式決定了該副本作為輔助副本時是否可讀。

5、配置端點

端點是AlwaysOn可用性組的重要組成部分,它的主要作用有兩個:

(1)主副本和輔助副本之間通過端點傳送日志塊和消息,同步資料。

(2)主副本和每個輔助副本通過端點互相發送ping來确定彼此是否互相連通

端點的配置按預設即可。

6、指定備份首選項和優先級

首選輔助副本:如果有任何輔助副本可用,備份都應該在輔助副本上執行。如果主副本是唯一還處于線上狀态的副本,那麼備份才會在主副本上執行。

副本備份優先級:1表示最低優先級,100表示最高優先級。預設情況下,所有輔助副本都具有相同的備份優先級,如果保持這個設定,Always On就必須使用其他因素來決定執行備份的副本。

7、建立偵聽器

隻能通過 SQL Server 為每個可用性組建立一個偵聽器。 通常情況下,每個可用性組隻需要一個偵聽器。偵聽器就是一個虛拟的網絡名稱,可以通過這個虛拟網絡名稱通路可用性組,而不用關心連接配接的是哪一個節點,它會自動将請求轉發到主節點,當主節點發生故障後,輔助節點會變為主節點,偵聽器也會自動去偵聽主節點。

建立偵聽器需要提供:

(1)IP位址。建議使用靜态IP位址

(2)網絡名(DNS名)。確定該名字在網絡上是唯一的。這個名字就是應用程式用來連接配接主副本的接口,它和任意一個副本的伺服器名都不相同。

(3)端口号。需要指派一個伺服器上未被使用的端口。這樣副本執行個體才能成功綁定和監聽這個端口。

其他的副本通過這個共享目錄獲得資料庫的備份并在各自的執行個體上進行還原。這個和日志傳送進行初始化的步驟很像。這裡要確定每個副本執行個體的服務賬戶對共享目錄和本地目錄有合适的讀寫權限。另外要注意,通過這種方式初始化,要確定主副本上存放主資料庫檔案的路徑在輔助副本上也存在。

<a href="http://s2.51cto.com/wyfs02/M01/83/14/wKiom1dqOYPzSqi8AACtQv4094o834.png" target="_blank"></a>

9、驗證可用性組

<a href="http://s5.51cto.com/wyfs02/M02/83/13/wKioL1dqOYfR2PEvAADVGzOKFMg568.png" target="_blank"></a>

10、可用性組摘要

<a href="http://s4.51cto.com/wyfs02/M00/83/13/wKioL1dqOYfzFyLVAACz8euHJLk293.png" target="_blank"></a>

<a href="http://s1.51cto.com/wyfs02/M02/83/14/wKiom1dqOYqT8USGAAC1wMll5ws142.png" target="_blank"></a>

11、完成可用性組的建立

四、可用性組建立完成後檢查

1、在故障轉移群集中确認可用性組

已建立群集資源組AlwaysOnGrp01,并承載在SQL2012-01節點上。

<a href="http://s3.51cto.com/wyfs02/M00/83/13/wKioL1dqOZDg59VbAAHdh3hefyk537.png" target="_blank"></a>

本文轉自    jianlong1990  部落格,原文連結:        如需轉載請自行聯系原作者