永遠在線,永遠可用。對于任何一個希望在云計算領(lǐng)域具有競爭力的公司來說,這不僅是一個業(yè)務(wù)目標,更是競爭需求。部署在正確架構(gòu)之上的高可用性技術(shù),能夠不間斷地為客戶提供價值。
Jeff Brzycki,Autodesk首席信息官,2017年3月
●99.999%
宕機(系統(tǒng)服務(wù)不可用)帶來的損失簡單而直接,如帶來直接的利潤損失、部署能力的損失、客戶體驗的損失等。如果您的應(yīng)用經(jīng)常宕機或者存在較大的宕機風(fēng)險,那么本書非常適合您。如果您的業(yè)務(wù)需要通過高可用或持續(xù)可用來保證公司利潤、部署能力、客戶體驗不受損失,那么本書也非常適合您。
幫助您理解高可用性(HA)解決方案、選擇高可用性方法,從而達到利益最大化、成本最小化是本書的核心目標。本書為您提供了高可用解決方案設(shè)計與實施的路徑。一個好消息是,一般的軟硬件提供商,特別是微軟公司,在產(chǎn)品的可用性方面已經(jīng)進行了長期的探索,并向著99.999%(簡稱5個9)的可用性目標努力前進。一個期望達到5個9可用性的247的應(yīng)用,一年的總宕機時間不過5.26分鐘,所以,如何設(shè)計出如此高的可用性是一項非常艱巨的挑戰(zhàn)。
本書甚至涉及了一些關(guān)于100%可用性的選項。這些技術(shù)伴隨著高可用性解決方案的正式方法論,將使您能夠用最少的開發(fā)及平臺成本,讓系統(tǒng)從設(shè)計、安裝到維護獲得最高的可用性。
滿足需求的合適的高可用方法、高可用解決方案的投資回報率(Return
on Investment,RIO)是搭建高可用環(huán)境的兩個核心因素,對這兩個因素的理解與把握能力決定了公司的成功或失敗。一個公司的核心應(yīng)用可能需要某種類型的高可用性解決方案。比如,對于一個全球在線定貨系統(tǒng),較長時間宕機不但會造成利潤損失,還會影響客戶對該公司的口碑,這個賭注就太大了。
本書講述了如何為新的應(yīng)用程序進行高可用性設(shè)計,以及如何更新當前的應(yīng)用以提高可用性。在所有案例中,一個關(guān)鍵的考慮是業(yè)務(wù)驅(qū)動,即業(yè)務(wù)對應(yīng)用的可用性需求的影響,以及在任何時期內(nèi)如果該應(yīng)用不具備這種可用性所帶來的生產(chǎn)成本及客戶口碑成本。
本書著重講述了最新的 Microsoft SQL Server產(chǎn)品的高可用性能力及選項,這些能力將使您能夠打造一個高可用性系統(tǒng),其中包含微軟集群服務(wù)、SQL Server 2016的SQL集群、SQL數(shù)據(jù)復(fù)制、日志傳輸、數(shù)據(jù)庫鏡像/快照、保持可用性組以及基于Azure的大數(shù)據(jù)和Azure SQL內(nèi)置架構(gòu)。
最重要的是,本書提供了一組反映企業(yè)真實的高可用性需求的商業(yè)場景。通過這些特定的商業(yè)場景,使您學(xué)會高可用性的設(shè)計過程,并告訴您如何選擇最合適的高可用性方法,從而學(xué)會用特定的技術(shù)方案來實現(xiàn)商業(yè)場景需求的途徑。
與一本技術(shù)手冊相比,也許您感覺本書更像一本菜譜或谷歌地圖中的路線建議,而這正是我們所要達到的效果。一方面,本書對技術(shù)語法進行了講解,但本書更多地聚焦于解釋你為什么要選擇某個特定方法來滿足特定商業(yè)或應(yīng)用需求。本書商業(yè)場景的引入及實現(xiàn)源自真實的客戶實現(xiàn),當然鑒于保密因素,本書并沒有透露這些客戶的具體名稱。這些商業(yè)場景可用于糾正在面臨這些商業(yè)場景時的高可用性情況。本書還包含一些使用了微軟提供的聲名不佳的AdventureWorks數(shù)據(jù)庫的案例,使用AdventureWorks可以讓您快速而方便地重現(xiàn)一些解決方案。
可以在本書的網(wǎng)站鏈接獲得啟動您的下一個高可用性實現(xiàn)的工具、腳本、文檔、索引,網(wǎng)址是www.informit.com/title/9780672337765。
●本書適用人群
本書適合系統(tǒng)設(shè)計師,系統(tǒng)架構(gòu)師,系統(tǒng)管理員,數(shù)據(jù)構(gòu)架師,DBA、SQL開發(fā)人員,以及一些管理崗位人員(如CIO、CTO等)學(xué)習(xí)參考。此外,由于很多問題及影響會導(dǎo)致利潤、產(chǎn)品及客戶美譽度的損失,所以本書也會對關(guān)心判斷、選擇及投資回報率的CFO有所幫助。一個積極的、深刻理解高可用性的好外、復(fù)雜性、能力的CFO,將更容易地了解公司是否很好地處于優(yōu)秀高可用性技術(shù)的保護之下。
●本書的組織結(jié)構(gòu)
本書分為以下三個部分:
第一部分,理解高可用性。第1章、第2章主要闡明高可用性的定義、介紹常見的高可用性商業(yè)場景,并介紹了微軟產(chǎn)品家族中與高可用性有直接關(guān)系的不同的軟硬件選擇。
第二部分,選擇正確的高可用性方法。第3章明確定義了一個正式的設(shè)計方法,用于在各種商業(yè)場景下實現(xiàn)高可用性。
第三部分,實現(xiàn)高可用。第4章~第17章講述了每種高可用方案的架構(gòu)、設(shè)計、實現(xiàn)步驟及所需技術(shù)。每一個業(yè)務(wù)場景都達到了完全的高可用性實現(xiàn)。最后是一個對全書涉及的所有方法的總結(jié),同時對高可用性的未來發(fā)展進行了展望。
鑒于越來越多的企業(yè)或組織涉足大數(shù)據(jù)業(yè)務(wù),所以本書也討論了關(guān)于大數(shù)據(jù)業(yè)務(wù)的高可用性。
本書關(guān)于高可用性方法的講解一應(yīng)俱全。對于給定的業(yè)務(wù)和服務(wù),從業(yè)務(wù)需求開始到高可用性實現(xiàn)的結(jié)束,相信本書必將帶給您足夠清晰的理解與認知。
●本書的約定慣例
本書中,命令與存儲過程的名稱一律以等寬字體呈現(xiàn)。對于關(guān)鍵字及對象的名稱,我們盡量保持了大小寫的一致性,但由于SQL Server默認安裝的情況下并不區(qū)分關(guān)鍵字與對象名稱的大小寫,所以例子中的關(guān)鍵字或?qū)ο竺Q的大小寫并不一定完全一致。
本書的提示涵蓋了與討論主題相關(guān)的設(shè)計與架構(gòu)思想,表示對所討論的觀點的補充或?qū)υO(shè)計向?qū)У膸椭@,對于一個數(shù)據(jù)庫的不同數(shù)據(jù)存取類型,什么樣的磁盤陣列級別是合適的,就會通過提示來提供一些額外視角,這些提示可能會高于或超出對磁盤陣列的普通解釋,但在創(chuàng)建SQL Server數(shù)據(jù)庫時,能夠考慮到這些問題是非常有益的。
●設(shè)定目標
與大家接觸過的很多其他系統(tǒng)一樣,根據(jù)用戶(業(yè)務(wù))對系統(tǒng)可用性需求的期望,建立起需求文檔是非常重要的。對于渴望高可用性的系統(tǒng)來說,這些高可用性需求必須十分精確。創(chuàng)建高可用系統(tǒng)的風(fēng)險非常高,本書所講的具有良好理論基礎(chǔ)的、經(jīng)過時間檢驗的方法論,很好地平衡了成本與收益,并且減少了高可用性技術(shù)選擇的隨意性。對現(xiàn)有或未來的應(yīng)用的高可用性需求來說,我們還有很多事情要做。本書簡單而直接地向您展示了如何理解、進行成本調(diào)整、達到這些高可用性目標以及將宕機時間控制在最小的程度。另外,本書還是Sams出版公司出版的Microsoft
SQL Server2014 Unleashed的絕佳姊妹篇。
Paul
Bertucci:世界著名數(shù)據(jù)專家,著有SQL
Server Unleashed系列 圖書, 他是Data
by Design公司創(chuàng)始人、Symantec前總數(shù)據(jù)架構(gòu)師以及 Autodesk前總架構(gòu)師。他將其超過30年的構(gòu)建高關(guān)鍵性、大規(guī)模數(shù) 據(jù)庫經(jīng)驗帶入他的每一本著作
。
前言
Part I 理解高可用性
第1章 理解高可用性 1
1.1 高可用性概述 1
1.2 可用性計算 5
1.2.1 可用性計算示例:一個247365的應(yīng)用 5
1.2.2 連續(xù)可用性 7
1.3 可用性變量 9
1.4 實現(xiàn)高可用性的一般設(shè)計方法 11
1.5 內(nèi)置高可用性的開發(fā)方法 12
1.5.1 評估現(xiàn)有應(yīng)用 14
1.5.2 什么是服務(wù)水平協(xié)議? 15
1.6 高可用性業(yè)務(wù)場景 15
1.6.1 應(yīng)用服務(wù)供應(yīng)商 16
1.6.2 全球銷售和市場品牌推廣 16
1.6.3 投資組合管理 17
1.6.4 挖掘前確認的呼叫中心 17
1.7 提供高可用性的微軟技術(shù) 18
1.8 小結(jié) 19
第2章 微軟高可用性選項 21
2.1 高可用性入門 21
2.1.1 創(chuàng)建容錯磁盤:RAID和鏡像 23
2.1.2 利用RAID提高系統(tǒng)可用性 24
2.1.3 通過分散服務(wù)器來降低風(fēng)險的實例 29
2.2 構(gòu)建高可用性解決方案的微軟選項 30
2.2.1 Windows服務(wù)器故障轉(zhuǎn)移集群 31
2.2.2 SQL集群 32
2.2.3 AlwaysOn可用性組 34
2.2.4 數(shù)據(jù)復(fù)制
35
2.2.5 日志傳送
36
2.2.6 數(shù)據(jù)庫快照 37
2.2.7 微軟Azure選項和Azure
SQL數(shù)據(jù)庫 38
2.2.8 應(yīng)用集群
40
2.3 小結(jié)
41
Part II 選擇正確的高可用性方法
第3章 高可用性選擇 43
3.1 實現(xiàn)高可用性的四步過程 43
3.2 步驟1:啟動第0階段高可用性評估
44
3.2.1 第0階段高可用性評估所需資源 44
3.2.2 第0階段高可用性評估的任務(wù) 45
3.3 步驟2:量測高可用性的主要變量 47
3.4 步驟3:確定高可用性最優(yōu)解決方案 48
3.5 步驟4:檢驗所選高可用性解決方案的成本 66
3.5.1 ROI計算 66
3.5.2 在開發(fā)方法中添加高可用性元素 67
3.6 小結(jié) 68
Part III 高可用性實現(xiàn)
第4章 故障轉(zhuǎn)移集群 71
4.1 不同形式的故障轉(zhuǎn)移集群 72
4.2 集群如何工作 73
4.2.1 理解WSFC 74
4.2.2 利用NLB擴展WSFC 77
4.2.3 在WFSC中如何設(shè)置SQL
Server集群和AlwaysOn的實現(xiàn)階段 78
4.2.4 故障轉(zhuǎn)移集群的安裝 79
4.3 SQL集群配置 84
4.4 AlwaysOn可用性組配置 84
4.5 SQL Server數(shù)據(jù)庫磁盤配置 85
4.6 小結(jié) 86
第5章 SQL Server集群 87
5.1 在WSFC下安裝SQL Server集群
88
5.2 SQL Server故障轉(zhuǎn)移集群中需注意的問題 99
5.3 多站點SQL
Server故障轉(zhuǎn)移集群 99
5.4 場景1:具有SQL Server集群的應(yīng)用服務(wù)提供商 100
5.5 小結(jié) 102
第6章 SQL Server AlwaysOn可用性組 103
6.1 AlwaysOn可用性組用例 103
6.1.1 Windows服務(wù)器故障轉(zhuǎn)移集群 104
6.1.2 AlwaysOn故障轉(zhuǎn)移集群實例 104
6.1.3 AlwaysOn可用性組 105
6.1.4 故障轉(zhuǎn)移與擴展選項結(jié)合 108
6.2 構(gòu)建一個多節(jié)點AlwaysOn配置
108
6.2.1 驗證SQL Server實例 109
6.2.2 設(shè)置故障轉(zhuǎn)移集群 109
6.2.3 準備數(shù)據(jù)庫 111
6.2.4 啟用AlwaysOn高可用性 111
6.2.5 備份數(shù)據(jù)庫 112
6.2.6 創(chuàng)建可用性組 112
6.2.7 選擇可用性組的數(shù)據(jù)庫 113
6.2.8 確定主副本和次要副本 115
6.2.9 同步數(shù)據(jù) 116
6.2.10 設(shè)置監(jiān)聽器 118
6.2.11 連接所用的監(jiān)聽器 121
6.2.12 故障轉(zhuǎn)移到次要副本 121
6.3 儀表盤和監(jiān)測 123
6.4 場景2:使用AlwaysOn可用性組的投資組合管理 124
6.5 小結(jié) 126
第7章 SQL Server數(shù)據(jù)庫快照 127
7.1 數(shù)據(jù)庫快照的含義 128
7.2 即寫即拷技術(shù) 131
7.3 何時使用數(shù)據(jù)庫快照 132
7.3.1 恢復(fù)目的的快照還原 132
7.3.2 在大規(guī)模更改之前保護數(shù)據(jù)庫 133
7.3.3 提供測試(或質(zhì)量保證)起始點(基線) 133
7.3.4 提供時間點報表數(shù)據(jù)庫 134
7.3.5 從鏡像數(shù)據(jù)庫提供高可用性和卸載報表數(shù)據(jù)庫 135
7.4 設(shè)置和撤銷數(shù)據(jù)庫快照 136
7.4.1 創(chuàng)建一個數(shù)據(jù)庫快照 136
7.4.2 撤銷一個數(shù)據(jù)庫快照 140
7.5 用于恢復(fù)的數(shù)據(jù)庫快照還原 140
7.5.1 通過數(shù)據(jù)庫快照還原源數(shù)據(jù)庫 140
7.5.2 利用數(shù)據(jù)庫快照進行測試和QA 141
7.5.3 數(shù)據(jù)庫快照的安全保障 142
7.5.4 快照的稀疏文件大小管理 142
7.5.5 每個源數(shù)據(jù)庫的數(shù)據(jù)庫快照個數(shù) 143
7.5.6 為實現(xiàn)高可用性添加數(shù)據(jù)庫鏡像 143
7.6 數(shù)據(jù)庫鏡像的含義 143
7.6.1 何時使用數(shù)據(jù)庫鏡像 145
7.6.2 數(shù)據(jù)庫鏡像配置的角色 145
7.6.3 角色扮演和角色切換 145
7.6.4 數(shù)據(jù)庫鏡像工作模式 146
7.7 設(shè)置和配置數(shù)據(jù)庫鏡像 147
7.7.1 準備鏡像數(shù)據(jù)庫 147
7.7.2 創(chuàng)建端點
149
7.7.3 授權(quán)權(quán)限
151
7.7.4 在鏡像服務(wù)器上創(chuàng)建數(shù)據(jù)庫 151
7.7.5 確定數(shù)據(jù)庫鏡像的其他端點 153
7.7.6 監(jiān)視鏡像數(shù)據(jù)庫環(huán)境 154
7.7.7 刪除鏡像
157
7.8 測試從主服務(wù)器到鏡像服務(wù)器的故障轉(zhuǎn)移 158
7.9 在數(shù)據(jù)庫鏡像上設(shè)置數(shù)據(jù)庫快照 160
7.10 場景3:使用數(shù)據(jù)庫快照和數(shù)據(jù)庫鏡像的投資組合管理 162
7.11 小結(jié) 164
第8章 SQL Server數(shù)據(jù)復(fù)制 165
8.1 實現(xiàn)高可用性的數(shù)據(jù)復(fù)制 165
8.1.1 快照復(fù)制 165
8.1.2 事務(wù)復(fù)制 166
8.1.3 合并復(fù)制 166
8.1.4 數(shù)據(jù)復(fù)制的含義 167
8.2 發(fā)布服務(wù)器、分發(fā)服務(wù)器和訂閱服務(wù)器的含義 169
8.2.1 發(fā)布和項目 170
8.2.2 篩選項目 170
8.3 復(fù)制方案 173
8.3.1 中央發(fā)布服務(wù)器 174
8.3.2 具有遠程分發(fā)服務(wù)器的中央發(fā)布服務(wù)器 175
8.4 訂閱
176
8.4.1 請求訂閱 176
8.4.2 推送訂閱 177
8.5 分發(fā)數(shù)據(jù)庫 177
8.6 復(fù)制代理 178
8.6.1 快照代理 178
8.6.2 日志讀取器代理 179
8.6.3 分發(fā)代理
179
8.6.4 各種其他代理 180
8.7 用戶需求驅(qū)動的復(fù)制設(shè)計 180
8.8 復(fù)制設(shè)置 180
8.8.1 啟用分發(fā)服務(wù)器 181
8.8.2 發(fā)布
183
8.8.3 創(chuàng)建一個發(fā)布 183
8.8.4 創(chuàng)建一個訂閱 185
8.9 切換到溫備用(訂閱服務(wù)器) 190
8.9.1 切換到溫備用的場景 190
8.9.2 切換到溫備用(訂閱服務(wù)器) 190
8.9.3 訂閱服務(wù)器轉(zhuǎn)換為發(fā)布服務(wù)器(如果需要) 191
8.10 復(fù)制監(jiān)視 191
8.10.1 SQL語句 191
8.10.2 SQL Server Management Studio 192
8.10.3 Windows性能監(jiān)視器與復(fù)制 194
8.10.4 復(fù)制配置的備份和恢復(fù) 194
8.11 場景2:利用數(shù)據(jù)復(fù)制的全球銷售和市場營銷 196
8.12 小結(jié) 198
第9章 SQL Server日志傳送 199
9.1 廉價的高可用性 199
9.1.1 數(shù)據(jù)延遲和日志傳送 200
9.1.2 日志傳送的設(shè)計和管理含義 201
9.2 日志傳送設(shè)置 202
9.2.1 創(chuàng)建日志傳送之前 202
9.2.2 利用數(shù)據(jù)庫日志傳送任務(wù) 203
9.2.3 源服務(wù)器發(fā)生故障時 211
9.3 場景4:使用日志傳送的挖掘前呼叫 211
9.4 小結(jié) 213
第10章 云平臺的高可用性選項 215
10.1 高可用性云存在的問題 215
10.2 利用云計算的高可用性混合方法 216
10.2.1 復(fù)制拓撲的云擴展 217
10.2.2 為提高高可用性的日志傳送云擴展 219
10.2.3 為提高高可用性創(chuàng)建一個云端拉伸數(shù)據(jù)庫 220
10.2.4 將AlwaysOn可用性組應(yīng)用到云端 221
10.2.5 利用云端的AlwaysOn可用性組 222
10.2.6 在云端使用高可用性的Azure SQL數(shù)據(jù)庫 224
10.2.7 使用主動式異地數(shù)據(jù)復(fù)制備援 225
10.2.8 使用云端Azure大數(shù)據(jù)選項時的高可用性 226
10.3 小結(jié)
226
第11章 高可用性和大數(shù)據(jù)選項 227
11.1 Azure的大數(shù)據(jù)選項 227
11.1.1 HDInsight 228
11.1.2 機器學(xué)習(xí)Web服務(wù) 229
11.1.3 數(shù)據(jù)流分析 229
11.1.4 認知服務(wù)
229
11.1.5 數(shù)據(jù)湖分析 229
11.1.6 數(shù)據(jù)湖存儲 229
11.1.7 數(shù)據(jù)工廠 230
11.1.8 嵌入式Power BI 231
11.1.9 微軟Azure數(shù)據(jù)湖服務(wù) 231
11.2 HDInsight特性 231
11.2.1 使用NoSQL功能 232
11.2.2 實時處理 232
11.2.3 交互式分析的Spark 233
11.2.4 用于預(yù)測分析和機器學(xué)習(xí)的R服務(wù)器 233
11.2.5 Azure數(shù)據(jù)湖分析 233
11.2.6 Azure數(shù)據(jù)湖存儲 234
11.3 Azure大數(shù)據(jù)的高可用性 235
11.3.1 數(shù)據(jù)冗余 235
11.3.2 高可用性服務(wù) 236
11.4 如何創(chuàng)建一個高可用性的HDInsight集群 236
11.5 大數(shù)據(jù)訪問 244
11.6 從企業(yè)初創(chuàng)到形成規(guī)模的過程中,大數(shù)據(jù)經(jīng)歷的七個主要階段 246
11.7 大數(shù)據(jù)解決方案需要考慮的其他事項 249
11.8 Azure大數(shù)據(jù)用例 249
11.8.1 用例1:迭代探索 249
11.8.2 用例2:基于需求的數(shù)據(jù)倉庫 250
11.8.3 用例3:ETL自動化
250
11.8.4 用例4:BI集成 250
11.8.5 用例5:預(yù)測分析 250
11.9 小結(jié) 250