偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

從零開(kāi)始搭建MongoDB數(shù)據(jù)庫(kù)即服務(wù)

數(shù)據(jù)庫(kù) 其他數(shù)據(jù)庫(kù) MongoDB
數(shù)據(jù)庫(kù)即服務(wù)其實(shí)可以認(rèn)為是PaaS的一種變種,主要關(guān)注點(diǎn)在數(shù)據(jù)庫(kù)上,客戶不再需要去自己部署數(shù)據(jù)庫(kù),而是只需要按需使用由服務(wù)提供商提供的數(shù)據(jù)庫(kù)即可,數(shù)據(jù)庫(kù)的維護(hù)都交給服務(wù)提供商來(lái)完成,這樣客戶只需關(guān)注應(yīng)用本身即可。

[[203397]]

一、什么是數(shù)據(jù)庫(kù)即服務(wù)(DBaaS) 

 

首先介紹一下『數(shù)據(jù)庫(kù)即服務(wù)』?!簲?shù)據(jù)庫(kù)即服務(wù)』其實(shí)是『Database-as-a-service』的中文翻譯,我們看看它在維基百科中的定義:

 

我們知道,現(xiàn)在有很多的as-a-service,比如Infrastructure as a Service(IaaS)、Platform as a Service(Paas)還有Software as a Service(Saas)。他們到底都是什么呢?有什么區(qū)別?

 

這張圖應(yīng)該可以很好地解釋這些X-aaS。最左邊是傳統(tǒng)企業(yè)的IT,所有的活都要自己干,從數(shù)據(jù)中心服務(wù)器到操作系統(tǒng)數(shù)據(jù)庫(kù)再到上層業(yè)務(wù)系統(tǒng)。IaaS開(kāi)始就進(jìn)入云計(jì)算的范疇了,最基礎(chǔ)的是云服務(wù)器,不需要再關(guān)心機(jī)房啊硬件拉,直接就可以用。然后再往右客戶需要關(guān)注的越來(lái)越少,臟活累活都交給服務(wù)提供商來(lái)干。

那么『數(shù)據(jù)庫(kù)即服務(wù)』的情況是怎么樣呢?

數(shù)據(jù)庫(kù)即服務(wù)的優(yōu)勢(shì)

 

『數(shù)據(jù)庫(kù)即服務(wù)』其實(shí)可以認(rèn)為是PaaS的一種變種,主要關(guān)注點(diǎn)在數(shù)據(jù)庫(kù)上,客戶不再需要去自己部署數(shù)據(jù)庫(kù),而是只需要按需使用由服務(wù)提供商提供的數(shù)據(jù)庫(kù)即可,數(shù)據(jù)庫(kù)的維護(hù)都交給服務(wù)提供商來(lái)完成,這樣客戶只需關(guān)注應(yīng)用本身即可。

 

我們來(lái)具體看一下使用『數(shù)據(jù)庫(kù)即服務(wù)』和原來(lái)有什么不同,這里除了列舉傳統(tǒng)全部DIY的方式之外,還對(duì)比了一種利用IaaS來(lái)自建數(shù)據(jù)庫(kù)的方式,這也是現(xiàn)在比較常見(jiàn)的一種做法。我們看到傳統(tǒng)方式,需要做很多事情,這當(dāng)中還需要涉及多個(gè)團(tuán)隊(duì)來(lái)協(xié)作,非常不容易。然后看看第二種方式,利用IaaS來(lái)自建,這里以阿里云的云服務(wù)器ECS為例,這種方式和剛剛相比,省了不少事,但是仍然是比較麻煩的,也可能還需要涉及跨團(tuán)隊(duì)協(xié)作。

我們?cè)賮?lái)看看如果是使用『數(shù)據(jù)庫(kù)即服務(wù)』呢?只需要點(diǎn)下頁(yè)面上的部署按鈕,就可以等著用了,已經(jīng)進(jìn)化為完全自助服務(wù)了。從時(shí)間上來(lái)看,第一種方式可能需要花費(fèi)數(shù)月,第二種可能需要花費(fèi)數(shù)天,第三種則只需要數(shù)小時(shí)即可??梢?jiàn)『數(shù)據(jù)庫(kù)即服務(wù)』的優(yōu)勢(shì)還是很明顯的。

 

所以說(shuō)為什么要『即服務(wù)』,其實(shí)是一個(gè)進(jìn)化的趨勢(shì)。我們經(jīng)常說(shuō)人不能太懶,但是懶這個(gè)字用在程序猿身上可能并不是不好的東西,因?yàn)閼校偈刮覀儠?huì)去自動(dòng)化。最早我們通過(guò)人肉操作,下載軟件,編譯部署,然后配置。有一天我們發(fā)現(xiàn)經(jīng)常需要這么干很累很浪費(fèi)時(shí)間,就開(kāi)始寫腳本來(lái)完成這些操作,生產(chǎn)力開(kāi)始提高。等到規(guī)模更大的時(shí)候,比如要同時(shí)管理數(shù)十臺(tái)數(shù)百臺(tái)機(jī)器,這時(shí)候可能分發(fā)腳本也嫌麻煩了,開(kāi)始寫一些自動(dòng)化的工具來(lái)做這個(gè)事情。到最高級(jí)階段,就是完全實(shí)現(xiàn)自助服務(wù),這是懶的最高境界。

二、MongoDB簡(jiǎn)介

說(shuō)完了『即服務(wù)』以及其重要性,接下來(lái)我們看一下今天的另一個(gè)主角:MongoDB,因?yàn)橛行┩瑢W(xué)可能對(duì)這個(gè)不了解,所以還是簡(jiǎn)單介紹一下。

 

首先,MongoDB是什么呢,它是一個(gè)Document Store,文檔型數(shù)據(jù)庫(kù),也是我們經(jīng)常說(shuō)的NoSQL。根據(jù)DB-Engines的數(shù)據(jù)庫(kù)排名,MongoDB長(zhǎng)期霸占著NoSQL老大的地位,現(xiàn)在是數(shù)據(jù)庫(kù)界一位重量級(jí)選手。

 

事實(shí)上,MongoDB可以稱為是一種NewSQL,它融合了傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)和NoSQL的一些優(yōu)點(diǎn)。

最左邊的3個(gè)能力是來(lái)自于關(guān)系型數(shù)據(jù)庫(kù):

  1. 首先,它具備豐富的查詢語(yǔ)句和二級(jí)索引。通過(guò)這點(diǎn),用戶可以以足夠復(fù)雜的方式來(lái)訪問(wèn)和組織數(shù)據(jù)。
  2. 第二點(diǎn),強(qiáng)一致性。MongoDB支持一個(gè)靈活的一致性模型。你可以選擇使用強(qiáng)一致性,或最終一致性,取決于你的業(yè)務(wù)場(chǎng)景。
  3. 第三點(diǎn),MongoDB能很好的集成到多企業(yè)現(xiàn)有技術(shù)架構(gòu)中。

右邊3個(gè)能力來(lái)自NoSQL:

  • 首先是靈活的數(shù)據(jù)模型,MongoDB的文檔模型允許動(dòng)態(tài)修改schema,不用擔(dān)心有任何的性能影響。
  • 其次是高性能和高可擴(kuò)展性,MongoDB可以輕松進(jìn)行水平擴(kuò)展,從而帶來(lái)更高的吞吐和更低的延遲。
  • 最后,是全球部署,也就是高可用。接下來(lái)我們就來(lái)具體講下MongoDB的幾個(gè)關(guān)鍵特性。

MongoDB的關(guān)鍵特性

 

MongoDB的關(guān)鍵特性主要是3個(gè),第一個(gè)就是靈活動(dòng)態(tài)的文檔模型,第二個(gè)是高可用副本集,第三個(gè)是MongoDB的水平擴(kuò)展,也就是sharding。

1、靈活動(dòng)態(tài)的文檔模型

 

MongoDB以一種叫做BSON(二進(jìn)制JSON)的存儲(chǔ)形式將數(shù)據(jù)作為文檔存儲(chǔ)。具有相似結(jié)構(gòu)的文檔通常被組織成集合??梢园鸭峡闯深愃朴陉P(guān)系數(shù)據(jù)庫(kù)中的的表:文檔對(duì)應(yīng)的是行,字段對(duì)應(yīng)的是列。

MongoDB將一條記錄的所有數(shù)據(jù)聚合在一個(gè)文檔中,而在關(guān)系數(shù)據(jù)庫(kù)中則傾向于將數(shù)據(jù)分布在多個(gè)表中。這樣做有幾個(gè)好處,一是由于數(shù)據(jù)聚集,減少了多表JOIN的需求,這樣只需要讀一次就可以讀到所有數(shù)據(jù),在性能上會(huì)有很大優(yōu)勢(shì)。

另外,這種模型更加接近我們平時(shí)編程語(yǔ)言中的對(duì)象結(jié)構(gòu),可以方便開(kāi)發(fā)者進(jìn)行數(shù)據(jù)映射。

最后就是這種模型是schema-less的,也就是在MongoDB中不需要像關(guān)系數(shù)據(jù)庫(kù)一樣去事先定義每個(gè)表的schema。MongoDB一個(gè)集合內(nèi)的文檔之間可以擁有不同的結(jié)構(gòu),可以輕松為一個(gè)新的文檔添加和減少字段,不會(huì)有任何的性能影響。這個(gè)特性非常適合開(kāi)發(fā)一些新產(chǎn)品,可以快速迭代。

當(dāng)然,過(guò)于靈活就可能導(dǎo)致混亂。有時(shí)候我們想要求文檔必須要有某些字段,某些字段必須要有固定的類型。為此,MongoDB提供了一個(gè)文檔驗(yàn)證功能來(lái)對(duì)文檔的格式進(jìn)行約束。

2、高可用副本集

 

接下來(lái)說(shuō)MongoDB的第二個(gè)關(guān)鍵特性,高可用副本集(也可以翻譯成復(fù)制集)。

MongoDB副本集由一組Mongo實(shí)例(進(jìn)程)組成,包含一個(gè)Primary節(jié)點(diǎn)和多個(gè)Secondary節(jié)點(diǎn),Mongodb Driver(客戶端)的所有數(shù)據(jù)都寫入Primary,Secondary從Primary同步寫入的數(shù)據(jù),以保持副本集內(nèi)所有成員存儲(chǔ)相同的數(shù)據(jù)集,提供數(shù)據(jù)的高可用。

上圖是一個(gè)典型的MongDB副本集,包含一個(gè)Primary節(jié)點(diǎn)和2個(gè)Secondary節(jié)點(diǎn)。

副本集通過(guò)replSetInitiate命令(或mongo shell的rs.initiate())進(jìn)行初始化,初始化后各個(gè)成員間開(kāi)始發(fā)送心跳消息,并發(fā)起Primary選舉操作,獲得『大多數(shù)』成員投票支持的節(jié)點(diǎn),會(huì)成為Primary,其余節(jié)點(diǎn)成為Secondary。

這里『大多數(shù)』的定義是副本集內(nèi)可投票成員的一半以上,當(dāng)副本集內(nèi)存活成員數(shù)量不足大多數(shù)時(shí),整個(gè)副本集將無(wú)法選舉出Primary,此時(shí)副本集將無(wú)法提供寫服務(wù),處于只讀狀態(tài)。通常建議將副本集成員數(shù)量設(shè)置為奇數(shù),因?yàn)榕紨?shù)個(gè)節(jié)點(diǎn)能容忍的節(jié)點(diǎn)失效和比它少1個(gè)節(jié)點(diǎn)的奇數(shù)個(gè)節(jié)點(diǎn)是一樣的,但是可以節(jié)省一個(gè)節(jié)點(diǎn)的數(shù)據(jù)存儲(chǔ)成本。

除了初始化的時(shí)候會(huì)進(jìn)行選舉,MongoDB副本集的高可用服務(wù)體現(xiàn)在,當(dāng)副本集中沒(méi)有Primary節(jié)點(diǎn)時(shí),選舉都會(huì)進(jìn)行。比如當(dāng)Primary節(jié)點(diǎn)宕機(jī)時(shí),剩下的Secondary節(jié)點(diǎn)中會(huì)選舉出新的Primary(只需要滿足大多數(shù)成員存活的條件)。選舉使用的算法是基于Raft協(xié)議,但是可以通過(guò)為節(jié)點(diǎn)配置選舉優(yōu)先級(jí)對(duì)選舉結(jié)果進(jìn)行控制。

此外需要提一下,有一些比較常見(jiàn)的特殊的Secondary。一個(gè)是Hidden,Hidden節(jié)點(diǎn)和普通的Secondary的區(qū)別是它是對(duì)Driver隱藏的節(jié)點(diǎn),也就是客戶端無(wú)法訪問(wèn)到Hidden,另外就是它的選舉優(yōu)先級(jí)是0,也就是它不能被選舉為Primary。Hidden節(jié)點(diǎn)上擁有數(shù)據(jù),因此通常會(huì)用來(lái)作一些運(yùn)維任務(wù),如數(shù)據(jù)備份、計(jì)算分析等。

另外還有一個(gè)是Arbiter,Arbiter是只參與投票,但是不存儲(chǔ)數(shù)據(jù)的節(jié)點(diǎn),這可以用在對(duì)可用性有要求,又要嚴(yán)格控制成本的場(chǎng)景。

此外還有如Priority0節(jié)點(diǎn)、Delayed節(jié)點(diǎn)等。

3、MongoDB的水平擴(kuò)展

 

MongoDB提供了一種水平擴(kuò)展的方式,叫做sharding,通過(guò)這種方式對(duì)數(shù)據(jù)庫(kù)進(jìn)行擴(kuò)容,對(duì)應(yīng)用是透明的。通過(guò)sharding,可以將一個(gè)集合的數(shù)據(jù)散到多個(gè)shard節(jié)點(diǎn)上。這里每個(gè)shard都可以是一組副本集。應(yīng)用程序通過(guò)一個(gè)路由節(jié)點(diǎn)(mongos)來(lái)訪問(wèn)sharding集群的數(shù)據(jù)。有了sharding,MongoDB就可以突破單機(jī)的限制,比如磁盤、內(nèi)存和IOPS等,從而提供更強(qiáng)大的服務(wù)能力。

 

Sharded cluster由Shard、Mongos和Config server 3個(gè)組件構(gòu)成。Mongos本身并不持久化數(shù)據(jù),Sharded cluster所有的元數(shù)據(jù)都會(huì)存儲(chǔ)到Config Server,而用戶的數(shù)據(jù)則會(huì)分散存儲(chǔ)到各個(gè)shard。Mongos啟動(dòng)后,會(huì)從config server加載元數(shù)據(jù),開(kāi)始提供服務(wù),將用戶的請(qǐng)求正確路由到對(duì)應(yīng)的Shard。

Sharded cluster支持將單個(gè)集合的數(shù)據(jù)分散存儲(chǔ)在多個(gè)shard上,用戶可以指定根據(jù)集合內(nèi)文檔的某個(gè)字段即shard key來(lái)分布數(shù)據(jù),目前主要支持2種數(shù)據(jù)分布的策略,范圍分片(Range based sharding)或hash分片(Hash based sharding)。

范圍分片下,文檔是根據(jù)其shard key的值進(jìn)行分片。shard key的值相鄰近的文檔比較有可能會(huì)被放在同一個(gè)shard上,這種方式適用于需要使用范圍查詢的業(yè)務(wù)。

哈希分片下,文檔根據(jù)其shard key的hash值進(jìn)行分片。這會(huì)保證數(shù)據(jù)分布比較均勻,但是不利于范圍查詢。

隨著數(shù)據(jù)量的增多,MongoDB也會(huì)自動(dòng)在后臺(tái)對(duì)數(shù)據(jù)以chunk為單位進(jìn)行負(fù)載均衡。

三、如何搭建MongoDB數(shù)據(jù)庫(kù)即服務(wù)

接下來(lái)介紹一下今天的重點(diǎn)內(nèi)容,如何搭建一個(gè)MongoDB數(shù)據(jù)庫(kù)即服務(wù)。

 

首先,在我看來(lái),數(shù)據(jù)庫(kù)即服務(wù),應(yīng)該具備這些特性:自動(dòng)化、按需服務(wù)、彈性、安全、高可用和可量化:

  • 第一個(gè),自動(dòng)化,這是非常關(guān)鍵的,是實(shí)現(xiàn)自助服務(wù)的基礎(chǔ),所有可以被自動(dòng)化操作的流程都應(yīng)該被自動(dòng)化,不需要人工干預(yù)。
  • 第二個(gè),按需服務(wù),數(shù)據(jù)庫(kù)即服務(wù)應(yīng)該是由用戶驅(qū)動(dòng)的,后臺(tái)應(yīng)該要有一個(gè)工作流的機(jī)制來(lái)對(duì)需求進(jìn)行響應(yīng)。
  • 第三個(gè),彈性,可以按需動(dòng)態(tài)擴(kuò)縮容。
  • 第四個(gè),安全,這是毋庸置疑的。
  • 第五個(gè),高可用,宕機(jī)自動(dòng)切換。
  • 第六個(gè),可量化,服務(wù)的使用量可以被衡量、報(bào)告并且是可控的。

 

此圖為數(shù)據(jù)庫(kù)即服務(wù)應(yīng)具備的功能大圖。主要包括生命周期管理、容災(zāi)體系、監(jiān)控報(bào)警、數(shù)據(jù)管理和增值服務(wù):

  • 生命周期管理包括數(shù)據(jù)庫(kù)實(shí)例的新建、釋放、擴(kuò)縮容等,這是數(shù)據(jù)庫(kù)即服務(wù)最基礎(chǔ)的功能。
  • 容災(zāi)體系包括高可用、備份恢復(fù),甚至更高級(jí)的如異地容災(zāi)/多活等等。
  • 監(jiān)控報(bào)警一方面就是服務(wù)使用量的監(jiān)控,另一方面則是報(bào)警,包括服務(wù)不可用的報(bào)警,以及一些監(jiān)控?cái)?shù)據(jù)異常的報(bào)警。
  • 數(shù)據(jù)管理指的就是可以方便的對(duì)數(shù)據(jù)進(jìn)行管理,如可以提供一些圖形化界面等。
  • 增值服務(wù)包括審計(jì)、診斷服務(wù)等。其中審計(jì)是數(shù)據(jù)庫(kù)的一個(gè)非常重要的功能,一方面可以幫助查證問(wèn)題,另一方面可以為一些數(shù)據(jù)分析或診斷提供數(shù)據(jù)源。診斷服務(wù)一方面跟蹤服務(wù)的資源使用量,為是否需要擴(kuò)縮容提供決策依據(jù),另一方面主要為慢查詢提供優(yōu)化建議。

  

數(shù)據(jù)庫(kù)即服務(wù)的核心架構(gòu)就是工作流引擎,這是實(shí)現(xiàn)自動(dòng)化及按需服務(wù)的基礎(chǔ)。

1、生命周期管理

 

生命周期管理功能包括數(shù)據(jù)庫(kù)實(shí)例的新建、釋放、擴(kuò)縮容以及遷移。新建一個(gè)數(shù)據(jù)庫(kù)實(shí)例包括分配資源(主要是主機(jī)資源)、安裝數(shù)據(jù)庫(kù)、初始化配置。對(duì)MongoDB來(lái)說(shuō),副本集涉及多個(gè)節(jié)點(diǎn),涉及到資源的分配策略,Sharding更多。另外副本集還需要一些初始化工作,sharding需要有一個(gè)各組件的組合。釋放實(shí)例比較簡(jiǎn)單,主要是資源的回收。擴(kuò)縮容可以分為本地和跨機(jī)的擴(kuò)縮容,其實(shí)跨機(jī)的擴(kuò)縮容就是遷移。對(duì)于MongoDB來(lái)說(shuō),遷移可以直接利用MongoDB的添加節(jié)點(diǎn)自動(dòng)同步的特性,還是比較方便的。

 

生命周期管理功能主要涉及這幾個(gè)組件,包括資源管理、規(guī)格及配置管理、軟件棧管理和負(fù)載均衡:

資源管理主要是指主機(jī)資源的管理,這里主機(jī)可以是物理機(jī),也可以是虛擬機(jī),如云主機(jī)等。資源管理主要負(fù)責(zé)資源的分配和回收,此外還包括如何實(shí)施資源隔離。

規(guī)格及配置管理一個(gè)是需要為數(shù)據(jù)庫(kù)實(shí)例制定一些規(guī)格,以方便擴(kuò)容和縮容,另一方面是負(fù)責(zé)數(shù)據(jù)庫(kù)相關(guān)配置的維護(hù)。

軟件棧管理則包括數(shù)據(jù)庫(kù)軟件以及其依賴的軟件的安裝維護(hù)等,包括操作系統(tǒng)。

除了這些,還需要一個(gè)負(fù)載均衡組件來(lái)保證數(shù)據(jù)庫(kù)實(shí)例在資源上的分布的均衡,當(dāng)有主機(jī)資源需要下線的時(shí)候,能夠做到自動(dòng)對(duì)其上的數(shù)據(jù)庫(kù)實(shí)例進(jìn)行遷移。 

 

對(duì)于MongoDB來(lái)說(shuō),在實(shí)施資源分配策略時(shí)需要注意的一點(diǎn)是需要保證不要破壞副本集原本的高可用特性。雖然MongoDB副本集自帶了高可用,但是如果你把副本集的所有節(jié)點(diǎn)都分布在一臺(tái)物理機(jī)上,那如果這個(gè)物理機(jī)掛了,整個(gè)副本集都沒(méi)用了。所以一個(gè)起碼的原則是要保證MongoDB多副本的主機(jī)安全性,盡可能夠做到機(jī)架安全。

 

現(xiàn)在我們的MongoDB數(shù)據(jù)庫(kù)即服務(wù)的架構(gòu)可以稍微擴(kuò)充一下了,多了資源服務(wù)、規(guī)格及配置服務(wù)、軟件棧服務(wù)以及負(fù)載均衡服務(wù)這幾個(gè)組件。

2、容災(zāi)體系

 

接下來(lái)看一下容災(zāi)體系,這包括高可用、備份/恢復(fù)、異地容災(zāi)/多活。高可用需要有一個(gè)負(fù)責(zé)健康檢查的巡檢服務(wù),另外還需要有一個(gè)容災(zāi)切換的組件。備份/恢復(fù)也是容災(zāi)體系非常重要的一環(huán),這里有一個(gè)很容易被忽視的事情是需要做備份的有效性驗(yàn)證。如果備份不是有效的,那等于沒(méi)有備份。異地容災(zāi)/多活是比較高級(jí)的容災(zāi)能力,實(shí)施起來(lái)比較復(fù)雜,有興趣的同學(xué)可以參考我之前做過(guò)的一個(gè)分享《MongoDB異地容災(zāi)多活實(shí)踐》。

(鏈接:https://yq.aliyun.com/articles/96598) 

 

MongoDB副本集自帶了高可用,我們還需要做什么工作呢?主要是需要保證容災(zāi)切換的一個(gè)可控。以一個(gè)經(jīng)典的3節(jié)點(diǎn)P/S/H副本集為例,一方面我們可以通過(guò)配置選舉優(yōu)先級(jí)的方式來(lái)保持Primary和Secondary的角色穩(wěn)定性。另一方面,我們希望在任意時(shí)刻,用戶都可以有兩個(gè)節(jié)點(diǎn)是可訪問(wèn)的,因此我們需要對(duì)節(jié)點(diǎn)宕機(jī)后的副本集做一些reconfig操作,保證宕機(jī)節(jié)點(diǎn)最終都會(huì)變成Hidden,然后統(tǒng)一對(duì)Hidden進(jìn)行處理,比如重搭等。

 

容災(zāi)體系第二個(gè)比較重要的點(diǎn)就是備份恢復(fù)。備份主要需要做的是需要提供自動(dòng)/手動(dòng)的備份方式以及支持一些靈活的備份策略制定,如備份周期/備份保留時(shí)間等?;謴?fù)主要是看對(duì)恢復(fù)的形態(tài)做成什么樣,是覆蓋原來(lái)的實(shí)例還是克隆出一個(gè)新的實(shí)例來(lái),還有就是恢復(fù)的粒度,這取決于備份能力,是只能恢復(fù)到某個(gè)全量備份,還是可以恢復(fù)到任意時(shí)間點(diǎn)。關(guān)于備份存儲(chǔ),我們要求的最要 能力是高可靠性。另外就是剛剛提過(guò)的備份有效性驗(yàn)證,不能等到火燒眉毛了才發(fā)現(xiàn)備份不可用,需要防范于未然。

 

關(guān)于MongoDB的備份方法,相關(guān)的文檔和分享已經(jīng)有很多了,這里再簡(jiǎn)單提一下。全量備份從實(shí)施方式上可以分為兩種,邏輯備份和物理備份。其中邏輯備份主要使用官方提供的mongodump/mongorestore工具。物理備份則可以在文件系統(tǒng)或是更底層的邏輯卷、塊設(shè)備這層去做。

  

從各個(gè)指標(biāo)上對(duì)比邏輯備份和物理備份,在備份和恢復(fù)效率上,物理備份的優(yōu)勢(shì)比較明顯,不過(guò)邏輯備份在兼容性上會(huì)比較好。

 

MongoDB的增量備份主要通過(guò)持續(xù)的抓取oplog來(lái)實(shí)現(xiàn)。有了全量備份加增量備份,就可以實(shí)現(xiàn)恢復(fù)到任意時(shí)間點(diǎn)。

 

至此,我們的MongoDB數(shù)據(jù)庫(kù)即服務(wù)的架構(gòu)又可以得到一個(gè)比較大的擴(kuò)充,主要增加了高可用以及備份相關(guān)的一些服務(wù)。

3、監(jiān)控報(bào)警

 

接下來(lái)看下數(shù)據(jù)庫(kù)的監(jiān)控報(bào)警,性能監(jiān)控主要涉及性能數(shù)據(jù)的采集、存儲(chǔ)和展示。采集粒度越細(xì)越好,最好能做到秒級(jí)。報(bào)警則可以分為可用性的報(bào)警和性能數(shù)據(jù)的報(bào)警。

 

具備監(jiān)控報(bào)警能力后的架構(gòu)圖已經(jīng)有點(diǎn)滿了,這里報(bào)警服務(wù)可以通過(guò)巡檢服務(wù)和性能數(shù)據(jù)存儲(chǔ)收集相關(guān)數(shù)據(jù)。

4、增值服務(wù)

 

來(lái)看最后一個(gè)增值服務(wù),一個(gè)是審計(jì),主要涉及審計(jì)日志的采集、存儲(chǔ)和分析。另一個(gè)是診斷服務(wù),一個(gè)是資源使用量上的診斷,另外一個(gè)是慢查詢的診斷,可以做一些索引推薦等。

 

這就是我們的MongoDB數(shù)據(jù)庫(kù)即服務(wù)的完整架構(gòu),可以看到組件還是比較多的,做一個(gè)數(shù)據(jù)庫(kù)即服務(wù)還不是那么容易的。

總結(jié)

 

最后做一下總結(jié),我認(rèn)為數(shù)據(jù)庫(kù)即服務(wù)的核心特性有兩點(diǎn),一個(gè)是資源池化,另外一個(gè)是服務(wù)可量化。

資源池化后才可以進(jìn)行資源的自動(dòng)管理,而我們需要的服務(wù)是要能夠被量化的,并且是可控的?,F(xiàn)在回顧一下之前的一鍵安裝數(shù)據(jù)庫(kù),其實(shí)背后有許多工作要做。當(dāng)然,如果覺(jué)得自己搭建一個(gè)數(shù)據(jù)庫(kù)即服務(wù)太麻煩,可以考慮使用現(xiàn)成的云服務(wù),比如阿里云MongoDB數(shù)據(jù)庫(kù)服務(wù):) 

責(zé)任編輯:龐桂玉 來(lái)源: 36大數(shù)據(jù)
相關(guān)推薦

2024-07-30 09:22:44

PostgreSQL數(shù)據(jù)庫(kù)工具

2024-05-15 14:29:45

2015-10-15 14:16:24

2016-11-02 14:09:13

搭建論壇Web服務(wù)器網(wǎng)關(guān)接口

2013-03-06 09:51:19

數(shù)據(jù)庫(kù)即服務(wù)DBaaS云數(shù)據(jù)庫(kù)

2015-11-17 16:11:07

Code Review

2019-01-18 12:39:45

云計(jì)算PaaS公有云

2018-04-18 07:01:59

Docker容器虛擬機(jī)

2016-11-02 13:33:43

2025-04-23 03:00:00

多模態(tài)RAGMinerU

2022-09-01 10:46:02

前端組件庫(kù)

2024-12-06 17:02:26

2020-07-02 15:32:23

Kubernetes容器架構(gòu)

2023-12-27 08:47:41

PrometheusLinux架構(gòu)

2016-11-02 14:18:45

搭建論壇Flask框架

2017-02-10 09:30:33

數(shù)據(jù)化運(yùn)營(yíng)流量

2020-07-17 07:27:17

數(shù)據(jù)庫(kù)即服務(wù)DBaaS

2022-08-26 10:26:16

前端開(kāi)發(fā)

2016-10-19 08:36:51

2010-05-26 17:35:08

配置Xcode SVN
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)