在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:
1yum
install
mongodb-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採用將集合進行拆分,然後將拆分的資料均攤到幾個片上的一種解決方案。下面我對這張 釋一下 人臉...