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