如果一個數據集很大,很難在一個服務器上放下,那麼此時MongoDB的分片技術就派上用場了。
MongoDB創建分片的流程大致如下:
1、創建N(N>=2)個Mongo服務實例作爲片節點。
2、創建configsrv服務實例,用來維護meta信息。
3、啓動mongos作爲路由服務器。
4、設定好數據的分片規則。
1、首先,我們創建2個Mongodb服務實例,作爲片節點。
用管理員命令打開cmd,然後輸入下面的命令。
Port:27017
Port:27018
2、 創建配置節點服務器:port 27020, 需要在參數中指定 configsvr選項。
3、啓動Mongos服務,需指定配置節點服務器地址(configdb選項)。
4、進入port:30000的mongo中
sh.status():查看分片狀態。
sh.addShard('本機IP:27017'):添加分片節點
sh.addShard('本機IP:27018'):添加分片節點
可以看到
sh.enableSharding('庫'):設定某個庫是分片的。
sh.shardCollection('集合全名', 分片字段):指定以某個集合中的特定分片字段來分片。
分片是按照chunsize大小進行的,默認的chunksize大小爲80M,我們可以通過config數據庫中的settings集合來修改。如下
我們設置chunksize爲1M.
分片的過程主要爲如果某個片節點的chunk比另一節點多3個及以上則進行移動重新分配。此過程增加了大量的IO開銷。爲此,我們可以預先定義好分片的規則。如下圖,我們在shop庫中的user表上用userid定義分片。定義40個chunk,每1000行數據爲一個chunk.
此時我們通過sh.status(),可以看到每個片節點上的chunk數瞬間實現了均衡。
好了,到此結束。若有任何問題,可以在評論區留言。謝謝大家。