Mongodb分片 Sharding 功能實現

2021-09-20 22:26:25 字數 4170 閱讀 1384

在mongodb裡面存在另一種集群,就是分片技術,可以滿足mongodb資料量大量增長的需求。

當mongodb儲存海量的資料時,一台機器可能不足以儲存資料,也可能不足以提供可接受的讀寫吞吐量。這時,我們就可以通過在多台機器上分割資料,使得資料庫系統能儲存和處理更多的資料。

下圖展示了在mongodb中使用分片集群結構分布:

上圖中主要有如下所述三個主要元件:

192.168.1.100 :   mongos

192.168.1.110 :   config server

192.168.1.101 :   shard1

192.168.1.102 :   shard2

以上四個主機上都以安裝mongodb資料庫。

一.配置config server

編輯配置檔案mongod.conf:

1vim/etc/mongod.conf

新增如下並啟用config server服務:

1

configsvr=true

重新啟動mongodb服務:

1

service mongod restart

注:預設監聽27019埠。也可以使用如下命令啟動mongod程序。

1# mongod --configsvr --dbpath --port

此時,預設埠由27017變為27019:

二.配置mongos例項

安裝mongos:

1yuminstallmongodb-org-mongos-2.6.1-1.x86_64.rpm

啟動mongos:

1

mongos --configdb=192.168.1.110 --fork --logpath=/var/log/mongodb/mongos.log

注:mongos屬於輕量級應用,完全可以與其它服務執行於同一節點;啟動時,需要為mongos例項指明各config伺服器的訪問位址;

預設情況下,mongos監聽於27017埠;可以使用如下命令啟動mongos例項。

1# mongos --configdb

也可以直接編輯配置檔案:

1、注釋dbpath指令;

2、新增configdb指令,並指定config伺服器的位址;

而後使用如下命令啟動mongos例項:

1# mongos -f /etc/mongod.conf

登入mongos並配置shard節點:

1

2

3

4

5

mongo --host 192.168.1.100

mongos> sh.addshard("192.168.1.101")

mongos> sh.addshard("192.168.1.102")

檢視shard狀態:

12

3

4

5

6

7

8

9

10

11

12

13

14

mongos> sh.status()

--- sharding status ---

sharding version:

shards:

databases:

啟動sharding功能:

12

mongos> sh.enablesharding("testdb");

注:mongodb的shard功能實現於collection級別,但若要在collection上啟動shard,還需要事先其相關的資料庫上啟用之。在資料庫上啟用shard功能後,mongodb會為其指定乙個主shard。

啟用過程需要mongos例項上實現,可以使用sh.enablesharding()方法,也可以使用db.runcommand()的「enablesharding命令,它們的使用格式分別如下所示:

1

2

sh.enablesharding("")

db.runcommand(  )

此時,再次檢視shard狀態為:

12

3

4

5

6

7

8

9

10

11

12

13

14

mongos> sh.status()

--- sharding status ---

sharding version:

shards:

databases:

測試:

在collection上進行sharding:

12

mongos> sh.shardcollection("testdb.student",)

插入資料:

12

mongos>for(i=1;i<=100000;i++) db.student.insert();

writeresult()

此時我們再次檢視sharding狀態如下:

搭建mongodb分片

這是一種將海量的資料水平擴充套件的資料庫集群系統,資料分表儲存在sharding的各個節點上,使用者通過簡單的配置就可以很方便地構建乙個分布式mongodb集群。mongodb 的資料分塊稱為 chunk。每個 chunk 都是 collection中一段連續的資料記錄,通常最大尺寸是 200mb,...

MongoDB分片技術

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

mongodb分片技術

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