高可用性與高效能的完美表現 從實務案例探討SQL...

Preview:

Citation preview

高可用性與高效能的完美表現從實務案例探討SQL Server 2014 AlwaysOn

許致學

資深合夥顧問

就是這個工作室

系統發生異常,你的反應時間是…

反應時間 –從異常發生,移轉異常/修復異常到重新恢復正常運作

秒 分鐘 小時 天

等級 反應時間

A + <= 30 秒

A <= 5分鐘

B <= 1 小時

C <= 4 小時

D >> 4 小時

可接受的條件下

1 分鐘以內

停機時間為 5 分鐘 不得有任何

訂單資料遺失

可以多快完成復原?

(停機時間?)

資料可以復原到哪個時間點?

(多少的資料損失量?)

可用度等級 RTO RPO

等級 A >99.99%

(小於1小時)

小於5分鐘

等級 B 99.9% - 99.99%

(1至 8.5 小時)

5分鐘至8.5小時

等級 C (<99.9%)

(數小時至數天)

數小時至數天

等級 ARTO

RPO

停機時間 –從異常偵測,移轉異常/修復異常到重新恢復正常運作 (RTO)

秒 分鐘 小時 天

資料庫鏡像高可用

AlwaysOn容錯叢集

資料庫鏡像高效能

複寫點對點

交易記錄檔傳送

備份/還原線上還原

卸離/附加資料庫快照可能的資料損失量(R

PO

)

分鐘

熱備援

暖備援

冷備援

AlwaysOn可用性群組

無資料損失(RPO=0)

移轉單位 自動移轉 (RTO)

Inst DB Tab

讀取 多個備援

寫入

高可用度方案

交易記錄檔傳送

資料庫鏡像 同步

非同步

AlwaysOn

可用性群組同步

非同步

AlwaysOn 容錯叢集

交易式複寫

點對點複寫

RPO 移轉機制 備援使用

硬體 程式效能影響

管理性

低 低 低

低 高 低

低 低 低

低 高 低

低 低 低

高 ** 低 ** 低 **

低 低 高

低 低 高

費用

* 資料庫鏡像和交易記錄檔傳送可搭配資料庫快照或STANDBY模式提供唯讀存取** 搭配 SAN 解決方案

高可用性與災難復原技術

支援的節點數量

SQL Server 標準版 SQL Server 企業版

僅支援 2 個節點 依作業系統版本(最多 64 個節點)

(延展叢集, stretch cluster)

(Indirect Checkpoint)

SQL Server 2012 增強功能

Active Passive

資料庫磁碟

TARGET_RECOVERY_TIME

SQL Server 2012

彈性容錯移轉原則 FailureConditionLevel

等級 條件 每個等級包括前一個等級的狀況,任何一個狀況就會觸發

0沒有自動的容錯移轉或重新啟動

指出任何失敗狀況都不會自動觸發容錯移轉或重新啟動這個等級只會用於系統維護的用途

1伺服器關閉的容錯移轉或重新啟動

SQL Server 服務已關閉

2伺服器無回應的容錯移轉或重新啟動

SQL Server 執行個體沒有回應 (無法在 HealthCheckTimeout設定內接收來自 sp_server_diagnostics 的資料)

3發生重大伺服器錯誤的容錯移轉或重新啟動

sp_server_diagnostics 傳回「系統錯誤」

4發生一般伺服器錯誤的容錯移轉或重新啟動

sp_server_diagnostics 傳回「資源錯誤」

5任何合格失敗狀況的容錯移轉或重新啟動

sp_server_diagnostics 傳回「query_processing錯誤」

為何會發生應用程式無法連線

容錯移轉叢集,但不會自動移

轉?

高可用性需求監控系統運作

max worker threads

要求產生工作

工作對應工作者執行緒

耗用CPU時間或等候

Requests TasksWorkerThreads

EXEC sp_configure 'max worker threads', 2048

max worker threads 預設為 0512 + (Cores-4) * 16

4 Cores 512 max worker threads 16 Cores 704 max worker threads

確保服務等級

定期模擬存取資料庫

DB1

LUN1

… 1221

Log1

LUN2

DB2

LUN3

Log2

LUN4

DB12

LUN23

Log12

LUN24

支援 Windows Cluster Shared Volumes (Windows Server 2012+)

叢集共用磁碟區的部署方式

SMB

3.0

Share Share Share

CSV

CSV

儲存設備規劃

DB1 DB2 DB49

…CSV1 on LUN1

… 4921

Log1 Log2

…CSV2 on LUN2

Log49

顯示 CSV I/O 模式

回報原因

PowerShell cmdlet:Get-ClusterSharedVolumeState

顯示每個節點的 I/O 模式:Direct I/O、Block level redirected、File system level redirectedCSV 狀態

Understanding the State of your Cluster Shared Volumes in Windows Server 2012 R2

支援 Windows Cluster Shared Volumes (Windows Server 2012+)

CSV block level cache

叢集共用磁碟區

可用性 磁碟異常狀況的復原能力

增強容錯移轉的復原能力

零停機執行 CHKDSK

擴充性 突破 24 個磁碟代碼的限制

可以整合更多執行個體

提升磁碟使用率

管理 可以從任一節點管理

磁碟抽象化

效能和安全性 叢集共用磁碟區快取

支援 BitLocker

多個資料庫容錯移轉

最多8個次要複本

2個同步/非同步

自動資料壓縮與加密傳輸

手動/自動容錯移轉

彈性的容錯移轉原則

毀損資料頁自動修復

活用次要複本

唯讀

備份

支援 powershell

快速移轉

SQL Server 2014

無縫的應用程式連線

組態精靈

監控儀錶板

豐富的偵測架構

System Center 整合

完整功能支援

自主資料庫、FileStream, FileTable,

Service Broker

當主要伺服器發生異常時,如

何手動由異地AlwaysOn可用

性群組的次要複本接手服務?

高可用性需求手動容錯移轉

SQL Server 容錯移轉叢集 + 可用性群組

非同步

強制手動移轉至異地的次要複本

強制手動移轉至異地的次要複本

強制手動移轉至異地的次要複本

強制手動移轉至異地的次要複本

如何在Microsoft Azure 建立

AlwaysOn可用性群組的次要

複本?

高可用性需求善用Microsoft Azure的資源

新增 Azure 次要複本精靈

新增 Azure 次要複本精靈

當 AlwaysOn可用性群組的主

要資料庫發生部分資料頁毀損

時,毀損的資料頁會自動修復

嗎?

高可用性需求資料頁毀損自動修復

1.

2.

3.

4.

5.

聽說當 AlwaysOn可用性群組

的主要伺服器和複本伺服器之

間的網路發生斷線,次要複本

會無法讀取?

高可用性需求複本資料庫可持續提供讀取

SQL Server 容錯移轉叢集 + 可用性群組

非同步

增加可唯讀次要複本的可用性

高效能的挑戰

• 避免效能不佳導致的系統不穩定

• 適當的規劃達成更佳的效能表現

• 系統硬體資源• 處理器、記憶體、磁碟、網路

• 單一主機硬體資源升級 vs. 多部主機分擔處理負荷

• 與效能相關的設定• tempdb、資料庫設計、檔案規劃、索引、資料分割、資料壓縮

• 應用程式• 應用程式架構、語法、交易與鎖定

• 集中式處理 vs. 分散式處理

• 集合處理 vs. 逐筆處理

• 分散讀取和寫入的負荷

如何利用 AlwaysOn可用性群

組的次要複本分擔報表查詢負

荷?

高效能需求善用複本伺服器的資源

增加次要複本的數量

增加次要複本的數量

增加次要複本的數量

我想利用 AlwaysOn可用性群

組的複本資料庫分擔報表查詢

負荷,可是應用程式還需要寫

入資料表留下查詢的記錄?

高效能需求善用複本伺服器的資源

善用複本伺服器的資源

AlwaysOn可用性群組的次要複

本可以分擔備份負荷嗎?

高效能需求善用複本伺服器的資源

備份方式 備份檔案大小 備份時間

A 未壓縮,1 個備份檔案 32.8 GB * 1 1524 秒 (00:25:24)

B 未壓縮,4 個備份檔案 8.2 GB * 4 1020 秒 (00:17:00)

C 壓縮,1 個備份檔案 5.1 GB * 1 417 秒 (00:06:57)

D 壓縮,4 個備份檔案 1.3 GB * 4 392 秒 (00:06:32)

PS. 測試主機 : HP ProLiant DL360 G4p

• CPU: Xeon 3.0GHz Dual-Core * 2• Memory: 4GB• HDD: 73GB * 2 10,000 rpm (RAID 0)

AlwaysOn可用性群組愈多的複

本是否也會影響效能?

高效能需求

Heartbeat Network

支援 Windows Cluster Shared Volumes 增加次要複本數量

增加可唯讀次要複本數量

新增 Azure 複本精靈

SQL Server 2014 高可用與災害復原技術

如何知道 AlwaysOn可用性群

組的主要資料庫和複本資料庫

之間的同步狀態?

更容易管理資料庫同步狀態

增強偵錯能力:SQL Server 2014 更清楚的同步狀態

增強偵錯能力

增強偵錯能力:系統函數 & 動態管理檢視

主要複本定期執行交易記錄檔備份

詳細規劃大型資料表的維護作業索引、統計資料、歷史資料

應用程式與資料表設計分散讀取和寫入的負荷

大型資料庫檔案磁碟規劃多個檔案群組配置多個檔案

資料壓縮

大型資料庫實務規劃SQL Server 2014 AlwaysOn

高可用性與高效能的完美表現從實務案例探討SQL Server 2014 AlwaysOn

Thank You

Recommended