技術(shù)領(lǐng)域
本發(fā)明涉及供應(yīng)并管理已復(fù)制數(shù)據(jù)。
背景技術(shù):
當(dāng)越來越多數(shù)量的應(yīng)用和服務(wù)通過網(wǎng)絡(luò)例如互聯(lián)網(wǎng)變得可用時,越來越多數(shù)量的內(nèi)容、應(yīng)用和/或服務(wù)提供商求助于諸如云計算的技術(shù)。云計算通常是通過服務(wù)例如Web服務(wù)來提供對電子資源的訪問的方法,其中用于支持那些服務(wù)的硬件和/或軟件動態(tài)地可升級來在任何給定的時間滿足服務(wù)的需要。用戶或客戶一般將租借、租用或以其它方式支付通過云訪問資源的費用,并因此不必購買和維持硬件和/或軟件來提供對這些資源的訪問。
雖然各種應(yīng)用和資源的方面可在云中被調(diào)節(jié)和管理,但這些應(yīng)用和資源所依賴的數(shù)據(jù)存儲庫并不類似地被客戶或其它這樣的用戶調(diào)節(jié)或容易管理。一般,執(zhí)行諸如供應(yīng)并按比例調(diào)整數(shù)據(jù)存儲的任務(wù)是冗長乏味的手工程序,其中客戶必須給數(shù)據(jù)庫管理員(DBA)或類似的專家用戶提供配置信息和需要,使得DBA可確定配置是否是有效的。此外,不存在使客戶容易動態(tài)地和/或自動地調(diào)節(jié)數(shù)據(jù)庫實例的參數(shù)或管理數(shù)據(jù)存儲庫的其它這樣的方面的方法。在很多情況下,數(shù)據(jù)實例將使備份和恢復(fù)機制在適當(dāng)?shù)牡胤?,但這些機制常常在單個位置或區(qū)域中,使得它們在該區(qū)域中容易受到失敗或出故障。
技術(shù)實現(xiàn)要素:
本公開涉及一種用于縮放已復(fù)制的數(shù)據(jù)庫的方法,包括:使用一個或多個計算設(shè)備執(zhí)行以下操作:接收用于對具有第一實例副本和第二實例副本的已復(fù)制的數(shù)據(jù)庫的存儲進行縮放的服務(wù)請求,其中所述已復(fù)制的數(shù)據(jù)庫被配置成將所述第一實例副本的寫操作應(yīng)用于所述第二實例副本;對所述第一實例副本和所述第二實例副本的存儲進行縮放;響應(yīng)于所述第一實例副本的故障,將所述第一實例副本的網(wǎng)絡(luò)地址信息與所述第二實例副本相關(guān)聯(lián)。
本公開還涉及一種用于縮放已復(fù)制的數(shù)據(jù)庫的系統(tǒng),包括:處理器;以及包括指令的存儲器設(shè)備,所述指令在由所述處理器執(zhí)行時使得所述處理器:接收用于對具有第一實例副本和第二實例副本的已復(fù)制的數(shù)據(jù)庫的存儲進行縮放的服務(wù)請求,其中所述已復(fù)制的數(shù)據(jù)庫被配置成將所述第一實例副本的寫操作應(yīng)用于所述第二實例副本;對所述第一實例副本和所述第二實例副本的存儲進行縮放;響應(yīng)于所述第一實例副本的故障,將所述第一實例副本的網(wǎng)絡(luò)地址信息與所述第二實例副本相關(guān)聯(lián)。
附圖說明
將參考附圖描述根據(jù)本公開的各種實施方案,其中:
圖1示出各種實施方案可被實現(xiàn)的環(huán)境;
圖2示出可根據(jù)各種實施方案使用的控制面和數(shù)據(jù)面的示例性分離;
圖3示出用于在多個數(shù)據(jù)區(qū)中運行可根據(jù)一個實施方案使用的已復(fù)制數(shù)據(jù)實例的示例性實現(xiàn);
圖4示出用于創(chuàng)建可根據(jù)一個實施方案使用的已復(fù)制數(shù)據(jù)實例的示例性過程;
圖5示出用于創(chuàng)建可根據(jù)一個實施方案使用的主要副本的示例性過程;以及
圖6示出用于創(chuàng)建可根據(jù)一個實施方案使用的輔助副本的示例性過程。
具體實施方式
根據(jù)本公開的各種實施方案的系統(tǒng)和方法可克服在常規(guī)方法中經(jīng)歷的前述和其它不足的一個或多個,以在電子環(huán)境中管理數(shù)據(jù)存儲的方面。特別是,各種實施方案提供單獨的控制環(huán)境、或可用于使用戶能夠管理和/或改變數(shù)據(jù)環(huán)境的各種方面的控制面、或數(shù)據(jù)面??山?jīng)由一組Web服務(wù)提供這種“自我服務(wù)”功能,使用戶面和控制面能夠一起充當(dāng)虛擬數(shù)據(jù)庫管理員(DBA)。用戶或客戶可通過例如多個外部可見的應(yīng)用編程接口(API)之一向控制面提交請求。各種API可用于在數(shù)據(jù)環(huán)境中執(zhí)行關(guān)于數(shù)據(jù)存儲庫例如關(guān)系數(shù)據(jù)庫的特定功能。被接收到API之一的請求可被分析以確定將在數(shù)據(jù)面中執(zhí)行的期望行動,例如調(diào)節(jié)數(shù)據(jù)存儲器或數(shù)據(jù)存儲實例的操作或配置參數(shù)的行動。部件例如工作流部件可確定對行動的適當(dāng)任務(wù),并使任務(wù)以適當(dāng)?shù)捻樞驁?zhí)行。這些任務(wù)中的至少一個一般將在數(shù)據(jù)環(huán)境中被執(zhí)行,例如以調(diào)節(jié)關(guān)系數(shù)據(jù)庫的方面。
根據(jù)某些實施方案,這樣的系統(tǒng)可在數(shù)據(jù)環(huán)境中提供已復(fù)制數(shù)據(jù)實例的供應(yīng)。供應(yīng)可利用主要-輔助復(fù)制方法,主要副本和輔助副本的每個在一個或多個分離的數(shù)據(jù)區(qū)、單獨的地理位置等中或跨越一個或多個分離的數(shù)據(jù)區(qū)、單獨的地理位置等來供應(yīng)。數(shù)據(jù)庫副本可在單獨的數(shù)據(jù)實例上運行,每個數(shù)據(jù)實例連接到在副本中未被共享的專用塊存儲卷。
在各種實施方案中,可使用塊級復(fù)制機制例如來自奧地利Vienna的Linbit的分布式復(fù)制塊設(shè)備或如華盛頓州西雅圖的Amazon.com公司所提供的彈性塊存儲(EBS)來執(zhí)行復(fù)制,塊級復(fù)制機制可反映在服務(wù)器之間的塊設(shè)備的內(nèi)容,并在冗余系統(tǒng)中同步地復(fù)制數(shù)據(jù)。每個實例可運行安裝成管理數(shù)據(jù)實例的所有輸入和輸出(I/O)操作的具有塊級復(fù)制機制內(nèi)核模塊的內(nèi)核??稍谥饕北咎巿?zhí)行所有讀和寫,塊級復(fù)制機制與輔助副本同步地復(fù)制信息。
主要副本和輔助副本都可具有外部面向的DNS名稱??蛻艨墒褂肈NS名稱例如DNS_primary來得到當(dāng)前的主要副本。DNS_primary名稱可又被稱為或“cname”為(當(dāng)前)主要副本的外部DNS名稱。當(dāng)主要副本故障或否則不可用時,輔助副本可被提升或故障切換以變成新的主要副本,由此DNS_primary的cname可更新到新的主要實例的DNS名稱。所有寫被發(fā)送到在當(dāng)前主要副本上的數(shù)據(jù)庫。當(dāng)主要實例接收到寫時,信息被同步地寫到輔助副本上。當(dāng)在兩個地方成功地寫時,寫可被認為是成功的。在各種實施方案中在主要副本處只執(zhí)行所有讀。
圖1示出用于實現(xiàn)根據(jù)各種實施方案的方面的環(huán)境100的例子。如將被認識到的,雖然基于Web的環(huán)境用于解釋的目的,但是不同的環(huán)境可在適當(dāng)時用于實現(xiàn)各種實施方案。所示的環(huán)境100包括測試或發(fā)展部分(或側(cè))和生產(chǎn)部分。生產(chǎn)部分包括電子客戶端設(shè)備102,其可包括可操作來通過適當(dāng)?shù)木W(wǎng)絡(luò)104發(fā)送并接收請求、消息或信息并將信息傳送回設(shè)備的用戶的任何適當(dāng)?shù)脑O(shè)備。這樣的客戶端設(shè)備的例子包括個人計算機、蜂窩電話、手持式消息發(fā)送設(shè)備、膝上型計算機、機頂盒、個人數(shù)字助理、電子書閱讀器等。網(wǎng)絡(luò)可包括任何適當(dāng)?shù)木W(wǎng)絡(luò),包括內(nèi)聯(lián)網(wǎng)、互聯(lián)網(wǎng)、蜂窩網(wǎng)絡(luò)、局域網(wǎng)或任何其它這樣的網(wǎng)絡(luò)或其組合。用于這樣的系統(tǒng)的部件可至少部分地取決于網(wǎng)絡(luò)的類型和/或所選擇的環(huán)境。用于經(jīng)由這樣的網(wǎng)絡(luò)進行通信的協(xié)議和部件是公知的,且將不在本文詳細地討論。通過網(wǎng)絡(luò)的通信可通過有線或無線連接或其組合來實現(xiàn)。在本實例中,網(wǎng)絡(luò)包括互聯(lián)網(wǎng),因為環(huán)境包括用于接收請求并響應(yīng)于該請求的Web服務(wù)器106,雖然對于其它網(wǎng)絡(luò),可使用服務(wù)于類似的目的的可選設(shè)備,如對本領(lǐng)域的普通技術(shù)人員明顯的。
例證性環(huán)境包括至少一個應(yīng)用服務(wù)器108和數(shù)據(jù)存儲器110。應(yīng)理解,可能有一些應(yīng)用服務(wù)器、層或其它元件、過程或部件,其可被鏈接或以其它方式配置,其可相互作用以執(zhí)行任務(wù),例如從適當(dāng)?shù)臄?shù)據(jù)存儲器獲得數(shù)據(jù)。如本文使用的,術(shù)語“數(shù)據(jù)存儲器”指能夠存儲、訪問和檢索數(shù)據(jù)的任何設(shè)備或設(shè)備的組合,其可包括在任何標(biāo)準(zhǔn)的、分布式或群集環(huán)境中的任何組合和數(shù)量的數(shù)據(jù)服務(wù)器、數(shù)據(jù)庫、數(shù)據(jù)存儲設(shè)備和數(shù)據(jù)存儲介質(zhì)。應(yīng)用服務(wù)器可包括按需要與數(shù)據(jù)存儲器合并以為客戶端設(shè)備執(zhí)行一個或多個應(yīng)用的方面、為應(yīng)用處理大多數(shù)數(shù)據(jù)訪問和商業(yè)邏輯的任何適當(dāng)?shù)挠布蛙浖?。?yīng)用服務(wù)器與數(shù)據(jù)存儲器協(xié)作來提供訪問控制服務(wù),并能夠產(chǎn)生內(nèi)容例如文本、圖形、音頻和/或視頻以傳輸?shù)接脩簦搩?nèi)容在本實例中可通過Web服務(wù)器以HTML、XML或另一適當(dāng)?shù)慕Y(jié)構(gòu)語言的形式提供給用戶。所有請求和響應(yīng)的處理以及在客戶端設(shè)備102和應(yīng)用服務(wù)器108之間的內(nèi)容的傳送可由Web服務(wù)器處理。應(yīng)理解,Web和應(yīng)用服務(wù)器是不需要的,且僅僅是示例性部件,如本文討論的結(jié)構(gòu)代碼可在任何適當(dāng)?shù)脑O(shè)備或主機上執(zhí)行,如在本文其它地方討論的。此外,環(huán)境可被構(gòu)造成使得測試自動框架可被提供為用戶或應(yīng)用可訂閱的服務(wù)。測試自動框架可被提供為在本文討論的各種測試模式中的任一個的實現(xiàn),雖然也可使用各種其它實現(xiàn),如本文討論或建議的。
環(huán)境還包括發(fā)展和/或測試側(cè),其包括允許用戶例如開發(fā)者、數(shù)據(jù)管理員或測試者訪問系統(tǒng)的用戶設(shè)備118。用戶設(shè)備118可以是例如上面關(guān)于客戶端設(shè)備102描述的任何適當(dāng)?shù)脑O(shè)備或機器。環(huán)境還包括發(fā)展服務(wù)器120,其類似于應(yīng)用服務(wù)器108起作用,但一般在代碼在生產(chǎn)側(cè)上被部署并執(zhí)行之前在發(fā)展和測試期間運行代碼,并例如是外部用戶是可訪問的。在一些實施方案中,應(yīng)用服務(wù)器可起發(fā)展服務(wù)器的作用,且分離的生產(chǎn)和測試存儲可以不被使用。
輸出存儲器110可包括一些分離的數(shù)據(jù)表、數(shù)據(jù)庫或用于存儲關(guān)于特定方面的數(shù)據(jù)的其它數(shù)據(jù)存儲機制和介質(zhì)。例如,所示的數(shù)據(jù)存儲器包括可用于為生產(chǎn)側(cè)提供內(nèi)容的、用于存儲生產(chǎn)數(shù)據(jù)112和用戶信息116的機制。數(shù)據(jù)存儲器也被示為包括用于存儲測試數(shù)據(jù)114的機制,測試數(shù)據(jù)114可與用戶信息一起對測試側(cè)使用。應(yīng)理解,可能有很多其它方面,其可能需要存儲在數(shù)據(jù)存儲器中,例如頁面圖像信息和訪問權(quán)限信息,其可在適當(dāng)時存儲在上面列出的機制的任一個中或在數(shù)據(jù)存儲器110的額外機制中。數(shù)據(jù)存儲器110通過與其相關(guān)的邏輯可操作來接收來自應(yīng)用服務(wù)器108或發(fā)展服務(wù)器120的指令,并響應(yīng)于其而獲得、更新或以其它方式處理數(shù)據(jù)。在一個例子中,用戶可提交對某種類型的項目的搜索請求。在這種情況下,數(shù)據(jù)存儲器可訪問用戶信息以驗證用戶的身份,并可訪問目錄細節(jié)信息以獲得關(guān)于該類型的項目的信息。該信息接著可例如在用戶能夠通過用戶設(shè)備102上的瀏覽器查看的網(wǎng)頁上列出的結(jié)果中返回給用戶。可在瀏覽器的專用頁面或窗口中查看對所關(guān)注的特定項目的信息。
每個服務(wù)器一般將包括提供對該服務(wù)器的一般管理和操作的可執(zhí)行程序指令的操作系統(tǒng),并一般將包括存儲指令的計算機可讀介質(zhì),當(dāng)所述指令由服務(wù)器的處理器執(zhí)行時允許服務(wù)器執(zhí)行其預(yù)期的功能。對服務(wù)器的操作系統(tǒng)和一般功能的適當(dāng)實現(xiàn)是已知的或在市場上可得到的,并容易由本領(lǐng)域普通技術(shù)人員特別根據(jù)本文的公開來實現(xiàn)。
在一個實施方案中的環(huán)境是利用經(jīng)由通信鏈路使用一個或多個計算機網(wǎng)絡(luò)或直接連接來互連的一些計算機系統(tǒng)和部件的分布式計算環(huán)境。然而,本領(lǐng)域的普通技術(shù)人員將認識到,這樣的系統(tǒng)可同樣好地在具有比圖1所示的更少或更多數(shù)量的部件的系統(tǒng)中操作。因此,圖1中的系統(tǒng)100的描繪應(yīng)被理解為本質(zhì)上是例證性的,且不限于本公開的范圍。
例如圖1所示的環(huán)境可能對提供商例如電子市場是有用的,其中多個主機可用于執(zhí)行任務(wù),例如服務(wù)內(nèi)容、認證用戶、執(zhí)行支付交易、或執(zhí)行很多其它這樣的任務(wù)中的任一個。這些主機中的一些可配置成提供相同的功能性,而其它服務(wù)器可配置成執(zhí)行至少一些不同的功能。在這樣的情況下的電子環(huán)境可包括額外的部件和/或其它布置,例如在下面詳細討論的在圖2的配置200中示出的那些部件。
根據(jù)一個實施方案的系統(tǒng)和方法提供使開發(fā)者、客戶或其它經(jīng)授權(quán)的用戶能夠容易和成本有效地獲得并配置關(guān)系數(shù)據(jù)庫和其它這樣的數(shù)據(jù)源的關(guān)系數(shù)據(jù)庫服務(wù)(“RDS”),使得用戶可執(zhí)行任務(wù),例如存儲、處理和查詢云中的關(guān)系數(shù)據(jù)集。雖然關(guān)于互聯(lián)網(wǎng)、Web服務(wù)和基于互聯(lián)網(wǎng)的技術(shù)討論了這個例子,應(yīng)理解,各種實施方案的方面可與在電子環(huán)境中通過網(wǎng)絡(luò)可得到或提供的任何適當(dāng)?shù)姆?wù)一起使用。此外,雖然服務(wù)在本文被稱為“關(guān)系數(shù)據(jù)庫服務(wù)”,但應(yīng)理解,這樣的服務(wù)可在電子環(huán)境中與任何適當(dāng)類型的數(shù)據(jù)存儲庫或數(shù)據(jù)存儲器一起使用。在本實例中的RDS包括至少一種Web服務(wù),其使用戶或客戶能夠容易管理關(guān)系數(shù)據(jù)集,而不擔(dān)心部署、升級、補丁管理、備份、復(fù)制、故障切換、容量管理、按比例調(diào)整和數(shù)據(jù)管理的其它這樣的方面的管理復(fù)雜性。開發(fā)者因此自由地開發(fā)復(fù)雜的云應(yīng)用,而不擔(dān)心管理數(shù)據(jù)庫基礎(chǔ)設(shè)施的復(fù)雜性。
在一個實施方案中的RDS提供單獨的“控制面”,其包括對管理數(shù)據(jù)存儲的方面有用的部件(例如,硬件和軟件)。在一個實施方案中,提供允許用戶或客戶在RDS內(nèi)進行調(diào)用以執(zhí)行與數(shù)據(jù)存儲有關(guān)的某些任務(wù)的一組數(shù)據(jù)管理應(yīng)用編程接口(API)或其它這樣的接口。然而,用戶仍然可使用直接接口或API來與數(shù)據(jù)存儲庫進行通信,并可僅當(dāng)必要時使用控制面的RDS特定的API,以管理數(shù)據(jù)存儲或執(zhí)行類似的任務(wù)。
圖2示出可根據(jù)一個實施方案使用的RDS實現(xiàn)200的例子。在本實例中,最終用戶的計算設(shè)備202被示為能通過網(wǎng)絡(luò)206在控制面208內(nèi)進行調(diào)用,以執(zhí)行任務(wù),例如提供數(shù)據(jù)面210的數(shù)據(jù)存儲庫。用戶或應(yīng)用204可直接通過數(shù)據(jù)面210的接口訪問所供應(yīng)的存儲庫。雖然最終用戶計算設(shè)備和應(yīng)用用于解釋的目的,但是應(yīng)理解,任何適當(dāng)?shù)挠脩?、?yīng)用、服務(wù)、設(shè)備、部件或資源可在各種實施方案中在適當(dāng)時訪問控制面和/或數(shù)據(jù)面的接口。此外,雖然部件分成控制面和數(shù)據(jù)面,但是應(yīng)理解,這可指用于提供相應(yīng)的功能性的至少一些資源(例如,硬件和/或軟件)的實際或虛擬分離。
在本實例中的控制面208本質(zhì)上是處理控制和管理行動例如供應(yīng)、按比例調(diào)整、復(fù)制等的硬件和軟件部件的虛擬層。在本實施方案中的控制面包括Web服務(wù)層212或?qū)樱淇砂ㄖ辽僖粋€Web服務(wù)器,例如連同計算機可執(zhí)行軟件、應(yīng)用服務(wù)器或其它這樣的部件。Web服務(wù)層還可包括用于從訪問網(wǎng)絡(luò)206接收Web服務(wù)調(diào)用或請求的一組API 232(或其它這樣的接口)??商峁┟總€API來接收對將關(guān)于數(shù)據(jù)環(huán)境執(zhí)行的至少一個特定的行動的請求,例如供應(yīng)、按比例調(diào)整、克隆關(guān)系數(shù)據(jù)庫的實例或使關(guān)系數(shù)據(jù)庫的實例冬眠。當(dāng)接收到對API之一的請求時,Web服務(wù)層可解析或以其它方式分析該請求以確定作用于或處理調(diào)用所需的步驟或行動。例如,可接收包括對創(chuàng)建數(shù)據(jù)存儲庫的請求的Web服務(wù)調(diào)用。在本實例中,Web服務(wù)層可解析該請求以確定待創(chuàng)建的數(shù)據(jù)存儲庫的類型、所請求的存儲卷、所請求的硬件(如果有)的類型、或其它這樣的方面。對請求的信息可被寫到管理(“Admin”)數(shù)據(jù)存儲器222或其它適當(dāng)?shù)拇鎯ξ恢没蚬ぷ麝犃?,用于隨后的處理。
在一個實施方案中的Web服務(wù)層包括一組可升級的面向客戶的服務(wù)器,其可提供各種控制面API并基于API規(guī)范返回適當(dāng)?shù)捻憫?yīng)。Web服務(wù)層還可包括至少一個API服務(wù)層,其在一個實施方案中由處理面向外部的客戶API的無國籍復(fù)制服務(wù)器組成。Web服務(wù)層可負責(zé)Web服務(wù)前端特征,例如基于證書來認證客戶、授權(quán)客戶、抑制對API服務(wù)器的客戶請求、使用戶輸入生效、并將請求和響應(yīng)編組或編出。API層也可負責(zé)響應(yīng)于API調(diào)用而從管理數(shù)據(jù)存儲器讀數(shù)據(jù)庫配置數(shù)據(jù)/將數(shù)據(jù)庫配置數(shù)據(jù)寫到管理數(shù)據(jù)存儲器。在很多實施方案中,Web服務(wù)層和/或API服務(wù)層將是唯一的外部可見的部件,或?qū)刂品?wù)的客戶可見并可由客戶訪問的唯一部件。Web服務(wù)層的服務(wù)器可以是無國籍的,并水平地按比例調(diào)整,如本領(lǐng)域中已知的。API服務(wù)器以及持久數(shù)據(jù)存儲器可例如在地理區(qū)域中或地理位置附近的多個數(shù)據(jù)中心中擴展,使得服務(wù)器對單個數(shù)據(jù)中心故障是能復(fù)原的。
在本實施方案中的控制面包括在本文稱為“清理器”部件214的部件。清理器部件可以是可操作來輪詢控制面的各種部件或以其它方式確定將響應(yīng)于未完成的請求來執(zhí)行的任何任務(wù)的任何適當(dāng)?shù)牟考T诒緦嵗?,Web服務(wù)層可將“創(chuàng)建數(shù)據(jù)庫”請求的指令或信息放置在管理數(shù)據(jù)存儲器222或類似的工作隊列中,且清理器可周期性地檢查用于未完成的工作的管理數(shù)據(jù)庫??墒褂酶鞣N其它方法,如將對本領(lǐng)域的普通技術(shù)人員明顯的,例如向清理器發(fā)送工作存在的通知的Web服務(wù)。清理器部件可獲得“創(chuàng)建數(shù)據(jù)庫”請求,且使用該請求的信息可將請求、調(diào)用或其它這樣的命令發(fā)送到可操作來例示該請求的至少一個工作流的工作流部件216。使用如在文本的其它地方討論的工作流服務(wù)來產(chǎn)生和維持在一個實施方案中的工作流。通常工作流是應(yīng)被執(zhí)行來執(zhí)行特定的工作的一系列任務(wù)。工作流不是實際工作,而是控制信息的流動和工作的執(zhí)行的工作的抽象。工作流也可被認為是狀態(tài)機,其可在執(zhí)行期間的任何時間管理并返回過程的狀態(tài)。在一個實施方案中的工作流部件(或部件的系統(tǒng))可操作來為例如下列任務(wù)管理和/或執(zhí)行工作流的托管和執(zhí)行:存儲庫創(chuàng)建、修改和探測;恢復(fù)和備份;安全組創(chuàng)建、探測和修改;用戶證書管理;以及密鑰旋轉(zhuǎn)和證書管理。這樣的工作流可緊隨著工作流服務(wù)實現(xiàn),如在本文的其它地方討論的。工作流部件也可管理在用于不同的數(shù)據(jù)庫引擎例如MySQL的工作流步驟之間的差異,因為下層工作流服務(wù)不一定改變。
在本實例中,可使用用于創(chuàng)建數(shù)據(jù)庫并應(yīng)用從原始請求提取的信息的工作流模板來例示工作流。例如,如果請求是針對關(guān)系數(shù)據(jù)庫管理系統(tǒng)(RDBMS)實例,與RDBMS或其它這樣的實例相反,則特定的任務(wù)將被添加到指向MySQL實例的工作流。工作流部件也可選擇與所請求的存儲的量有關(guān)的特定任務(wù)、任何特定的硬件需要或其它這樣的任務(wù)。這些任務(wù)可按對總工作有用的執(zhí)行順序被添加到工作流。雖然一些任務(wù)可被并行地執(zhí)行,但其它任務(wù)依賴于將被首先完成的以前任務(wù)。工作流部件或服務(wù)可在工作流中包括這個信息,且任務(wù)可按需要被執(zhí)行以及信息被傳遞。
客戶的示例性“創(chuàng)建數(shù)據(jù)庫”工作流可包括任務(wù),例如供應(yīng)數(shù)據(jù)存儲實例,分配實例外持久存儲的卷,將持久存儲卷連接到數(shù)據(jù)存儲實例,接著分配并連接DNS地址或客戶可用于訪問或以其它方式連接到數(shù)據(jù)實例的其它地址、端口、接口或標(biāo)識符。在本實例中,給用戶提供用于訪問實例的DNS地址和端口地址。工作流也可包括下載并安裝任何二進制或用于特定的數(shù)據(jù)存儲技術(shù)(例如,MySQL)的其它信息的任務(wù)。工作流部件可管理這些和任何相關(guān)任務(wù)的執(zhí)行、或這樣的任務(wù)的任何其它適當(dāng)?shù)慕M合,并可響應(yīng)于實際上相應(yīng)于數(shù)據(jù)面210中的數(shù)據(jù)存儲實例的“創(chuàng)建數(shù)據(jù)庫”請求而產(chǎn)生對指示“數(shù)據(jù)庫”的創(chuàng)建的請求的響應(yīng),并提供用于訪問實例的DNS地址。用戶接著可直接使用DNS地址和端口訪問數(shù)據(jù)存儲實例,而不必訪問或經(jīng)過控制面208。各種其它工作流模板可用于執(zhí)行類似的工作,例如刪除、創(chuàng)建或修改一個或多個數(shù)據(jù)存儲實例,例如增加存儲。在一些實施方案中,工作流信息被寫到存儲器,且至少一個單獨的執(zhí)行部件(未示出)拉或以其它方式訪問或接收將基于工作流信息執(zhí)行的任務(wù)。例如,可能存在執(zhí)行供應(yīng)任務(wù)的專用供應(yīng)部件,且該部件可能不被工作流部件調(diào)用,但可監(jiān)控任務(wù)隊列或可接收用于以很多相關(guān)方式中的任一種供應(yīng)任務(wù)的信息,如應(yīng)明顯的。
如所述,各種實施方案可利用可接收對過程或任務(wù)的當(dāng)前狀態(tài)例如供應(yīng)存儲庫的請求或調(diào)用的工作流服務(wù),并可返回過程的當(dāng)前狀態(tài)。工作流部件和/或工作流服務(wù)不進行實際調(diào)用或請求以執(zhí)行每個任務(wù),而相反管理使控制面的部件能夠確定待執(zhí)行的下一任務(wù)的工作流的狀態(tài)和配置信息以及該任務(wù)所需的信息,接著產(chǎn)生包括該狀態(tài)信息的在數(shù)據(jù)面內(nèi)的適當(dāng)調(diào)用,由此數(shù)據(jù)面的部件可進行調(diào)用以執(zhí)行任務(wù)。工作流和任務(wù)可并行地被調(diào)度,以便增加吞吐量并最大化處理資源。如所討論的,任務(wù)的實際執(zhí)行將出現(xiàn)在數(shù)據(jù)面中,但任務(wù)將起源于控制面。例如,工作流部件可與可在數(shù)據(jù)存儲器中進行調(diào)用的主機管理器通信。因此,對于給定的任務(wù),可對穿過某些參數(shù)的工作流服務(wù)進行調(diào)用,由此工作流服務(wù)產(chǎn)生工作流的任務(wù)的序列,并提供當(dāng)前狀態(tài),使得當(dāng)前狀態(tài)的任務(wù)可被執(zhí)行。在任務(wù)被執(zhí)行(或以其它方式被解決或終結(jié))之后,部件例如主機管理器可答復(fù)服務(wù),其可接著提供關(guān)于工作流中的下一狀態(tài)的信息,使得下一任務(wù)可被執(zhí)行。每當(dāng)工作流的任務(wù)之一被執(zhí)行時,服務(wù)可提供待執(zhí)行的新任務(wù),直到工作流完成。此外,可對不同的工作流并行地運行多個線程,以加速工作流的處理。
在本實施方案中的控制面208還包括至少一個監(jiān)控部件218。當(dāng)在數(shù)據(jù)面中創(chuàng)建數(shù)據(jù)實例時,可將該實例的信息寫到控制面中的數(shù)據(jù)存儲器例如監(jiān)控數(shù)據(jù)存儲器220中。應(yīng)理解,監(jiān)控數(shù)據(jù)存儲器可以是單獨的數(shù)據(jù)存儲器,或可以是另一數(shù)據(jù)存儲器的一部分,例如在管理數(shù)據(jù)存儲器222中的一組不同的表、或另一適當(dāng)?shù)拇鎯臁1O(jiān)控部件可訪問在監(jiān)控數(shù)據(jù)存儲器中的信息,以確定在數(shù)據(jù)平面210中的有效實例234。監(jiān)控部件也可執(zhí)行其它任務(wù),例如從控制面和/或數(shù)據(jù)面的多個部件例如Web服務(wù)層、工作流部件、清理器部件和各種主機管理器收集日志和/或事件信息。使用這樣的事件信息,監(jiān)控部件可暴露客戶可見的事件,用于例如實現(xiàn)面向客戶的API的目的。監(jiān)控部件可不斷地監(jiān)控控制面的所有運行的存儲庫和/或?qū)嵗慕】禒顟B(tài),探測這些實例中的任一個的故障,并發(fā)起適當(dāng)?shù)幕謴?fù)過程。
對于提供對數(shù)據(jù)存儲器的訪問的機器,在數(shù)據(jù)面中的每個實例234可包括至少一個數(shù)據(jù)存儲器226和主機管理器部件228。在一個實施方案中主機管理器是在實例和/或應(yīng)用服務(wù)器例如Tomcat或Java應(yīng)用服務(wù)器上執(zhí)行的應(yīng)用或軟件代理,其被編程為管理任務(wù)例如軟件部署和數(shù)據(jù)存儲操作以及監(jiān)控數(shù)據(jù)存儲器和/或相應(yīng)的實例的狀態(tài)。在一個實施方案中主機管理器偵聽只可從內(nèi)部系統(tǒng)部件到達且客戶或其它外部實體不可采用的端口。在一些實施方案中,主機管理器不能在控制面層內(nèi)發(fā)起任何調(diào)用。主機管理器可負責(zé)管理和/或執(zhí)行任務(wù),例如建立對新的存儲庫的實例,包括建立邏輯卷和文件系統(tǒng),安裝數(shù)據(jù)庫二進制和種子,并開始和停止存儲庫。主機管理器可監(jiān)控數(shù)據(jù)存儲器的健康狀態(tài)以及針對錯誤條件例如I/O錯誤或數(shù)據(jù)存儲器錯誤監(jiān)控數(shù)據(jù)存儲器,并且如果必要可重新啟動數(shù)據(jù)存儲器。主機管理器還執(zhí)行和/或管理數(shù)據(jù)存儲器和/或操作系統(tǒng)的軟件補丁和升級的安裝。主機管理器還可收集相關(guān)的度量,例如可與CPU、存儲器和I/O使用有關(guān)。
監(jiān)控部件可對所監(jiān)控的實例234例如通過發(fā)送特定的請求或通過監(jiān)控來自主機管理器的心跳來周期性地與每個主機管理器228進行通信,以確定每個主機的狀態(tài)。在一個實施方案中,監(jiān)控部件包括配置成向每個主機管理器發(fā)出命令的一組事件處理器(或監(jiān)控服務(wù)器),例如以獲得特定的主機和/或?qū)嵗臓顟B(tài)。如果響應(yīng)在特定數(shù)量的重試之后沒有被接收到,則監(jiān)控部件可確定存在問題,并可將信息存儲在管理數(shù)據(jù)庫222或另一這樣的工作隊列中以執(zhí)行對實例的行動,例如驗證該問題且如果必要則重新供應(yīng)實例。清理器可訪問該信息并切斷實例的恢復(fù)工作流以試圖自動從故障恢復(fù)。主機管理器228可充當(dāng)對控制面的監(jiān)控和其它部件的代理,代表控制面部件執(zhí)行實例的任務(wù)。有時候,實例之一例如相應(yīng)的主機、實例或卷毀損、再引導(dǎo)、重新啟動等將出現(xiàn)不能被自動解決的問題。在一個實施方案中,存在可記錄這些和其它客戶可見性事件的記錄部件(未示出)。記錄部件可包括API或其它這樣的接口,使得如果實例在一段時間內(nèi)是可用的,客戶可調(diào)用適當(dāng)?shù)摹笆录被蝾愃频腁PI來獲得關(guān)于事件的信息。在一些情況下,當(dāng)實例出故障時請求可保持未決。因為在這個實施方案中控制面與數(shù)據(jù)面分離,控制面從不接收數(shù)據(jù)請求,因此不能排隊等候?qū)﹄S后提交的請求(雖然在一些實施方案中該信息可被轉(zhuǎn)發(fā)到控制面)。因此,在本實施方案中的控制面向用戶提供關(guān)于故障的信息,所以用戶可在必要時處理請求。
如所討論的,一旦供應(yīng)了實例且給用戶提供了DNS地址或其它地址或位置,用戶就可通過網(wǎng)絡(luò)使用Java數(shù)據(jù)庫連接(JDBC)或其它這樣的客戶端將請求“直接”發(fā)送到數(shù)據(jù)面210以直接與該實例234交互作用。在一個實施方案中,數(shù)據(jù)面采取計算云環(huán)境(或至少包括計算機云環(huán)境或是計算云環(huán)境的部分)或一組Web服務(wù)和資源的形式,這組Web服務(wù)和資源在硬件和/或軟件部件的“云”或動態(tài)網(wǎng)絡(luò)中提供數(shù)據(jù)存儲和訪問。DNS地址在這樣的動態(tài)云環(huán)境中是有益的,因為實例或可用性故障例如可通過將DNS地址編程地重新映射到用于使用的任何適當(dāng)?shù)闹脫Q實例而被掩蔽。從用戶202或應(yīng)用204接收的請求例如可指向網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT)路由器224或其它適當(dāng)?shù)牟考?,其可將請求引?dǎo)到實際實例234或相應(yīng)于請求的DNS的主機。如所討論的,這樣的方法允許實例被動態(tài)地移動、更新、復(fù)制等,而不需要用戶或應(yīng)用改變用于訪問實例的DNS或其它地址。如所討論的,每個實例234可包括主機管理器228和數(shù)據(jù)存儲器226,并可在持久存儲器230中具有至少一個備份實例或副本。使用這樣的方法,一旦實例通過控制面被配置,用戶、應(yīng)用、服務(wù)或部件就可直接通過對數(shù)據(jù)面的請求與實例交互作用,而不必訪問控制面232。例如,用戶可通過DNS地址直接發(fā)出結(jié)構(gòu)查詢語言(SQL)或與實例中的數(shù)據(jù)有關(guān)的其它這樣的命令。用戶將僅僅必須訪問控制面,如果用戶想執(zhí)行任務(wù)例如擴展實例的存儲容量。在至少一個實施方案中,控制面208的功能可作為至少一種服務(wù)由提供商提供,提供商可以或可以不與數(shù)據(jù)面210的提供商有關(guān),而可僅僅是可用于提供和管理數(shù)據(jù)面中的數(shù)據(jù)實例且也可監(jiān)控和確保在分離的數(shù)據(jù)面210中的那些實例的可用性的第三方服務(wù)。
如所討論的,提供控制面的功能作為Web服務(wù)或其它這樣的服務(wù)的一個優(yōu)點是控制面起虛擬數(shù)據(jù)庫管理員(DBA)的作用并避免人DBA執(zhí)行任務(wù)例如供應(yīng)數(shù)據(jù)。供應(yīng)數(shù)據(jù)目前是冗長的手工程序,需要DBA來接收必要的配置信息,確定配置是否是有效的,優(yōu)化和調(diào)節(jié)實例,并執(zhí)行其它這樣的任務(wù),其花費相當(dāng)大量的時間和努力。此外,這樣的方法提供很多錯誤機會,其可能不被發(fā)現(xiàn),直到數(shù)據(jù)被丟失之后。使用如本文描述的控制面或服務(wù),用戶或客戶可替代地提交包括信息例如硬件的類型和數(shù)據(jù)庫產(chǎn)品的版本的調(diào)用??刂泼婊蚍?wù)可接著執(zhí)行必要的任務(wù)來創(chuàng)建、刪除、修改、擴展或以其它方式修改數(shù)據(jù)存儲器或數(shù)據(jù)存儲實例??刂泼嬉部捎靡恢碌姆绞街С忠恍┎煌臄?shù)據(jù)庫引擎,而不需要DBA在每個引擎中是專家。一旦被供應(yīng),用戶就可本地訪問數(shù)據(jù)實例,并可簡單地將現(xiàn)有的應(yīng)用(例如MySQL應(yīng)用)指向DNS地址或特定實例的其它位置信息。沒有查詢模型或其它這樣的功能的限制或修改,因為用戶可繼續(xù)使用建立在MySQL、Oracle或其它數(shù)據(jù)庫技術(shù)上的應(yīng)用。
根據(jù)各種實施方案的系統(tǒng)和方法使客戶能夠利用Web服務(wù)或類似的這樣的方法,以在云計算或類似的環(huán)境中創(chuàng)建一個或多個已復(fù)制的數(shù)據(jù)庫實例,提供高度持久和高度可靠的數(shù)據(jù)解決方案。當(dāng)客戶在各種實施方案中創(chuàng)建已復(fù)制的數(shù)據(jù)庫實例時,客戶數(shù)據(jù)使用主要-輔助復(fù)制模型被同步復(fù)制。在一些實施方案中,副本可位于不同的物理位置上,例如在不同的數(shù)據(jù)區(qū)中。每個數(shù)據(jù)“區(qū)”可以指例如位于特定的地理區(qū)域內(nèi)的一個或多個數(shù)據(jù)中心或數(shù)據(jù)服務(wù)器的組,不同的區(qū)位于不同的地理位置處或周圍。RDS實例接著可容忍數(shù)據(jù)區(qū)之一的故障,因為在不同的地理位置處的另一數(shù)據(jù)區(qū)可能避免故障,除了在大的災(zāi)難性事件的情況下。在一些情況下,數(shù)據(jù)中心可跨越多個數(shù)據(jù)區(qū),但在給定數(shù)據(jù)中心內(nèi)的數(shù)據(jù)副本可在不同的區(qū)中被例示。很多其它變形是可能的,例如重疊區(qū)、在多個地理位置處的區(qū)等。如果主要副本故障或以其它方式變得不可用,則RDS系統(tǒng)可快速并自動故障切換到輔助副本,導(dǎo)致非常少的停機時間或數(shù)據(jù)不可用性。
在一個實施方案中,客戶能夠通過調(diào)用控制面的Web服務(wù)層的指定接口來創(chuàng)建已復(fù)制的數(shù)據(jù)庫實例,例如關(guān)于圖2討論的。例如,客戶可調(diào)用指定諸如實例類、所分配的存儲器、數(shù)據(jù)庫引擎等方面的“CreateDBInstance”API,因為客戶將創(chuàng)建未復(fù)制的數(shù)據(jù)實例。當(dāng)創(chuàng)建已復(fù)制實例時,客戶可包括至少一個額外的參數(shù),例如“已復(fù)制”或類似的參數(shù),一個值被設(shè)置為“真”或任何其它適當(dāng)?shù)闹抵甘舅鶆?chuàng)建的實例應(yīng)被復(fù)制。在一些實施方案中,值默認被設(shè)置為“假”,使得未復(fù)制的實例被創(chuàng)建,除非另外由客戶指定。在一些實施方案中,只有某些客戶具有創(chuàng)建已復(fù)制實例的能力,例如負擔(dān)某些水平的服務(wù)的費用的客戶等。
在一些實施方案中,客戶也可選擇輔助副本是否在與主要副本不同的數(shù)據(jù)區(qū)中創(chuàng)建。在一些實施方案中客戶也可被允許選擇對實例的一個或多個特定的數(shù)據(jù)區(qū)、或例如有序列表,而在其它實施方案中客戶不能選擇對至少輔助副本的數(shù)據(jù)區(qū)。如果客戶指定兩個數(shù)據(jù)區(qū)且例如數(shù)據(jù)區(qū)之一例如在延長的時間段內(nèi)變得不可用,在一些實施方案中持久性需求將使另一副本在第三數(shù)據(jù)區(qū)中產(chǎn)生,依此類推。這可能需要多個客戶的數(shù)據(jù)區(qū)列表的順序的管理和更新,這可復(fù)雜化用戶體驗,而不提供任何明顯的益處。此外,應(yīng)用遍及數(shù)據(jù)區(qū)擴展相關(guān)的應(yīng)用艦隊可能更容易,使得可能有位于與輔助副本相同的數(shù)據(jù)區(qū)中的一些應(yīng)用艦隊。
在一些實施方案中,客戶可為已復(fù)制的數(shù)據(jù)實例調(diào)用“DescribeDBInstance”或類似的API,由此RDS可列出信息,例如主要副本的端點DNS名稱和主要副本當(dāng)前所位于的數(shù)據(jù)區(qū)??蛻羧钥墒褂脤⒂糜趩蝹€數(shù)據(jù)區(qū)的常規(guī)方法與RDS實例進行通信,因為例如RDS實例的狀態(tài)一旦是“可用的”,客戶就可接收數(shù)據(jù)存儲器的端點DNS名稱,并使用端點DNS名稱連接到實例。在復(fù)制失敗的情況下,RDS可使數(shù)據(jù)庫故障切換到相應(yīng)的輔助副本,且端點DNS名稱又可被稱為新的主要副本。數(shù)據(jù)庫端點DNS名稱在很多實施方案中保持不變,在已復(fù)制實例的壽命期間不變。
在一些實施方案中,可例如通過調(diào)用已復(fù)制參數(shù)被設(shè)置為“真”的“ModifyDBInstance”或類似的API來給客戶提供將未復(fù)制的實例轉(zhuǎn)換成已復(fù)制實例的能力。這可使數(shù)據(jù)庫能夠在適當(dāng)?shù)臅r間例如在下一維護窗期間或緊接在請求之后轉(zhuǎn)換到已復(fù)制實例,因為可依賴于API調(diào)用參數(shù)等。
各種實施方案利用塊極復(fù)制機制,例如實現(xiàn)什么也不共享的內(nèi)核模塊、反映服務(wù)器之間的塊設(shè)備的內(nèi)容的已復(fù)制存儲解決方案。塊級復(fù)制機制(“BLRM”)可緊接著塊設(shè)備(即,硬盤或邏輯卷)工作。它使用主要-從屬復(fù)制結(jié)構(gòu),其中主要副本將所有更新指向下層塊設(shè)備。對塊設(shè)備的所有輸入和輸出(I/O)請求由BLRM內(nèi)核模塊攔截,所有寫操作被自動和同步地復(fù)制。BLRM提供對等設(shè)備的內(nèi)在故障探測,并在對等節(jié)點不可到達時調(diào)用適當(dāng)?shù)幕謴?fù)處理程序。BLRM也可在背景中將暫時不可用的節(jié)點自動重新同步化到數(shù)據(jù)的最近版本,而不干擾在主要副本處的數(shù)據(jù)訪問。BLRM使用生成標(biāo)識符(“GI”)來識別已復(fù)制數(shù)據(jù)的生成,由此BLRM可確定方面,例如兩個節(jié)點是否是同一副本對的成員、背景重新再同步(如果必要)的方向、以及部分或完全的重新同步是否需要。BLRM驅(qū)動器可在任何適當(dāng)?shù)臅r間例如在副本對的初始化期間、當(dāng)斷開的備用副本切換到主要副本時、或起主要作用的資源與輔助副本斷開時開始新的生成。雖然為了解釋的目的,塊級復(fù)制機制在本文用作例子,但是應(yīng)理解,可在各種實施方案的范圍內(nèi)使用任何其它適當(dāng)?shù)膲K級技術(shù)或機制。
如所討論的,在各種實施方案中的RDS數(shù)據(jù)實例可建立在一個或多個系統(tǒng)或平臺上。例如,實例可建立在虛擬計算環(huán)境上,虛擬計算環(huán)境使客戶能夠利用Web服務(wù)或另一適當(dāng)?shù)姆椒▉硎褂酶鞣N操作系統(tǒng)發(fā)起實例并管理那些實例。提供這樣的虛擬計算環(huán)境的Web服務(wù)的例子是由Amazon.com公司提供的彈性計算云(EC2)服務(wù)。數(shù)據(jù)實例也可建立在塊級存儲機制上,塊級存儲機制可提供獨立于實例的壽命持久的實例外存儲器。塊存儲機制可提供存儲卷,其可連接到實例并被暴露為實例內(nèi)的設(shè)備。塊存儲平臺的例子在2008年8月8日提交的題目為“Managing Access of Multiple Executing Programs to a Non-Local Block Data Storage”的共同未決的美國專利申請?zhí)?2/188,949被提供,該專利由此通過引用被并入本文。邏輯卷(例如LVM層)可建立在塊存儲卷和適當(dāng)?shù)奈募到y(tǒng)的頂部上,使得客戶數(shù)據(jù)庫可在LVM/文件系統(tǒng)層的頂部上運行。在一個實施方案中對于已復(fù)制數(shù)據(jù)庫,BLRM可在LVM層的頂部上運行。在這樣的實施方案中BLRM將攔截所有I/O請求并將那些請求發(fā)送到邏輯卷,其又可在多個塊存儲卷中分離請求。邏輯卷的使用可提供處理多個塊存儲E卷的能力以及容易擴展存儲的能力等。在LVM的頂部上的分層BLRM也可允許白操作在副本中被復(fù)制。
圖3示出用于實現(xiàn)主要-輔助復(fù)制模型以提供已復(fù)制RDS實例的機制300的例子。在本實例中,主要副本310和輔助副本312位于數(shù)據(jù)平面308或數(shù)據(jù)庫環(huán)境的不同的數(shù)據(jù)區(qū)(1和2)中。每個副本建立在塊存儲機制的頂部上,塊存儲機制在這里被示為BLRM層318、322,用于管理對每個副本的塊存儲器320、322的I/O??刂泼?06的部件例如可類似于關(guān)于圖2討論的那些部件,能夠通過將配置命令發(fā)到例如可執(zhí)行必要的建立操作的本地主機管理器314、316來創(chuàng)建已復(fù)制RDS實例。如在附圖中看到的,塊級機制例如BLRM 318、322定位成攔截在塊設(shè)備級處的所有I/O請求,并將對請求的信息寫到本地磁盤和遠程磁盤320、324。在本實例中,數(shù)據(jù)庫318(例如SQL)只在主要副本310上運行,且所有客戶端302在主要副本310上運行其數(shù)據(jù)庫事務(wù)(經(jīng)由適當(dāng)?shù)木W(wǎng)絡(luò)304)。數(shù)據(jù)庫318不在輔助副本312上運行,且文件系統(tǒng)也可不安裝在輔助副本上,因為數(shù)據(jù)庫將通常不知道在下層設(shè)備中的更新。
每個數(shù)據(jù)庫客戶端302可使用又可稱為主要副本310的主機名稱的RDS數(shù)據(jù)庫DNS端點名稱來自動發(fā)現(xiàn)當(dāng)前的主要副本。通過使用DNS來發(fā)現(xiàn)當(dāng)前的主要副本,可例如維持與現(xiàn)有的數(shù)據(jù)庫客戶端例如本地MySQL客戶端、JDBC、PHP、C#和Haskell的兼容性。雖然DNS緩存可潛在地使客戶端試圖連接到舊的主要副本,客戶端將不能通過連接到輔助副本來與數(shù)據(jù)庫交談,因為沒有數(shù)據(jù)庫在輔助副本中運行??蛻粲谑强芍阔@得適當(dāng)?shù)腄NS信息。
圖4示出了根據(jù)一個實施方案的用于為客戶創(chuàng)建已復(fù)制RDS實例的過程400的例子。雖然術(shù)語“客戶”在本文用于指數(shù)據(jù)的“所有者”或由RDS系統(tǒng)托管的數(shù)據(jù)庫或?qū)嵗?,但是?yīng)理解,術(shù)語客戶僅僅是例子,且任何適當(dāng)?shù)挠脩艋蜷_發(fā)者可被允許在各種環(huán)境中訪問控制面和數(shù)據(jù)面。此外,雖然描述了與數(shù)據(jù)環(huán)境的控制有關(guān)的實施方案,但是應(yīng)理解,類似的方法可用于在與控制環(huán)境不同的環(huán)境中控制和/或管理各種其它部件、設(shè)備、應(yīng)用、服務(wù)或其它這樣的資源。這個過程的步驟呈現(xiàn)為特定實施方案的例子,但應(yīng)理解,在各種實施方案的范圍內(nèi),額外的、更少和/或可選的步驟可按不同的順序和/或并行或同時執(zhí)行。
在本實例中,客戶調(diào)用CreateDBInstance或類似的API 402,其中Web服務(wù)層的部件可分析該調(diào)用并使客戶所提供的數(shù)據(jù)庫創(chuàng)建參數(shù)存儲到管理數(shù)據(jù)庫404。數(shù)據(jù)庫的生命周期可被標(biāo)記有值例如“CREATING”,當(dāng)成功地將記錄提交到管理數(shù)據(jù)存儲器時,被標(biāo)記有“PENDING”的改變狀態(tài),使得創(chuàng)建數(shù)據(jù)庫的任務(wù)或工作將由清理器部件接收到。Web服務(wù)層不直接調(diào)用工作流系統(tǒng)來切斷在本實施方案中的活動以避免發(fā)起行動接著驗證工作流開始該任務(wù)的兩階段任務(wù)的活動。通過簡單地保存用于由清理器取回的請求,沒有工作流活動將丟失。
如前所述,清理器對新的工作周期性地輪詢管理數(shù)據(jù)庫。具有CREATING和PENDING的生命周期和改變狀態(tài)的數(shù)據(jù)庫記錄例如可使清理器發(fā)起“CreateDatabase”或類似的工作流406。作為工作流的初始任務(wù),數(shù)據(jù)庫的改變狀態(tài)可被更新到值例如“APPLYING”,由此其它清理器知道改變在進行中。工作流的其它主要任務(wù)包括創(chuàng)建將充當(dāng)主要副本的實例(408),從主要副本創(chuàng)建輔助副本(410),以及連接輔助副本與主要副本(412)。一旦副本被連接且是可用的,RDS實例就可暴露于客戶并使用DNS名稱可被訪問(414)。在各種實施方案中,對輔助副本的標(biāo)度計算“在場景后面”被執(zhí)行,由此輔助副本可在連接副本之前按比例調(diào)整,用于復(fù)制和/或故障切換。
圖5示出可用于根據(jù)一個實施方案創(chuàng)建主要副本的這樣的過程的部分500的例子。如所討論的,工作流可采取初始步驟以供應(yīng)構(gòu)成RDS實例的所有資源。例如,數(shù)據(jù)實例例如通過使用RDS指定的機器圖像對主要主機創(chuàng)建(502)??蔀橹饕鳈C分配并連接塊存儲卷(504)。至少部分地基于配置信息來請求卷,配置信息指定方面例如單獨卷的最大尺寸和容器的期望最小數(shù)量。當(dāng)保留的IOPS被保證時,可使用單個卷。一旦核心資源的每個變得可用,工作流就將塊存儲卷連接到為主要副本分配的數(shù)據(jù)實例。
在一些實施方案中,創(chuàng)建執(zhí)行類似于客戶數(shù)據(jù)庫的防火墻的功能的安全組。安全組可使客戶能夠定義例如可與數(shù)據(jù)庫通信的一系列地址例如互聯(lián)網(wǎng)協(xié)議(IP)地址或定義可與數(shù)據(jù)庫通信的數(shù)據(jù)實例。
工作流可使主機管理器例如通過下載主機管理器、驗證校驗和或以其它方式使下載生效并調(diào)用適當(dāng)?shù)陌惭b實例例如Tomcat安裝應(yīng)用API來被安裝并啟動(506)。一旦主機管理器在安裝之后成功地啟動,數(shù)據(jù)實例就可具有安裝數(shù)據(jù)庫引擎和建立客戶數(shù)據(jù)庫所需的功能。
一旦主要副本運行,工作流就可為主要副本請求由主機管理器執(zhí)行的各種行動。例如,主機管理器可請求塊存儲卷被安裝和文件系統(tǒng)被準(zhǔn)備(508)。在某些實施方案中,對兩種角色的每個執(zhí)行塊存儲卷的安裝和文件系統(tǒng)的建立:二進制角色和數(shù)據(jù)角色。在一個實施方案中,控制面發(fā)送存儲配置文件(例如XML文件),其向主機管理器提供關(guān)于對每個角色使用的安裝點和卷的信息。使用該信息,主機管理器可為對給定角色供應(yīng)的所有卷創(chuàng)建物理設(shè)備,并可創(chuàng)建對每個角色在這些設(shè)備中條理化數(shù)據(jù)的邏輯卷。一旦邏輯卷被創(chuàng)建(510),主機管理器就可通過安裝本身作為唯一的副本的BLRM配置文件并啟動BLRM內(nèi)核模塊來創(chuàng)建BLRM配置信息。一旦BLRM使用配置信息被啟動(512),BLRM就可自動處理對數(shù)據(jù)卷的所有I/O訪問。
工作流可接著將分組管理器(例如RPM)公共簽名密鑰或其它安全機制安裝到主要副本的主機管理器。主要副本的主機管理器可接著例如通過在數(shù)據(jù)實例上下載并驗證簽名的信息的主機管理器來下載并安裝數(shù)據(jù)庫引擎(514),后面是包裹的解開、安裝和投放。隨后,主要副本的主機管理器可安裝將作為客戶數(shù)據(jù)庫的基礎(chǔ)使用的空白數(shù)據(jù)庫。通過以RDS特定的空白數(shù)據(jù)庫開始,可容易應(yīng)用用于管理的許可和表格。主機管理器可創(chuàng)建客戶數(shù)據(jù)庫、改變對數(shù)據(jù)庫的根口令、并創(chuàng)建數(shù)據(jù)庫用戶(516),如在客戶請求中指定的。工作流接著可開始數(shù)據(jù)庫(例如MySQL)(518)。
由于數(shù)據(jù)庫開始,BLRM資源可被斷開,且位圖被清除。工作流可使快照對主要主機的塊存儲卷而捕獲,且主要數(shù)據(jù)庫的主機管理器可被指示來創(chuàng)建新的一般接口。主機管理器接著可被指示來安裝具有輔助主機名的新的BLRM配置文件,并可再次裝入配置信息。
一旦示例性工作流的上面任務(wù)中的至少一些完成,工作流就可繼續(xù)前進到目的在于構(gòu)建輔助副本的任務(wù)。圖6示出用于創(chuàng)建可根據(jù)各種實施方案使用的至少一個輔助或備用副本的示例性過程600的步驟。作為第一任務(wù),可從主要副本的數(shù)據(jù)卷的塊存儲快照創(chuàng)建塊存儲卷(602),且可對二進制創(chuàng)建卷。工作流可接著使數(shù)據(jù)實例被發(fā)起,且所分配的卷被連接(604)。如所討論的,可在與主要副本連接之前對輔助副本執(zhí)行標(biāo)度計算??山又鴮o助副本發(fā)起主機管理器(606)。一旦主機管理器對輔助副本運行,工作流就可調(diào)用主機管理器以建立輔助實例。在建立過程期間,主機管理器可建立卷(608),安裝具有適當(dāng)?shù)闹饕北竞洼o助副本配置的BLRM配置文件(610),確定BLRM是否被安裝并啟動內(nèi)核模塊,接著建立BLRM處理程序(612)。此時,主要副本和輔助副本應(yīng)被連接并從清除位圖調(diào)用被發(fā)出的時刻起同步。工作流接著可在管理數(shù)據(jù)存儲器中將數(shù)據(jù)庫標(biāo)記為“可用的”,并使實例對客戶是可利用的(614)。
一旦實例的主要副本和輔助副本運行且對客戶是可利用的,客戶就可執(zhí)行關(guān)于實例的一些行動的任一個。例如,客戶可將請求發(fā)送到Web服務(wù)層的API或命令行工具,以描述一個或多個數(shù)據(jù)庫。Web服務(wù)可立即通過查詢管理數(shù)據(jù)存儲器以得到在請求中指定的客戶數(shù)據(jù)庫的當(dāng)前狀態(tài)來實現(xiàn)請求。在未決修改的情況下,當(dāng)前值和修改值可被顯示給客戶。
在一些情況下,客戶可調(diào)用API例如“RebootDBInstance”API,以便重新引導(dǎo)客戶數(shù)據(jù)庫。在一個實施方案中,這個API僅僅使客戶能夠重新引導(dǎo)數(shù)據(jù)庫引擎而不是RDS實例。Web服務(wù)層可將信息存儲到管理數(shù)據(jù)存儲器(或另一這樣的工作隊列),由此清理器可接收到信息以開始工作流。工作流可調(diào)用主要副本的主機管理器以重新開始數(shù)據(jù)庫。在各種實施方案中這個API的實現(xiàn)在已復(fù)制和未復(fù)制的實例中沒有不同。
客戶可發(fā)送請求以使用例如API或命令行工具刪除客戶數(shù)據(jù)庫,由此控制面的部件可被指示準(zhǔn)備刪除。在證書和請求參數(shù)的驗證之后,例如Web服務(wù)層的部件可例如證實客戶數(shù)據(jù)庫可在當(dāng)前的時間例如生命周期沒有在CREATING或DELETING狀態(tài)中時被刪除。部件也可將管理數(shù)據(jù)存儲器中的客戶數(shù)據(jù)庫的適當(dāng)?shù)挠涗浉碌紻ELETING的生命周期狀態(tài)或PENDING的改變狀態(tài)。周期性地輪詢待完成的任務(wù)的工作流清理器可識別出數(shù)據(jù)庫由于PENDING的改變狀態(tài)而應(yīng)被刪除,并可發(fā)起工作流實例以完成刪除。工作流的第一行動或任務(wù)可以是將數(shù)據(jù)庫的改變狀態(tài)更新到APPLYING,使得其它清理器知道變化在進行中。
工作流實例可以抽出任何剩余的事件日志并釋放為主要副本和輔助副本分配的資源。例如,工作流可指示RDS事件處理器從RDS實例抽出事件,接著關(guān)閉數(shù)據(jù)庫并卸下主要副本中的文件系統(tǒng)。如果最終的快照被客戶請求或如果策略以其它方式規(guī)定,則工作流可指示數(shù)據(jù)庫的快照被獲得。實例通過調(diào)用RDS事件處理器API來被重新注冊以確保事件處理器系統(tǒng)不再監(jiān)控實例。DNS名稱可被刪除,且塊存儲卷和數(shù)據(jù)實例被釋放。工作流可通過將管理數(shù)據(jù)存儲器中的這個客戶數(shù)據(jù)的記錄更新到DELETED的狀態(tài)來完成刪除,由此該記錄可移動到記錄檔案庫中且該記錄被刪除。
使客戶按比例調(diào)整為實例分配的存儲和/或計算容量有時也可能是必要或合乎需要的。當(dāng)按比例調(diào)整存儲時,例如卷可添加到主要副本和輔助副本,LVM被擴展。在主要副本上,BLRM處理程序可被調(diào)用以擴展塊設(shè)備來包括在塊設(shè)備的控制下的新卷,且文件系統(tǒng)可被調(diào)整大小。
特別是,可根據(jù)當(dāng)前的卷配置參數(shù)為主要副本和輔助副本提供新的塊存儲卷。可對兩個實例上的主機管理器調(diào)用“ScaleStorage”或類似的API,這可使物理設(shè)備被創(chuàng)建且新的卷添加到現(xiàn)有的卷組。主機管理器可例如通過將LVM物理區(qū)域從一個物理卷(例如塊存儲卷)移動到另一物理卷來使卷組中的空間重新平衡。邏輯卷也可擴展成包括新的空間。一旦ScaleStorage功能完成,工作流就可為在主要接口上的主機管理器接口調(diào)用例如接口例如“primaryScaleStorage”API,這可使BLRM塊設(shè)備層擴展以使用新的空間。一旦BLRM調(diào)整大小完成,文件系統(tǒng)就可被調(diào)整大小。如果沒有剩余的更新,則管理數(shù)據(jù)存儲器中的客戶數(shù)據(jù)庫的記錄可被設(shè)置為“AVAILABLE”的生命周期狀態(tài),且改變狀態(tài)被更新為“NONE”。調(diào)整大小的實例可接著由客戶利用。如果主要副本或輔助副本在按比例調(diào)整過程期間是不可達到的,則工作流可中止并離開在例如“MODIFYING”中的狀態(tài),并在以后的時間重試。
當(dāng)按比例調(diào)整計算容量時,各種實施方案使客戶能夠調(diào)節(jié)實例的“計算類”,每個類具有所分配的指定計算容量。在某些實施方案中,輔助副本首先例如通過使用故障切換過程被按比例調(diào)整,系統(tǒng)接著切換到輔助副本,由此輔助副本變成新的主要副本。舊的主要副本的計算軌道數(shù)據(jù)編輯程序匯編可在必要時按比例調(diào)整,且舊的主要副本可起新的輔助副本的作用。通過首先按比例調(diào)整輔助副本并進行例如故障切換,已復(fù)制實例可經(jīng)歷較短的停機時間,停機時間否則可能在單個數(shù)據(jù)區(qū)中按比例調(diào)整實例類時出現(xiàn)。
下面介紹了用于按比例調(diào)整數(shù)據(jù)庫實例的過程的特定實例,在該過程中,已復(fù)制實例具有主要副本P和輔助副本S??墒褂眯碌膶嵗惒⑹褂门c現(xiàn)有實例相同的安全組為主要副本和輔助副本提供新的實例(例如P_new和S_new)??煞謩e在與P和S相同的數(shù)據(jù)區(qū)中創(chuàng)建P_new和S_new。在管理數(shù)據(jù)庫中的RDS實例的狀態(tài)可被更新到值例如“IN_MODIFICATION”。實例標(biāo)識符可從事件處理器被取消注冊,使得當(dāng)工作流拆卸數(shù)據(jù)庫用于按比例調(diào)整時,主要和/或輔助副本的恢復(fù)沒有被觸發(fā)。輔助實例的狀態(tài)可被更新為值例如“IN_MIDIFICATION”。在輔助副本上,可請求主機管理器通過例如停止數(shù)據(jù)庫、與主要實例斷開(例如,通過發(fā)出BLRM斷開命令)、卸下所有文件系統(tǒng)并使所有的卷組無效來停止使用現(xiàn)有的塊存儲機制。塊存儲卷可從S分離并連接到S_new。主機管理器接著可安裝在S_new上,并可被請求來啟動卷組。主要副本可接著例如通過關(guān)閉數(shù)據(jù)庫并卸下卷來終止,且所有塊存儲卷可被分離。到S_new的故障切換可通過將數(shù)據(jù)庫端點指向S_new來發(fā)起,因而使S_new成為新的主要副本。S_new上的主機管理器可接著被請求安裝文件系統(tǒng),且證書(例如RPM公鑰)可被發(fā)送到新實例上的主機管理器。S_new上的主機管理器可接著被請求開始數(shù)據(jù)庫,且數(shù)據(jù)庫可被標(biāo)記為AVAILABLE。在此階段,數(shù)據(jù)庫準(zhǔn)備使用,即使輔助副本仍然在創(chuàng)建之下。在下一步驟,P_new實例可開始,且以前連接到P的塊存儲卷可連接到P_new。主機管理器可安裝在P_new上,且BLRM配置文件被安裝。在這個實施方案中,此時沒有文件系統(tǒng)安裝在P_new上。接著向S_new上的的主機管理器發(fā)出命令,以連接S_new與P_new,以及驗證連接狀態(tài)。接著可提供按比例調(diào)整的副本用于由客戶訪問。
實施方案還可允許用戶例如通過創(chuàng)建快照或其它時間點備份來在其實例中備份信息。例如,RDS可使客戶能夠創(chuàng)建其實例的快照并從這些快照創(chuàng)建新的實例??煺找部捎糜趫?zhí)行已復(fù)制數(shù)據(jù)庫的時間點恢復(fù)。為了創(chuàng)建未復(fù)制的實例的快照,工作流有效地將I/O掛起到數(shù)據(jù)庫卷,獲得連接到實例的卷的塊存儲級快照,并解掛卷。當(dāng)創(chuàng)建已復(fù)制實例的快照時,可在輔助副本處獲得快照。為此,可暫時斷開輔助副本,并從所有塊存儲卷獲得快照。在獲得快照之后,輔助副本可被重新連接。通過實現(xiàn)備份,客戶有將實例恢復(fù)到給定的時間點的能力,只要時間在過去的X天內(nèi),其中X是客戶的保留期。
當(dāng)客戶實現(xiàn)在未復(fù)制的實例中的備份時,可按有規(guī)律的間隔例如每天在備份窗期間獲得快照,且日志可按其它間隔例如每五分鐘備份。當(dāng)客戶想將實例恢復(fù)到特定的時間點例如t1時,實例可從具有最接近于期望時間點的時間但在期望時間點之前從快照創(chuàng)建,且日志可用于向前滾動狀態(tài)以反映該時間點。在已復(fù)制實例中,可在輔助副本上獲得快照,同時從主要副本備份日志。
在一個實施方案中,到主機管理器的所有通信信道使用超文本傳輸協(xié)議在安全套接層(SSL)上來固定。在實例啟動時使用腳本可啟動托管主機管理器應(yīng)用的每個應(yīng)用服務(wù)器。在啟動應(yīng)用服務(wù)器引擎之前,可執(zhí)行產(chǎn)生自簽名的證書并安裝證書以實現(xiàn)SSL通信信道的腳本。SSL通信在一個實施方案中用于加密通信信道而不是用于客戶認證??蛻粽J證替代地使用嵌入每個請求中的公鑰/私鑰簽名來實現(xiàn),使得在一個實施方案中所有客戶端將使用私鑰來簽署查詢字符串參數(shù)。這個簽名可由定制攔截器生效,定制攔截器可部署有主機管理器的應(yīng)用服務(wù)器。此外,可對數(shù)據(jù)面中的每個所監(jiān)控的實例建立安全組(即,防火墻規(guī)則),使得只有位于給定網(wǎng)絡(luò)或安全組中的主機可使用主機管理器端口來進行通信。安全信息和證書(例如私鑰)可存儲在適當(dāng)?shù)膋eystore中,keystore可提供諸如密鑰管理和旋轉(zhuǎn)的功能。
如所討論的,可用類似的方式備份日志文件。日志可用于執(zhí)行任務(wù),例如重新播放各種交易,假如數(shù)據(jù)文件必須被恢復(fù)。引擎日志可被復(fù)制到適當(dāng)?shù)拇鎯ξ恢茫沟靡郧皞浞莸娜罩疚募墒褂煤唵蔚牧斜砻顏慝@得。主機管理器將使用這個結(jié)果來確定是否有需要被復(fù)制的日志。例如,主機管理器可請求存儲桶列表以獲得寫下的日志文件的列表,使得最后的序列可被備份。如果新的日志被創(chuàng)建,則它可首先確定日志沒有有效地被數(shù)據(jù)庫引擎寫,且接著日志可被復(fù)制且所驗證的復(fù)制被成功地執(zhí)行。
如上所討論的,可在各種操作環(huán)境中實現(xiàn)各種實施方案,操作環(huán)境在一些情況下可包括一個或多個用戶計算機、計算設(shè)備或可用于操作多個應(yīng)用中的任一個的處理設(shè)備。用戶或客戶端設(shè)備可包括多個通用個人計算機例如運行標(biāo)準(zhǔn)操作系統(tǒng)的桌上型或膝上型計算機以及蜂窩無線和手持設(shè)備中的任一個,手持設(shè)備運行移動軟件并能夠支持很多聯(lián)網(wǎng)和消息發(fā)送協(xié)議。這樣的系統(tǒng)也可包括運行各種市場上可買到的操作系統(tǒng)和其它已知應(yīng)用的任一個的多個工作站,用于諸如發(fā)展和數(shù)據(jù)庫管理的目的。這些設(shè)備還可包括其它電子設(shè)備,例如啞終端、瘦客戶端、游戲系統(tǒng)和能夠經(jīng)由網(wǎng)絡(luò)通信的其它設(shè)備。
各種方面也可被實現(xiàn)為至少一種服務(wù)或Web服務(wù)的部分,例如可以是面對服務(wù)的結(jié)構(gòu)的部分。服務(wù)例如Web服務(wù)可使用任何適當(dāng)類型的消息發(fā)送,例如通過使用以可擴展標(biāo)記語言(XML)格式并使用適當(dāng)?shù)膮f(xié)議例如SOAP(從“簡單對象訪問協(xié)議”得到)交換的消息來進行通信。由這樣的服務(wù)提供或執(zhí)行的過程可用任何適當(dāng)?shù)恼Z言例如Web服務(wù)描述語言(WSDL)來編寫。使用語言例如WSDL允許功能,例如在各種SOAP框架中的客戶端側(cè)代碼的自動產(chǎn)生。
大多數(shù)實施方案利用本領(lǐng)域技術(shù)人員熟悉的用于使用多種市場上可買到的協(xié)議例如TCP/IP、OSI、FTP、UpnP、CIFS和AppleTalk中的任一個支持通信的至少一個網(wǎng)絡(luò)。網(wǎng)絡(luò)可以是例如局域網(wǎng)、廣域網(wǎng)、虛擬專用網(wǎng)絡(luò)、互聯(lián)網(wǎng)、內(nèi)聯(lián)網(wǎng)、外聯(lián)網(wǎng)、公共交換電話網(wǎng)絡(luò)、紅外網(wǎng)絡(luò)、無線網(wǎng)絡(luò)和其任何組合。
在利用Web服務(wù)器的實施方案中,Web服務(wù)器可運行多種服務(wù)器或中間層應(yīng)用中的任一個,包括HTTP服務(wù)器、FTP服務(wù)器、CGI服務(wù)器、數(shù)據(jù)服務(wù)器、Java服務(wù)器和商業(yè)應(yīng)用服務(wù)器。服務(wù)器也可以能夠例如通過執(zhí)行一個或多個Web應(yīng)用來執(zhí)行在來自用戶設(shè)備的響應(yīng)請求中的程序或腳本,這些Web應(yīng)用可被實現(xiàn)為以任何編程語言例如C、C#或C++或任何腳本語言例如Perl、Python或TCL以及其組合編寫的一個或多個腳本或程序。服務(wù)器也可包括數(shù)據(jù)庫服務(wù)器,沒有限制地包括可從和商業(yè)地得到的那些服務(wù)器。
環(huán)境可包括如上所述的各種數(shù)據(jù)存儲器和其它存儲器或存儲介質(zhì)。這些可存在于多種位置上,例如在(和/或存在于)一個或多個計算機本地的或遠離在網(wǎng)絡(luò)中的任何或所有計算機的存儲介質(zhì)上。在特定的一組實施方案中,信息可存在于本領(lǐng)域技術(shù)人員熟悉的存儲區(qū)域網(wǎng)絡(luò)(“SAN”)中。類似地,用于執(zhí)行屬于計算機、服務(wù)器或其它網(wǎng)絡(luò)設(shè)備的功能的任何必要的文件可在適當(dāng)時在本地和/或遠程地存儲。在系統(tǒng)包括計算機化設(shè)備的場合,每個這樣的設(shè)備可包括可經(jīng)由總線電耦合的硬件元件,元件包括例如至少一個中央處理單元(CPU)、至少一個輸入設(shè)備(例如,鼠標(biāo)、鍵盤、控制器、觸摸屏或小鍵盤)和至少一個輸出設(shè)備(例如顯示設(shè)備、打印機或揚聲器)。這樣的系統(tǒng)也可包括一個或多個存儲設(shè)備,例如磁盤驅(qū)動器、光學(xué)存儲設(shè)備和固態(tài)存儲設(shè)備例如隨機存取存儲器(“RAM”)或只讀存儲器(“ROM”)以及可移動介質(zhì)設(shè)備、存儲卡、閃存卡等。
這樣的設(shè)備也可包括如上所述的計算機可讀存儲介質(zhì)閱讀器、通信設(shè)備(例如調(diào)制解調(diào)器、網(wǎng)卡(無線或有線)、紅外通信設(shè)備等)和工作存儲器。計算機可讀存儲介質(zhì)閱讀器可連接于或配置成接收計算機可讀存儲介質(zhì),其代表遠程、本地、固定和/或可移動存儲設(shè)備以及用于暫時和/或更永久地包含、存儲、傳輸并檢索計算機可讀信息的存儲介質(zhì)。系統(tǒng)和各種設(shè)備一般還包括很多軟件應(yīng)用、模塊、服務(wù)或位于至少一個工作存儲設(shè)備內(nèi)的其它元件,包括操作系統(tǒng)和應(yīng)用程序例如客戶端應(yīng)用或Web瀏覽器。應(yīng)認識到,從上面的描述中,可選的實施方案可具有很多變化。例如,定制的硬件也可被使用和/或特定的元件可在硬件、軟件(包括便攜式軟件例如小應(yīng)用程序)或兩者中實現(xiàn)。此外,到其它計算設(shè)備例如網(wǎng)絡(luò)輸入/輸出設(shè)備的連接可被使用。
用于包含代碼或代碼的部分的存儲介質(zhì)和計算機可讀介質(zhì)可包括在本領(lǐng)域中已知或使用的任何適當(dāng)?shù)慕橘|(zhì),包括存儲介質(zhì)和通信介質(zhì),例如但不限于在用于存儲和/或傳輸信息例如計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)的任何方法或技術(shù)中實現(xiàn)的易失性和非易失性、移動和不可移動介質(zhì),包括RAM、ROM、EEPROM、閃存或其它存儲技術(shù)、CD-ROM、數(shù)字通用盤(DVD)或其它光學(xué)存儲器、盒式磁帶、磁帶、磁盤存儲器或其它磁性存儲設(shè)備或可用于存儲期望信息并可由系統(tǒng)設(shè)備訪問的任何其它介質(zhì)?;诒疚奶峁┑墓_和教導(dǎo),本領(lǐng)域普通技術(shù)人員將認識到實現(xiàn)各種實施方案的其它方式和/或方法。
說明書和附圖因此在例證性而不是描述性的意義上看待。然而,將明顯,可對其進行各種修改和改變,而不偏離如權(quán)利要求中闡述的發(fā)明的較寬的精神和范圍。
條款1.一種使用控制環(huán)境的一個或多個自助式Web服務(wù)來在數(shù)據(jù)庫環(huán)境中供應(yīng)已復(fù)制的關(guān)系數(shù)據(jù)庫實例的計算機實現(xiàn)的方法,包括:
在配置有可執(zhí)行指令的一個或多個計算機系統(tǒng)的控制下,
提供多個應(yīng)用編程接口(API),每個API使用戶能夠?qū)eb服務(wù)請求提交到控制環(huán)境,每個API相應(yīng)于在單獨的數(shù)據(jù)庫環(huán)境中關(guān)于關(guān)系數(shù)據(jù)庫對所述用戶執(zhí)行的期望行動;
響應(yīng)于通過所述多個API的第一個API從所述用戶接收到對所述控制環(huán)境的Web服務(wù)請求,例示包括用于下列操作的任務(wù)的工作流:
在所述數(shù)據(jù)庫環(huán)境中在第一數(shù)據(jù)區(qū)中供應(yīng)主要實例副本;
將數(shù)據(jù)庫引擎安裝在所述主要副本實例中;
使用所述主要實例副本的一個或多個快照在所述數(shù)據(jù)庫環(huán)境中在第二數(shù)據(jù)區(qū)中供應(yīng)輔助實例副本;以及
將塊級復(fù)制機制連接到主要實例副本和輔助實例副本中的每個,所述塊極復(fù)制機制配置成攔截對所述主要實例副本的任何讀或?qū)?,并使對所述主要實例副本更新的任何?shù)據(jù)同步更新到所述輔助實例副本;以及
給所述用戶提供使所述用戶能夠與在所述主要副本實例中安裝的數(shù)據(jù)庫引擎交互作用的別名,別名可更新以使所述用戶能夠在主要實例副本故障時與所述復(fù)制實例副本交互作用。
條款2.條款1的計算機實現(xiàn)的方法,其中所述第一實例副本和第二實例副本中的每個在所述數(shù)據(jù)庫環(huán)境中在單獨的數(shù)據(jù)實例上運行,每個數(shù)據(jù)實例連接到一個或多個專用塊存儲卷。
條款3.條款2的計算機實現(xiàn)的方法,其中塊級復(fù)制機制可操作來在所述第一實例副本和第二實例副本的一個或多個專用塊存儲卷之間同步地復(fù)制數(shù)據(jù)。
條款4.一種使用戶能夠使用單獨的控制環(huán)境在數(shù)據(jù)庫環(huán)境中創(chuàng)建已復(fù)制的數(shù)據(jù)庫實例的計算機實現(xiàn)的方法,包括:
在配置有可執(zhí)行指令的一個或多個計算機系統(tǒng)的控制下,
提供多個應(yīng)用編程接口(API),每個API使用戶能夠?qū)eb服務(wù)請求提交到所述控制環(huán)境,每個API相應(yīng)于在所述數(shù)據(jù)庫環(huán)境中關(guān)于數(shù)據(jù)庫對所述用戶執(zhí)行的期望行動;
響應(yīng)于通過所述多個API之一從所述用戶接收到對所述控制環(huán)境的Web服務(wù)請求,使數(shù)據(jù)庫的第一實例副本和第二實例副本在所述數(shù)據(jù)庫環(huán)境中被供應(yīng),塊極復(fù)制機制配置成攔截在所述主要實例副本處對所述數(shù)據(jù)庫的任何寫操作,并將對所述寫操作的變化同步地復(fù)制到所述輔助實例副本;以及
使所述用戶能夠經(jīng)由所述主要實例副本訪問所述數(shù)據(jù)庫。
條款5.條款4的計算機實現(xiàn)的方法,其中在單個數(shù)據(jù)區(qū)中、在分開的地理位置處的分開的數(shù)據(jù)區(qū)中、在越過多個地理位置的單個數(shù)據(jù)區(qū)中或越過在單個地理區(qū)域中的多個數(shù)據(jù)區(qū)供應(yīng)所述第一實例副本和第二實例副本。
條款6.條款4的計算機實現(xiàn)的方法,其中所述控制環(huán)境配置成如果所述主要實例副本變得不可用則自動執(zhí)行到所述輔助實例副本的故障切換操作。
條款7.條款4的計算機實現(xiàn)的方法,還包括:
使主機管理器對第一實例副本和第二實例副本中的每個來安裝,每個主機管理器可操作來與所述控制環(huán)境通信并在所述數(shù)據(jù)庫環(huán)境中執(zhí)行一個或多個任務(wù)。
條款8.條款4的計算機實現(xiàn)的方法,其中使用主要實例副本的主要塊存儲卷的快照來創(chuàng)建輔助實例副本的輔助塊存儲卷。
條款9.條款4的計算機實現(xiàn)的方法,其中當(dāng)從所述用戶接收的Web服務(wù)請求包括指示已復(fù)制實例將被創(chuàng)建的復(fù)制參數(shù)值時,所述第一實例副本和第二實例副本在所述數(shù)據(jù)庫環(huán)境中被供應(yīng)。
條款10.條款4的計算機實現(xiàn)的方法,其中給所述用戶提供使所述用戶能夠與當(dāng)前主要實例副本通信的別名,包括當(dāng)故障切換操作使所述復(fù)制副本變成新的當(dāng)前主要實例副本時。
條款11.條款4的計算機實現(xiàn)的方法,還包括:
使所述用戶能夠使用通過多個API之一提交到所述控制環(huán)境的Web服務(wù)請求將未復(fù)制的實例轉(zhuǎn)換成已復(fù)制實例。
條款12.條款4的計算機實現(xiàn)的方法,還包括:
響應(yīng)于通過多個API之一接收到Web服務(wù)請求來捕獲所述數(shù)據(jù)庫的一個或多個快照。
條款13.條款12的計算機實現(xiàn)的方法,其中所述快照在輔助實例副本上獲得。
條款14.條款4的計算機實現(xiàn)的方法,還包括:
響應(yīng)于Web服務(wù)請求,在所述控制環(huán)境中執(zhí)行工作流,包括用于在所述數(shù)據(jù)庫環(huán)境中供應(yīng)、配置和連接所述第一實例副本和第二實例副本的任務(wù)。
條款15.條款4的計算機實現(xiàn)的方法,還包括:
使用所述控制環(huán)境的至少一個監(jiān)控部件來監(jiān)控所述第一實例副本和第二實例副本的健康信息。
條款16.條款4的計算機實現(xiàn)的方法,還包括:
在所述控制環(huán)境中將所述第一實例副本和第二實例副本的配置信息存儲到數(shù)據(jù)存儲器中。
條款17.條款4的計算機實現(xiàn)的方法,其中所述復(fù)制技術(shù)是與數(shù)據(jù)庫引擎無關(guān)的。
條款18.一種使用戶能夠使用單獨的控制環(huán)境在數(shù)據(jù)庫環(huán)境中創(chuàng)建已復(fù)制的數(shù)據(jù)庫實例的系統(tǒng),包括:
處理器;以及
包括指令的存儲設(shè)備,當(dāng)所述指令被處理器執(zhí)行時使所述處理器:
提供多個應(yīng)用編程接口(API),每個API使用戶能夠?qū)eb服務(wù)請求提交到所述控制環(huán)境,每個API相應(yīng)于在所述數(shù)據(jù)庫環(huán)境中關(guān)于數(shù)據(jù)庫對所述用戶執(zhí)行的期望行動;
響應(yīng)于通過所述多個API之一從所述用戶接收到對所述控制環(huán)境的Web服務(wù)請求,使數(shù)據(jù)庫的第一實例副本和第二實例副本在所述數(shù)據(jù)庫環(huán)境中被供應(yīng),塊極復(fù)制機制配置成攔截在所述主要實例副本處對所述數(shù)據(jù)庫的任何寫操作,并將對所述寫操作的變化同步地復(fù)制到所述輔助實例副本;以及
使所述用戶能夠經(jīng)由所述主要實例副本訪問所述數(shù)據(jù)庫。
條款19.條款18的系統(tǒng),其中在單個數(shù)據(jù)區(qū)中、在分開的地理位置處的分開的數(shù)據(jù)區(qū)中、在越過多個地理位置的單個數(shù)據(jù)區(qū)中或越過在單個地理區(qū)域中的多個數(shù)據(jù)區(qū)供應(yīng)所述第一實例副本和第二實例副本。
條款20.條款18的系統(tǒng),其中所述指令在被執(zhí)行時還使所述處理器:
響應(yīng)于所述Web服務(wù)請求,在所述控制環(huán)境中執(zhí)行工作流,包括用于在所述數(shù)據(jù)庫環(huán)境中供應(yīng)、配置和連接所述第一實例副本和第二實例副本的任務(wù)。
條款21.條款18的系統(tǒng),其中所述指令在被執(zhí)行時還使所述處理器:
使主機管理器對所述第一實例副本和第二實例副本中的每個來安裝,每個主機管理器可操作來與所述控制環(huán)境通信并在所述數(shù)據(jù)庫環(huán)境中執(zhí)行一個或多個任務(wù)。
條款22.一種存儲指令的計算機可讀存儲介質(zhì),所述指令使用戶能夠使用單獨的控制環(huán)境在數(shù)據(jù)庫環(huán)境中創(chuàng)建已復(fù)制的數(shù)據(jù)庫實例的系統(tǒng),所述指令在被執(zhí)行時使所述處理器:
提供多個應(yīng)用編程接口(API),每個API使用戶能夠?qū)eb服務(wù)請求提交到所述控制環(huán)境,每個API相應(yīng)于在所述數(shù)據(jù)庫環(huán)境中關(guān)于數(shù)據(jù)庫對所述用戶執(zhí)行的期望行動;
響應(yīng)于通過所述多個API之一從所述用戶接收到對所述控制環(huán)境的Web服務(wù)請求,使數(shù)據(jù)庫的第一實例副本和第二實例副本在所述數(shù)據(jù)庫環(huán)境中被供應(yīng),塊極復(fù)制機制配置成攔截在所述主要實例副本處對所述數(shù)據(jù)庫的任何寫操作,并將對所述寫操作的變化同步地復(fù)制到所述輔助實例副本;以及
使所述用戶能夠經(jīng)由所述主要實例副本訪問所述數(shù)據(jù)庫。
條款23.條款22的計算機可讀存儲介質(zhì),其中在單個數(shù)據(jù)區(qū)中、在分開的地理位置處的分開的數(shù)據(jù)區(qū)中、在越過多個地理位置的單個數(shù)據(jù)區(qū)中或越過在單個地理區(qū)域中的多個數(shù)據(jù)區(qū)供應(yīng)所述第一實例副本和第二實例副本。
條款24.條款22的計算機可讀存儲介質(zhì),其中所述指令在被執(zhí)行時還使所述處理器:
響應(yīng)所述于Web服務(wù)請求,在所述控制環(huán)境中執(zhí)行工作流,包括用于在所述數(shù)據(jù)庫環(huán)境中供應(yīng)、配置和連接所述第一實例副本和第二實例副本的任務(wù)。
條款25.條款22的計算機可讀存儲介質(zhì),其中所述指令在被執(zhí)行時還使所述處理器:
使主機管理器對所述第一實例副本和第二實例副本中的每個來安裝,每個主機管理器可操作來與所述控制環(huán)境通信并在所述數(shù)據(jù)庫環(huán)境中執(zhí)行一個或多個任務(wù)。