8天學通MongoDB 第六天 分片技術

2021-07-08 10:50:27 字數 2112 閱讀 2092



在mongodb裡面存在另一種集群,就是分片技術,跟sql server的表分割槽類似,我們知道當資料量達到t級別的時候,我們的磁碟,記憶體

就吃不消了,針對這樣的場景我們該如何應對。

一:分片

mongodb採用將集合進行拆分,然後將拆分的資料均攤到幾個片上的一種解決方案。

下面我對這張**釋一下:

人臉:       代表客戶端,客戶端肯定說,你資料庫分片不分片跟我沒關係,我叫你幹啥就幹啥,沒什麼好商量的。

mongos: 首先我們要了解」片鍵「的概念,也就是說拆分集合的依據是什麼?按照什麼鍵值進行拆分集合....

好了,mongos就是乙個路由伺服器,它會根據管理員設定的「片鍵」將資料分攤到自己管理的mongod集群,資料

和片的對應關係以及相應的配置資訊儲存在"config伺服器"上。

mongod:   乙個普通的資料庫例項,如果不分片的話,我們會直接連上mongod。

二: 實戰

首先我們準備4個mongodb程式,我這裡是均攤在c,d,e,f盤上,當然你也可以做多個資料夾的形式。

1:開啟config伺服器

先前也說了,mongos要把mongod之間的配置放到config伺服器裡面,理所當然首先開啟它,我這裡就建立2222埠。

2: 開啟mongos伺服器

這裡要注意的是我們開啟的是mongos,不是mongod,同時指定下config伺服器,這裡我就開啟d盤上的mongodb,埠3333。

3:啟動mongod伺服器

對分片來說,也就是要新增片了,這裡開啟e,f盤的mongodb,埠為:4444,5555。

4: 服務配置

哈哈,是不是很興奮,還差最後一點配置我們就可以大功告成。

<1> 先前圖中也可以看到,我們client直接跟mongos打交道,也就說明我們要連線mongos伺服器,然後將4444,5555的mongod

交給mongos,新增分片也就是addshard()。

這裡要注意的是,在addshard中,我們也可以新增副本集,這樣能達到更高的穩定性。

<2>片已經集群了,但是mongos不知道該如何切分資料,也就是我們先前所說的片鍵,在mongodb中設定片鍵要做兩步

①:開啟資料庫分片功能,命令很簡單 enablesharding(),這裡我就開啟test資料庫。

②:指定集合中分片的片鍵,這裡我就指定為person.name欄位。

5: 檢視效果

好了,至此我們的分片操作全部結束,接下來我們通過mongos向mongodb插入10w記錄,然後通過printshardingstatus命令

檢視mongodb的資料分片情況。

這裡主要看三點資訊:

① shards:     我們清楚的看到已經別分為兩個片了,shard0000和shard0001。

② databases:  這裡有個partitioned欄位表示是否分割槽,這裡清楚的看到test已經分割槽。

③ chunks:     這個很有意思,我們發現集合被砍成四段:

無窮小 —— jack0,jack0 ——jack234813,jack234813——jack9999,jack9999——無窮大。

分割槽情況為:3:1,從後面的 on shard***x也能看得出。

8天學通MongoDB 第六天 分片技術

在mongodb裡面存在另一種集群,就是分片技術,跟sql server的表分割槽類似,我們知道當資料量達到t級別的時候,我們的磁碟,記憶體 就吃不消了,針對這樣的場景我們該如何應對。一 分片 mongodb採用將集合進行拆分,然後將拆分的資料均攤到幾個片上的一種解決方案。下面我對這張 釋一下 人臉...

8天學通MongoDB 第六天 分片技術

在mongodb裡面存在另一種集群,就是分片技術,跟sql server的表分割槽類似,我們知道當資料量達到t級別的時候,我們的磁碟,記憶體 就吃不消了,針對這樣的場景我們該如何應對。一 分片 mongodb採用將集合進行拆分,然後將拆分的資料均攤到幾個片上的一種解決方案。下面我對這張 釋一下 人臉...

8天學通MongoDB 第六天 分片技術

在mongodb裡面存在另一種集群,就是分片技術,跟sql server的表分割槽類似,我們知道當資料量達到t級別的時候,我們的磁碟,記憶體 就吃不消了,針對這樣的場景我們該如何應對。一 分片 mongodb採用將集合進行拆分,然後將拆分的資料均攤到幾個片上的一種解決方案。下面我對這張 釋一下 人臉...