專利名稱:分布式數(shù)據(jù)庫系統(tǒng)中的無縫升級的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及分布式數(shù)據(jù)庫系統(tǒng)中的無縫升級。
背景技術(shù):
計算機已變得高度集成于工作、家庭、移動設(shè)備以及許多其他地方中。計算機可快速且有效地處理大量信息。被設(shè)計成在計算機系統(tǒng)上運行的軟件應(yīng)用允許用戶執(zhí)行包括商業(yè)應(yīng)用、學(xué)校作業(yè)、娛樂等等在內(nèi)的各種各樣的功能。軟件應(yīng)用通常被設(shè)計成執(zhí)行特定的任務(wù),諸如用于草擬文檔的文字處理器應(yīng)用或者用于發(fā)送、接收和組織電子郵件的電子郵件程序。在許多情況下,軟件應(yīng)用被設(shè)計為與其他軟件應(yīng)用或其他計算機系統(tǒng)交互。例如,客戶機可使用web瀏覽器來與web服務(wù)交互。web服務(wù)的底層數(shù)據(jù)可由數(shù)據(jù)庫服務(wù)器來提供。用戶可能依賴數(shù)據(jù)庫服務(wù)器在任一天或任何時間提供web服務(wù)數(shù)據(jù)。由此,在沒有大 量停工時間的情況下執(zhí)行數(shù)據(jù)庫系統(tǒng)更新會是成問題的。
發(fā)明內(nèi)容
本文中描述的實施例涉及使用多個數(shù)據(jù)庫服務(wù)器實例提供對計算機群集中的數(shù)據(jù)庫服務(wù)器實例的分布式數(shù)據(jù)庫服務(wù)升級,以及在升級期間監(jiān)視和維護分布式數(shù)據(jù)庫服務(wù)。在一個實施例中,計算機群集中的每個計算機系統(tǒng)在該群集中的各節(jié)點里的每一個節(jié)點上實例化至少兩個不同的數(shù)據(jù)庫服務(wù)器實例。第一數(shù)據(jù)庫服務(wù)器實例被配置成使用當(dāng)前分布式數(shù)據(jù)庫版本來操作,而第二實例被配置成使用新的已更新的分布式數(shù)據(jù)庫服務(wù)版本來操作。計算機系統(tǒng)接收分布式數(shù)據(jù)庫服務(wù)將被升級的指示。隨后,基于接收到的指示,計算機系統(tǒng)將數(shù)據(jù)庫副本從第一數(shù)據(jù)庫服務(wù)器實例遷移至操作新的已更新的服務(wù)版本的第二數(shù)據(jù)庫服務(wù)器實例,而基本上沒有用戶可見的停機時間。在另一實施例中,計算機系統(tǒng)監(jiān)視并維護分布式數(shù)據(jù)庫服務(wù)升級過程。計算機系統(tǒng)標(biāo)識分布式數(shù)據(jù)庫服務(wù)中將被監(jiān)視的各個操作部分。所標(biāo)識的操作部分表示分布式數(shù)據(jù)庫服務(wù)的可能的故障點。計算機系統(tǒng)監(jiān)視所標(biāo)識的操作部分以確定何時和/或在哪里已發(fā)生故障。計算機系統(tǒng)確定在操作部分中是否已發(fā)生故障,并在沒有外部介入的情況下評估所標(biāo)識的故障來確定如何對故障進行響應(yīng)。提供本發(fā)明內(nèi)容以便以簡化形式介紹將在以下具體實施方式
中進一步描述的一些概念。本發(fā)明內(nèi)容并非旨在標(biāo)識所要求保護的主題的關(guān)鍵特征或必要特征,也不旨在用于幫助確定所要求保護的主題的范圍。另外的特征和優(yōu)點將在以下的描述中闡述,并且部分可從該描述中顯而易見,或者可以從此處的教示實踐中習(xí)得。本發(fā)明的特征和優(yōu)點可以通過在所附權(quán)利要求中特別指出的手段和組合來實現(xiàn)并獲取。本發(fā)明的特征將從以下描述和所附權(quán)利要求書中變得完全顯而易見,或者可通過如下所述對本發(fā)明的實踐而獲知。
為了進一步闡明本發(fā)明的各實施例的以上和其他優(yōu)點和特征,將參考附圖來呈現(xiàn)本發(fā)明的各實施例的更具體的描述??梢岳斫猓@些附圖只描繪本發(fā)明的典型實施例,因此將不被認(rèn)為是對其范圍的限制。本發(fā)明將通過使用附圖用附加特征和細(xì)節(jié)來描述和解釋,附圖中圖I示出了其中本發(fā)明的實施例可操作的計算機體系結(jié)構(gòu),本發(fā)明的實施例的操作包括使用多個數(shù)據(jù)庫實例提供分布式數(shù)據(jù)庫服務(wù)升級,以及監(jiān)視和維護分布式數(shù)據(jù)庫服務(wù)升級。圖2示出了用于使用多個數(shù)據(jù)庫實例提供分布式數(shù)據(jù)庫服務(wù)升級的示例方法的流程圖。圖3示出了用于監(jiān)視和維護分布式數(shù)據(jù)庫服務(wù)升級的示例方法的流程圖。
圖4示出了本發(fā)明的一實施例,其中可執(zhí)行服務(wù)健康檢查并對其起作用。圖5示出了其中實現(xiàn)無共享數(shù)據(jù)庫體系結(jié)構(gòu)的實施例。
具體實施例方式本文中描述的實施例涉及使用多個數(shù)據(jù)庫服務(wù)器實例提供對計算機群集中的數(shù)據(jù)庫服務(wù)器實例的分布式數(shù)據(jù)庫服務(wù)升級,以及在升級期間監(jiān)視和維護分布式數(shù)據(jù)庫服務(wù)。在一個實施例中,計算機群集中的每個計算機系統(tǒng)在該群集中的各節(jié)點里的每一個節(jié)點上實例化至少兩個不同的數(shù)據(jù)庫服務(wù)器實例。第一數(shù)據(jù)庫服務(wù)器實例被配置成使用當(dāng)前分布式數(shù)據(jù)庫版本來操作,而第二實例被配置成使用新的已更新的分布式數(shù)據(jù)庫服務(wù)版本來操作。計算機系統(tǒng)接收分布式數(shù)據(jù)庫服務(wù)將被升級的指示。隨后,基于接收到的指示,計算機系統(tǒng)將數(shù)據(jù)庫副本從第一數(shù)據(jù)庫服務(wù)器實例遷移至操作新的已更新的服務(wù)版本的第二數(shù)據(jù)庫服務(wù)器實例,而基本上沒有用戶可見的停機時間。在另一實施例中,計算機系統(tǒng)監(jiān)視并維護分布式數(shù)據(jù)庫服務(wù)升級過程。計算機系統(tǒng)標(biāo)識分布式數(shù)據(jù)庫服務(wù)中將被監(jiān)視的各個操作部分。所標(biāo)識的操作部分表示分布式數(shù)據(jù)庫服務(wù)的可能的故障點。計算機系統(tǒng)監(jiān)視所標(biāo)識的操作部分以確定何時和/或在哪里已發(fā)生故障。計算機系統(tǒng)確定在操作部分中是否已發(fā)生故障,并在沒有外部介入的情況下評估所標(biāo)識的故障來確定如何對故障進行響應(yīng)。在評估之后,計算機系統(tǒng)可執(zhí)行動作以校正或補償故障。以下討論現(xiàn)涉及可以執(zhí)行的多種方法以及方法動作。應(yīng)當(dāng)注意,雖然這些方法動作可能是按一定次序討論的,或者是在流程圖中被描繪為是按照特定順序進行的,然而并非必然需要特定的次序,除非特別聲明,或者是在一個動作被執(zhí)行之前因為該動作依賴于另一動作的完成而需要的情況。本發(fā)明的各實施例可包括或利用專用或通用計算機,該專用或通用計算機包括諸如例如一個或多個處理器和系統(tǒng)存儲器等計算機硬件,如以下更詳細(xì)討論的。本發(fā)明范圍內(nèi)的各實施例還包括用于承載或存儲計算機可執(zhí)行指令和/或數(shù)據(jù)結(jié)構(gòu)的物理和其他計算機可讀介質(zhì)。這樣的計算機可讀介質(zhì)可以是可由通用或?qū)S糜嬎銠C系統(tǒng)訪問的任何可用介質(zhì)。存儲計算機可執(zhí)行指令的計算機可讀介質(zhì)是計算機存儲介質(zhì)。承載計算機可執(zhí)行指令的計算機可讀介質(zhì)是傳輸介質(zhì)。由此,作為示例而非限制,本發(fā)明的各實施例可包括至少兩種顯著不同的計算機可讀介質(zhì)計算機存儲介質(zhì)和傳輸介質(zhì)。計算機存儲介質(zhì)包括RAM、ROM、EEPROM、SSD、CD-ROM或其他光盤存儲、磁盤存儲或其他磁存儲設(shè)備、或可用于存儲計算機可執(zhí)行指令或數(shù)據(jù)結(jié)構(gòu)形式的所需程序代碼裝置且可由通用或?qū)S糜嬎銠C訪問的任何其他介質(zhì)?!熬W(wǎng)絡(luò)”被定義為允許在計算機系統(tǒng)和/或模塊和/或其他電子設(shè)備之間傳輸電子數(shù)據(jù)的一個或多個數(shù)據(jù)鏈路。當(dāng)信息通過網(wǎng)絡(luò)或另一個通信連接(硬連線、無線、或者硬連線或無線的組合)傳輸或提供給計算機時,該計算機將該連接適當(dāng)?shù)匾暈閭鬏斀橘|(zhì)。傳輸介質(zhì)可包括可用于攜帶計算機可執(zhí)行指令或數(shù)據(jù)結(jié)構(gòu)形式的數(shù)據(jù)或所需程序代碼裝置且可由通用或?qū)S糜嬎銠C訪問的網(wǎng)絡(luò)和/或數(shù)據(jù)鏈路。上述的組合也應(yīng)被包括在計算機可讀介質(zhì)的范圍內(nèi)。此外,在到達(dá)各種計算機系統(tǒng)組件之后,計算機可執(zhí)行指令或數(shù)據(jù)結(jié)構(gòu)形式的程序代碼裝置可從傳輸介質(zhì)自動傳輸?shù)接嬎銠C存儲介質(zhì)(或反之亦然)。例如,通過網(wǎng)絡(luò)或數(shù)據(jù)鏈路接收到的計算機可執(zhí)行指令或數(shù)據(jù)結(jié)構(gòu)可被緩存在網(wǎng)絡(luò)接口模塊(例如,“NIC”)內(nèi)的RAM中,然后最終被傳輸?shù)接嬎銠C系統(tǒng)RAM和/或計算機系統(tǒng)處的較不易失性的計算 機存儲介質(zhì)。因而,應(yīng)當(dāng)理解,計算機存儲介質(zhì)可被包括在還利用(或甚至主要利用)傳輸介質(zhì)的計算機系統(tǒng)組件中。計算機可執(zhí)行指令包括,例如使通用計算機、專用計算機、或?qū)S锰幚碓O(shè)備執(zhí)行某一功能或某組功能的指令和數(shù)據(jù)。計算機可執(zhí)行指令可以是例如二進制代碼、諸如匯編語言之類的中間格式指令、或甚至源代碼。盡管用結(jié)構(gòu)特征和/或方法動作專用的語言描述了本主題,但可以理解,所附權(quán)利要求書中定義的主題不必限于上述特征或動作。相反,上述特征和動作是作為實現(xiàn)權(quán)利要求的示例形式而公開的。本領(lǐng)域的技術(shù)人員將理解,本發(fā)明可以在具有許多類型的計算機系統(tǒng)配置的網(wǎng)絡(luò)計算環(huán)境中實踐,這些計算機系統(tǒng)配置包括個人計算機、臺式計算機、膝上型計算機、消息處理器、手持式設(shè)備、多處理器系統(tǒng)、基于微處理器的或可編程消費電子設(shè)備、網(wǎng)絡(luò)PC、小型計算機、大型計算機、移動電話、PDA、尋呼機、路由器、交換機等等。本發(fā)明還可在其中通過網(wǎng)絡(luò)鏈接(或者通過硬連線數(shù)據(jù)鏈路、無線數(shù)據(jù)鏈路,或者通過硬連線和無線數(shù)據(jù)鏈路的組合)的本地和遠(yuǎn)程計算機系統(tǒng)兩者都執(zhí)行任務(wù)的分布式系統(tǒng)環(huán)境(例如,云計算、云服務(wù)等)中實踐。在分布式系統(tǒng)環(huán)境中,程序模塊可位于本地和遠(yuǎn)程存儲器存儲設(shè)備中。以下術(shù)語將被用來描述
具體實施例方式“計算機群集”是指用網(wǎng)絡(luò)來綁定在一起的協(xié)作的計算機系統(tǒng)的集合。“計算機系統(tǒng)”(或“服務(wù)器”)是指存儲器、處理器、盤、軟件等的集合。計算機系統(tǒng)是網(wǎng)絡(luò)上的節(jié)點?!皵?shù)據(jù)庫”是指結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)(連同元數(shù)據(jù))的命名的邏輯集合。數(shù)據(jù)庫具有與之相關(guān)聯(lián)的版本。“副本”是指數(shù)據(jù)庫的內(nèi)容的物理實例化的拷貝?!爸鞲北尽笔侵府?dāng)前代表客戶機接收請求并服務(wù)該請求的副本?!拜o助副本”是指從屬于主副本的一個或多個副本,其從主副本接收更新并將它們應(yīng)用于輔助副本——出于提供數(shù)據(jù)庫內(nèi)容的增強可用性的目的。“服務(wù)器實例”或“數(shù)據(jù)庫服務(wù)器實例”是指接收客戶機請求并執(zhí)行它們的軟件進程,其訪問(或可能更改)數(shù)據(jù)庫副本的內(nèi)容。服務(wù)器實例具有與之相關(guān)聯(lián)的版本。圖I示出了可在其中采用本發(fā)明的原理的計算機體系結(jié)構(gòu)100。計算機體系結(jié)構(gòu)100包括群集計算機系統(tǒng)控制器110,以及第一、第二和第三計算機系統(tǒng)125々、1258和125(。這些計算機系統(tǒng)中的每一個參與到計算機群集中。群集的計算機系統(tǒng)通過網(wǎng)絡(luò)綁定在一起,并且主存一組(可能)分布式的數(shù)據(jù)庫。群集計算機系統(tǒng)包括遷移發(fā)起模塊115。遷移發(fā)起模塊可發(fā)起數(shù)據(jù)庫升級或“遷移”至較新版本。數(shù)據(jù)庫可包括圖I中所示的那些計算機系統(tǒng)以及其他計算機系統(tǒng)。在一些情形中,數(shù)據(jù)庫將具有每個主節(jié)點126的輔助副本(127A和127B)。雖然此圖示示出了兩個輔助副本,但是其可被配置成每數(shù)據(jù)庫任何數(shù)目個輔助副本。輔助副本可起到備份副本或故障切換副本的作用。全局分區(qū)圖120可被配置成對數(shù)據(jù)庫數(shù)據(jù)的每一部分(主或輔助副本)存儲在各個計算機系統(tǒng)上的何處保持跟蹤。第一計算機系統(tǒng)125A、第二計算機系統(tǒng)125B和第三計算機系統(tǒng)125C可各自具有多個同時運行的數(shù)據(jù)庫服務(wù)器實例。例如,在一個實施例中,主節(jié)點126可以運行第一服務(wù)器實例和第二服務(wù)器實例(130A和131A)兩者,其中第一服務(wù)器實例運行當(dāng)前數(shù)據(jù)庫版本而第二服務(wù)器實例運行經(jīng)升級的數(shù)據(jù)庫版本。第二節(jié)點127A和127B可類似地分別運行當(dāng)前和經(jīng)升級的數(shù)據(jù)庫版本的第一和第二服務(wù)器實例(130B/131B和130C/131C)。一旦接收到來自遷移發(fā)起模塊115的遷移請求116,相應(yīng)計算機系統(tǒng)的升級服務(wù)(133AU33B和133C)可開始將數(shù)據(jù)庫副本(134A-C)從第一服務(wù)器實例(130A-C)遷移至第二服務(wù)器實例(131A-C)。這些升級可在第一服務(wù)器實例130A-C仍在響應(yīng)用戶對其他數(shù)據(jù)庫副本的請求 的同時發(fā)生。由于主數(shù)據(jù)庫副本和輔助數(shù)據(jù)庫副本的數(shù)據(jù)可遍布在多個不同的計算機系統(tǒng)上,因此無需使個體計算機系統(tǒng)停機。數(shù)據(jù)庫副本是在第一服務(wù)器實例仍在運行的同時在第二服務(wù)器實例上升級。一旦所有副本都成功地在第二服務(wù)器實例上以新數(shù)據(jù)庫版本進行運行,就可刪除第一服務(wù)器實例。以此方式,數(shù)據(jù)庫可通過使用群集中的每個機器上的第二數(shù)據(jù)庫服務(wù)器實例來升級。停機時間可被縮短,或者在一些情形中,可被消除。升級服務(wù)133A-C還支持用于在基本上(或完全)無需人類介入和控制升級過程的情況下確定每個升級是成功還是失敗的邏輯。升級服務(wù)可在答復(fù)117中向用戶指示升級的當(dāng)前狀態(tài)。此狀態(tài)更新可被周期性或連續(xù)地提供。數(shù)據(jù)庫軟件的較新的經(jīng)更新的版本(例如,“新版本”N+1)可與原始(例如,“當(dāng)前版本"N)軟件并排地運行。此新的實例是在相同的硬件上并排地運行,并且支持對數(shù)據(jù)庫的升級一這與升級個體計算機系統(tǒng)相反。因而,使計算機系統(tǒng)125A-C中的每一個就緒的升級路徑是可用的(即,與現(xiàn)有當(dāng)前版本N軟件相并排地,計算機系統(tǒng)安裝并開始新版本N+1軟件)。系統(tǒng)隨后可將每個數(shù)據(jù)庫(主副本+輔助副本)遷移至運行版本N+1的新的服務(wù)器實例——對每個數(shù)據(jù)庫進行重復(fù)這一操作。此辦法可最小化對與升級有關(guān)的數(shù)據(jù)庫服務(wù)器軟件的需求的數(shù)量。在一些情形中,這可降低在合并式高度可用群集模型中執(zhí)行升級的成本。例如,可利用存在于獨立的數(shù)據(jù)庫服務(wù)器中的預(yù)先存在的升級代碼路經(jīng)。至少在一些情形中,此辦法可消除對構(gòu)建數(shù)據(jù)庫服務(wù)器內(nèi)的專用輔助“群集知曉”的升級代碼路經(jīng)的需求(這可能要求多版本協(xié)議支持等)。此外,此辦法能以如下方式使用群集層的數(shù)據(jù)庫遷移服務(wù)來配置和組織(orchestrate) 一組數(shù)據(jù)庫服務(wù)器和遷移請求充分利用個體數(shù)據(jù)庫服務(wù)器實例的一個或多個現(xiàn)有升級能力來達(dá)成高度可用的升級。在升級過程期間,可管理計算機系統(tǒng)125A-C的資源,以使得滿足每個應(yīng)用的性能目標(biāo)。每個數(shù)據(jù)庫服務(wù)器實例可結(jié)合資源管控機制,以限制由每個數(shù)據(jù)庫使用的最大資源。在數(shù)據(jù)庫被從舊的服務(wù)器實例移至新的服務(wù)器實例的遷移過程期間,這可被更新。另外,兩個資源管控機制可進行通信,以理解另一數(shù)據(jù)庫服務(wù)器的資源管控者的決定。在一些實施例中,主和輔助數(shù)據(jù)庫副本134A-1345C可以各自分別從每個當(dāng)前版本N實例被分離,并被附連到相同計算機系統(tǒng)上的新版本N+1實例。在其他實施例中,輔助副本可首先被移至新版本N+1,但是繼續(xù)應(yīng)用來自當(dāng)前版本N主副本的改變。如果輔助副本是最新的,則系統(tǒng)可故障切換至輔助副本中的一個,并在隨后將主副本升級至新版本N+1 (或者,如果其無法完全升級, 則對其進行重建)。如果在升級期間大多數(shù)副本失敗且并非是最新的,則副本可被分離并重新附連到當(dāng)前版本N數(shù)據(jù)庫服務(wù)器實例。升級可在隨后中止,并且可能在稍后的時間重試。在另一實施例中,數(shù)據(jù)庫的附加副本最初作為新版本N+1服務(wù)器實例上的輔助副本來創(chuàng)建。系統(tǒng)隨后從版本N副本全體故障切換至版本N+1副本(使得一個版本N+1成為新的主副本,而使另一版本N+1副本成為新的輔助副本)。最后,版本N副本被丟棄。此辦法可實現(xiàn)數(shù)據(jù)副本數(shù)兩倍的次數(shù),但僅僅是對于現(xiàn)行被移動的每個數(shù)據(jù)庫來實現(xiàn)。其還提供非常高的正常運行時間和冗余。在一些情形中,此版本可將數(shù)據(jù)庫的附加版本實現(xiàn)為新版本N+1服務(wù)器上的輔助副本,但是服務(wù)器是不同的計算機系統(tǒng)。這可允許在升級期間從一個機器遷移至另一個機器。在一些實施例中,可實現(xiàn)以下工作流1)將新映像部署到群集110中的所有計算機系統(tǒng)。映像可以具有數(shù)據(jù)庫服務(wù)器軟件的新和舊的版本兩者。新和舊的(版本N) 二進制文件兩者將在所有數(shù)據(jù)庫都附連到舊的數(shù)據(jù)庫服務(wù)器實例的情況下來啟動。2)等待部署全面完成。3)確保第二服務(wù)器實例以版本N+1軟件在每個節(jié)點上運行。這可通過查詢?nèi)謹(jǐn)?shù)據(jù)庫目錄來完成。4)設(shè)置放置顧問以進入雙重模式。在新服務(wù)器實例上創(chuàng)建新數(shù)據(jù)庫。5)枚舉預(yù)先存在的數(shù)據(jù)庫并開始遷移至新版本N+1服務(wù)器實例。在空間和時間允許的情況下,每次遷移一個或多個數(shù)據(jù)庫。繼續(xù)該工作流,6)每個數(shù)據(jù)庫遷移涉及移動或拷貝'K)調(diào)用全局?jǐn)?shù)據(jù)庫目錄上的移動/拷貝應(yīng)用程序編程接口(API),B)放置顧問選擇目的地節(jié)點??墒褂帽镜?例如,機架內(nèi)(intra-rack))遷移,C)升級服務(wù)將組織該遷移。它們可被配置成處理此過程期間的差錯,D)如果遷移成功,則數(shù)據(jù)庫遷移服務(wù)(DMS)(即,遷移發(fā)起模塊115)在版本N+1數(shù)據(jù)庫服務(wù)器實例上的目的地數(shù)據(jù)庫上調(diào)用健康檢查API。如果檢查失敗或遷移失敗,則DMS將中止升級或?qū)ζ溥M行暫停,以待人類介入。7)DMS在有需要的情況下修補各個編目。8) —旦群集中的數(shù)據(jù)庫已被升級,則舊版本N實例將為空,以及9)稍后的部署可移除舊的比特和實例。舊的服務(wù)器實例可保持活躍直到那時。下面,分別參照圖2和圖3的方法200和300,進一步解釋這些概念??紤]到以上描述的系統(tǒng)和體系結(jié)構(gòu),參考圖2和圖3的流程圖將更好地理解根據(jù)所公開的主題實現(xiàn)的方法。為了解釋簡明起見,這些方法被示出和描述為一系列框。然而,應(yīng)該理解和了解,所要求保護的主題不受框的次序的限制,因為一些框可按不同的次序進行和/或與此處所描繪和描述的其他框同時進行。此外,并非全部所示的框都是實現(xiàn)下面所述的方法所必需的。圖2示出了用于使用多個數(shù)據(jù)庫實例提供分布式數(shù)據(jù)庫服務(wù)升級的方法200的流程圖?,F(xiàn)在將頻繁參考環(huán)境100的組件和數(shù)據(jù)來描述方法200。方法200包括在數(shù)據(jù)庫群集中的一個或多個計算機系統(tǒng)上實例化多個第一和第二數(shù)據(jù)庫服務(wù)器實例的動作,其中所述第一數(shù)據(jù)庫服務(wù)器實例被配置成使用當(dāng)前分布式數(shù)據(jù)庫服務(wù)版本來操作,而第二數(shù)據(jù)庫服務(wù)器實例被配置成使用新的分布式數(shù)據(jù)庫服務(wù)版本來操作(動作210)。例如,群集計算機系統(tǒng)控制器110可在(計算機系統(tǒng)125A上的)主節(jié)點126上實例化第一和第二服務(wù)器實例130A和131A,以及在(計算機系統(tǒng)125和125C上的)第一和第二輔助節(jié)點127A和127B上第一和第二服務(wù)器實例130B/131B和130C/131C。第一服務(wù)器實例130A-C可被配置成使用當(dāng)前版本N來操作,而第二服務(wù)器實例131A-C可被配置成使用新版本N+1來操作。在一些情形中,第一計算機系統(tǒng)125A可包括與不同數(shù)據(jù)庫相對應(yīng)的一個或多個主副本134A以及一個或多個輔助副本。類似地,群集中的每個計算機系統(tǒng)可包括基本上任何數(shù)目個副本。數(shù)據(jù)庫主副本134A持續(xù)向第一和第二輔助副本134B和134C發(fā)送改變。升級服務(wù)133A可指示主和輔助副本將開始使用數(shù)據(jù)庫軟件的更新版本。升級服務(wù)133A可提供一個或多個保證,包括故障切換保證(即,一旦故障,系統(tǒng)無縫地故障切換至備份版本), 以及負(fù)載平衡保證(即,數(shù)據(jù)將基本上被均等地分布在可用節(jié)點之間)。在一些情形中,群集計算機系統(tǒng)控制器110可管理多個數(shù)據(jù)庫。群集計算機系統(tǒng)可被配置成在計算機系統(tǒng)之間移動這些數(shù)據(jù)庫。群集計算機系統(tǒng)還可被配置成在無共享分布式計算機系統(tǒng)中的節(jié)點上實例化數(shù)據(jù)庫軟件實例。無共享分布式計算系統(tǒng)確保分布式系統(tǒng)中的每個硬件設(shè)備具有備份且沒有一個設(shè)備會是故障點。因而,以上所描述的原理中的每一個可在無共享分布式計算系統(tǒng)中實現(xiàn)。方法200包括接收分布式數(shù)據(jù)庫服務(wù)將被升級的指示的動作(動作220)。例如,升級服務(wù)133A可接收遷移請求116,該請求指示數(shù)據(jù)庫將被從當(dāng)前版本N升級至新版本N+1。方法200還包括基于接收到的指示,在基本上沒有用戶可見的停機時間的情況下,將副本從第一數(shù)據(jù)庫服務(wù)器實例遷移至第二數(shù)據(jù)庫服務(wù)器實例的動作(動作230)。例如,升級服務(wù)133A-C可將副本從第一服務(wù)器實例130A-C遷移至第二服務(wù)器實例131A-C。兩個實例可同時運行。在基本上有數(shù)據(jù)庫的任何數(shù)目個副本時,此模型也適用。因而,數(shù)據(jù)庫軟件的遷移可以是從一個運行版本轉(zhuǎn)到另一個運行版本。在一些情形中,分布式數(shù)據(jù)庫的健康檢查服務(wù)132A-C可包括在基本上(或完全)無需人類介入的情況下確定升級是成功還是失敗的邏輯。健康檢查服務(wù)可監(jiān)視升級過程,并檢測是否發(fā)生硬件或軟件差錯。如果已發(fā)生差錯,則健康檢查服務(wù)可嘗試解決差錯,或者如果其無法解決差錯則可暫停升級以待用戶介入。在一些情形中,從第一服務(wù)器實例至第二服務(wù)器實例的遷移可在同一計算機系統(tǒng)上(例如,在主節(jié)點126上)發(fā)生。在此類情形中,避免了計算機系統(tǒng)之間的數(shù)據(jù)移動。在其他情形中,從第一服務(wù)器實例至第二服務(wù)器實例的遷移可在多個計算機系統(tǒng)上進行。這允許至不同計算機系統(tǒng)的數(shù)據(jù)庫遷移。在一些實施例中,可跨第一和第二服務(wù)器實例(130A-C和131A-C)來管控處理資源,以使得分布式數(shù)據(jù)庫服務(wù)遵循一個或多個現(xiàn)有服務(wù)級協(xié)定。服務(wù)級協(xié)定可指定將被提供給用戶的特定處理級。因此,處理資源管控機制可被用來按需分發(fā)資源以遵循服務(wù)協(xié)定。在一些情形中,服務(wù)級協(xié)定可與分布式數(shù)據(jù)庫服務(wù)同步地遷移。因而,當(dāng)數(shù)據(jù)的一部分被轉(zhuǎn)移到第二服務(wù)器實例時,第二服務(wù)器實例接收處理資源的相應(yīng)增加。例如,如果10%的數(shù)據(jù)被轉(zhuǎn)移到第二服務(wù)器實例,則10%的處理資源也可被轉(zhuǎn)移至第二服務(wù)器實例。在其他實施例中,主節(jié)點的第一副本13A以及第一和第二輔助副本134B和134C可從當(dāng)前服務(wù)器實例被分離,并且隨后在稍后被重新附連到主節(jié)點以及第一和第二輔助節(jié)點的第二服務(wù)器實例。這些第二服務(wù)器實例被配置成使用新的分布式數(shù)據(jù)服務(wù)版本N+1來操作。在其他實施例中,第一和第二輔助副本可被移至第一和第二輔助節(jié)點的被配置成使用新的分布式數(shù)據(jù)庫服務(wù)版本N+1操作的第二服務(wù)器實例。隨后,主副本可故障切換至輔助副本中的至少一個。一旦所有副本已被升級,主服務(wù)器實例可在隨后被移除。數(shù)據(jù)庫系統(tǒng)還可創(chuàng)建附加副本拷貝作為操作新的分布式數(shù)據(jù)庫服務(wù)版本的輔助副本。數(shù)據(jù)庫系統(tǒng)可在隨后將在版本N的服務(wù)器實例上運行的第一和第二副本故障切換至在版本N+1運行的附 加輔助副本,并移除版本N副本?,F(xiàn)在轉(zhuǎn)向圖3,圖3示出用于監(jiān)視和維護分布式數(shù)據(jù)庫服務(wù)升級的方法300的流程圖?,F(xiàn)在將頻繁地分別參照圖I和圖4的環(huán)境100和400的組件和數(shù)據(jù)來描述方法300。方法300包括標(biāo)識分布式數(shù)據(jù)庫服務(wù)升級的在分布式數(shù)據(jù)庫服務(wù)升級期間將被監(jiān)視的一個或多個操作部分的動作(動作310),其中所標(biāo)識的操作部分表示分布式數(shù)據(jù)庫服務(wù)升級的可能故障點。例如,健康檢查服務(wù)405的操作部分標(biāo)識模塊410可標(biāo)識分布式數(shù)據(jù)庫服務(wù)升級的在分布式數(shù)據(jù)庫服務(wù)升級450期間將被監(jiān)視的操作部分。所標(biāo)識的操作部分表示分布式數(shù)據(jù)庫服務(wù)升級的故障點。這些故障點可以是硬件或軟件相關(guān)的。操作部分可包括事件、進程和/或執(zhí)行點。方法300包括監(jiān)視所標(biāo)識的操作部分以確定何時以及在哪里已發(fā)生故障中的至少一者的動作(動作320)。例如,監(jiān)視模塊415可監(jiān)視由模塊410標(biāo)識的那些操作部分,以確定在升級期間何時和/或在哪里已發(fā)生故障。監(jiān)視模塊可監(jiān)視任何或所有所標(biāo)識的操作部分,并且可被配置成監(jiān)視由管理員請求的新操作部分。方法300包括確定在各操作部分的一個或多個中已發(fā)生一個或多個故障的動作(動作330)。例如,故障確定模塊420可確定在從數(shù)據(jù)庫版本I (430A)升級至數(shù)據(jù)庫版本2 (430B)期間在各操作部分的一個或多個中已發(fā)生各種故障。方法300包括在沒有外部介入的情況下評估所標(biāo)識的故障以確定如何對故障進行響應(yīng)的動作(動作340)。例如,評估模塊425可接收健康檢查響應(yīng)426,并且基于該響應(yīng),可評估故障以確定如何對故障進行響應(yīng)。評估模塊可在沒有外部介入的情況下進行評估并對其進行動作。在一些情形中,所確定的響應(yīng)可被自動實現(xiàn)以解決故障并允許分布式數(shù)據(jù)庫服務(wù)升級450繼續(xù)升級(動作450)。在其中評估模塊不能充分地對故障進行響應(yīng)的情形中,其可暫停升級直至外部實體可解決問題。在另一實施例中,如圖5中所例示的,可使用多個計算機服務(wù)器來將數(shù)據(jù)庫表示為無共享群集500,而不是單個服務(wù)器。該邏輯數(shù)據(jù)庫被分成各物理分區(qū)(例如,525A-C、525A-C和530A-C),這些物理分區(qū)在被組合時保持該整個數(shù)據(jù)庫的內(nèi)容。如圖5的元素540中所示的,可使用基本上任何數(shù)目的分區(qū)和/或副本。各分區(qū)可被存儲為副本(例如,副本510A-I),并且可被存儲在多個不同的計算機系統(tǒng)上。另外,每個副本具有主副本拷貝以及一個或多個輔助拷貝,以維護高度可用服務(wù)。用戶對邏輯數(shù)據(jù)庫的操作可看起來具有單個系統(tǒng)映像,以使得客戶不會看到這些分區(qū)或者邏輯數(shù)據(jù)庫分裂成多個分區(qū)。
對無共享群集數(shù)據(jù)庫的升級可包括在同時對每個分區(qū)執(zhí)行方法300的步驟。在一些情形中,N個主副本、N個第一輔助副本和N個第二輔助副本可從運行當(dāng)前軟件版本的第一服務(wù)器實例被分離,并被附連到運行經(jīng)升級的軟件版本的第二實例。在其他情形中,N個第一和N個第二輔助副本可從第一服務(wù)器實例被分離,并被附連至每個相應(yīng)節(jié)點上的第二服務(wù)器實例。隨后,N個主副本可從第一服務(wù)器實例移開到每個相應(yīng)節(jié)點上的第二服務(wù)器實例。因而,提供了使用多個、同時運行的數(shù)據(jù)庫服務(wù)器實例來提供分布式數(shù)據(jù)庫服務(wù)升級的方法、系統(tǒng)和計算機程序產(chǎn)品。此外,提供了監(jiān)視并自動解決在分布式數(shù)據(jù)庫服務(wù)升級期間可能發(fā)生的問題的方法、系統(tǒng)和計算機程序產(chǎn)品。本發(fā)明可具體化為其它具體形式而不背離其精神或本質(zhì)特征。所描述的實施例在所有方面都應(yīng)被認(rèn)為僅是說明性而非限制性的。因此,本發(fā)明的范圍由所附權(quán)利要求書而 非前述描述指示。落入權(quán)利要求書的等效方案的含義和范圍內(nèi)的所有改變被權(quán)利要求書的范圍所涵蓋。
權(quán)利要求
1.ー種在包括多個計算系統(tǒng)的計算機聯(lián)網(wǎng)環(huán)境中的包括至少ー個處理器和存儲器的分布式數(shù)據(jù)庫系統(tǒng)處,用于使用多個數(shù)據(jù)庫服務(wù)器實例提供分布式數(shù)據(jù)庫服務(wù)升級的計算機實現(xiàn)的方法,所述方法包括 在數(shù)據(jù)庫群集中的一個或多個計算機系統(tǒng)125A-C上實例化多個第一和第二數(shù)據(jù)庫服務(wù)器實例的動作,其中所述第一數(shù)據(jù)庫服務(wù)器實例130A-C被配置成使用當(dāng)前分布式數(shù)據(jù)庫服務(wù)版本來操作,而所述第二數(shù)據(jù)庫服務(wù)器實例131A-C被配置成使用新的分布式數(shù)據(jù)庫服務(wù)版本來操作; 接收所述分布式數(shù)據(jù)庫服務(wù)將被升級的指示的動作;以及 基于接收到的指示,在基本上沒有用戶可見的停機時間的情況下,將數(shù)據(jù)庫副本134A-C從所述第一數(shù)據(jù)庫服務(wù)器實例遷移至所述第二數(shù)據(jù)庫服務(wù)器實例的動作。
2.如權(quán)利要求I所述的方法,其特征在于,所述第一計算機系統(tǒng)包括與不同的數(shù)據(jù)庫 相對應(yīng)的ー個或多個主副本以及ー個或多個輔助副本。
3.如權(quán)利要求I所述的方法,其特征在于,所述分布式數(shù)據(jù)庫服務(wù)提供以下中的至少ー個故障切換保證和負(fù)載平衡保證。
4.如權(quán)利要求I所述的方法,其特征在于,所述分布式數(shù)據(jù)庫服務(wù)包括在無需人類介入的情況下確定升級是成功還是失敗的邏輯。
5.如權(quán)利要求I所述的方法,其特征在于,所述主節(jié)點的副本以及所述第一和第二輔助副本從當(dāng)前分布式數(shù)據(jù)庫服務(wù)版本被分離,并被重新附連到所述主節(jié)點以及所述第一和第二輔助節(jié)點的、被配置成使用所述新的分布式數(shù)據(jù)庫服務(wù)版本操作的所述第二服務(wù)器實例。
6.如權(quán)利要求I所述的方法,其特征在于,還包括 將所述第一和第二輔助副本移至所述第一和第二輔助節(jié)點的、被配置成使用所述新的分布式數(shù)據(jù)庫服務(wù)版本操作的所述第二服務(wù)器實例; 將所述主副本的角色故障切換至所述輔助副本中的至少ー個;以及 通過從所述第一服務(wù)器實例移至運行所述新的分布式數(shù)據(jù)庫服務(wù)版本的所述第二服務(wù)器實例來將所述主副本升級至所述新的分布式數(shù)據(jù)庫服務(wù)版本。
7.如權(quán)利要求I所述的方法,其特征在于,還包括 將所述數(shù)據(jù)庫的一個或多個附加副本創(chuàng)建為操作所述新的分布式數(shù)據(jù)庫服務(wù)版本的輔助副本; 將所述主副本以及第一和第二輔助副本故障切換至所述附加輔助節(jié)點;以及 移除所述主副本以及第一和第二輔助副本。
8.如權(quán)利要求I所述的方法,其特征在干,從所述第一服務(wù)器實例至所述第二服務(wù)器實例的遷移發(fā)生在同一計算機系統(tǒng)上,以使得避免了計算機系統(tǒng)之間的數(shù)據(jù)移動。
9.如權(quán)利要求I所述的方法,其特征在干,從所述第一實例至所述第二服務(wù)器實例的遷移發(fā)生在多個計算機系統(tǒng)上,以允許至不同計算機系統(tǒng)的數(shù)據(jù)庫遷移。
10.如權(quán)利要求I所述的方法,其特征在于,跨所述第一和第二服務(wù)器實例來管控處理資源,以使得所述分布式數(shù)據(jù)庫服務(wù)遵循一個或多個現(xiàn)有服務(wù)級協(xié)定。
11.如權(quán)利要求10所述的方法,其特征在于,與所述分布式數(shù)據(jù)庫服務(wù)同步地遷移所述ー個或多個服務(wù)級協(xié)定,以使得當(dāng)數(shù)據(jù)的一部分被轉(zhuǎn)移至所述第二實例時,所述第二實例接收到處理資源的相應(yīng)增加。
12.一種用于實現(xiàn)用來監(jiān)視和維護分布式數(shù)據(jù)庫服務(wù)升級過程的方法的計算機程序產(chǎn)品,所述計算機程序產(chǎn)品包括其上存儲有計算機可執(zhí)行指令的一個或多個計算機可讀存儲介質(zhì),所述指令在由所述計算系統(tǒng)的ー個或多個處理器執(zhí)行時使得所述計算系統(tǒng)執(zhí)行所述方法,所述方法包括 標(biāo)識分布式數(shù)據(jù)庫服務(wù)(130A-C或131A-C)的將被監(jiān)視的ー個或多個操作部分的動作,其中所標(biāo)識的操作部分表示所述分布式數(shù)據(jù)庫服務(wù)的故障點; 監(jiān)視132A-C所標(biāo)識的操作部分以確定何時以及在哪里已發(fā)生故障中的至少ー者的動作; 確定在所述操作部分的ー個或多個中已發(fā)生ー個或多個故障的動作;以及 在沒有外部介入的情況下評估所標(biāo)識的故障以確定如何對該故障進行響應(yīng)的動作。
13.如權(quán)利要求12所述的計算機程序產(chǎn)品,其特征在于,還包括自動實現(xiàn)所確定的響應(yīng)以解決所述故障,以及允許所述分布式數(shù)據(jù)庫服務(wù)繼續(xù)操作。
14.如權(quán)利要求12所述的計算機程序產(chǎn)品,其特征在于,所確定的響應(yīng)包括臨時暫停所述分布式數(shù)據(jù)庫服務(wù)。
15.—種分布式計算機系統(tǒng),包括 一個或多個處理器; 系統(tǒng)存儲器; 其上存儲有計算機可執(zhí)行指令的一個或多個計算機可讀存儲介質(zhì),所述計算機可執(zhí)行指令在由所述ー個或多個處理器執(zhí)行時使得所述計算系統(tǒng)執(zhí)行一種用于使用多個數(shù)據(jù)庫實例來提供分布式數(shù)據(jù)庫服務(wù)升級的方法,所述方法包括以下各個動作 對于所述分布式數(shù)據(jù)庫系統(tǒng)中的每個分區(qū),在無共享分布式計算系統(tǒng)500中的第一節(jié)點520A上實例化第一 130A-C和第二 131A-C服務(wù)器實例、在所述無共享分布式計算系統(tǒng)中的第一數(shù)據(jù)庫輔助節(jié)點520B上實例化第一和第二服務(wù)器實例、以及在所述無共享分布式計算系統(tǒng)中的第二數(shù)據(jù)庫輔助節(jié)點520C上實例化第一和第二服務(wù)器實例的動作,其中所述第一實例被配置成使用當(dāng)前分布式數(shù)據(jù)庫服務(wù)版本來操作,而所述第二實例被配置成使用新的分布式數(shù)據(jù)庫服務(wù)版本來操作; 接收所述分布式數(shù)據(jù)庫服務(wù)將被升級的指示的動作;以及 基于接收到的指示,遷移所述數(shù)據(jù)庫中的每個分區(qū)的每個副本510A-I的動作,其中所述遷移包括在基本上沒有用戶可見的停機時間的情況下,從所述主節(jié)點的所述第一服務(wù)器實例遷移至所述無共享分布式計算系統(tǒng)中的第一節(jié)點上的所述主節(jié)點的第二服務(wù)器實例,將所述第一輔助節(jié)點的所述第一服務(wù)器實例遷移至所述無共享分布式計算系統(tǒng)中的第二節(jié)點上的所述第一輔助節(jié)點的所述第二服務(wù)器實例,以及將所述第二輔助節(jié)點的所述第一服務(wù)器實例遷移至所述無共享分布式計算系統(tǒng)中的第三節(jié)點上的所述第二輔助節(jié)點的所述第二服務(wù)器實例。
全文摘要
本文描述了分布式數(shù)據(jù)庫系統(tǒng)中的無縫升級。各實施例涉及使用多個數(shù)據(jù)庫服務(wù)器實例提供對計算機群集中的數(shù)據(jù)庫服務(wù)器實例的分布式數(shù)據(jù)庫服務(wù)升級,以及在升級期間監(jiān)視和維護分布式數(shù)據(jù)庫服務(wù)。在一個實施例中,計算機群集中的每個計算機系統(tǒng)在該群集中的各節(jié)點里的每一個節(jié)點上實例化至少兩個不同的數(shù)據(jù)庫服務(wù)器實例。第一數(shù)據(jù)庫服務(wù)器實例被配置成使用當(dāng)前分布式數(shù)據(jù)庫版本來操作,而第二實例被配置成使用新的已更新的分布式數(shù)據(jù)庫服務(wù)版本來操作。計算機系統(tǒng)接收分布式數(shù)據(jù)庫服務(wù)將被升級的指示。隨后,基于接收到的指示,計算機系統(tǒng)將數(shù)據(jù)庫副本從第一數(shù)據(jù)庫服務(wù)器實例遷移至操作新的已更新的服務(wù)版本的第二數(shù)據(jù)庫服務(wù)器實例,而基本上沒有用戶可見的停機時間。
文檔編號G06F17/30GK102737088SQ20121007131
公開日2012年10月17日 申請日期2012年3月16日 優(yōu)先權(quán)日2011年3月18日
發(fā)明者A·卡爾漢, A·韋爾比茨基, C·J·坎寧安, C·T·蒂伯, J·A·伊斯特, S·O·沃蒂萊寧, T·塔留斯, Y·朱 申請人:微軟公司