上面兩篇博客都是關於mongodb的集群的配置,沒有涉及到分布式,該片博客就是寫mongodb的分布式,把一個整體,分成多個片,每個片部署到不同的服務器上,這個就是mongodb的分布式,即:mongodb的分片操作。
mongos服務器做的是路由服務器,config服務器就是保存相應配置的服務器,shard1和shard2就是分片服務器,這兩個服務器合在一起才是一個整體,而mongos服務器就是他們的和點,所以,我們客戶端只需要和mongos服務器交互就可以了,後面的,服務器自己會將相應的信息存放到不同的片服務器上。
//啟動shard服務器 mongod --dbpath C:\Mongodb\data\shard1 mongod --dbpath C:\Mongodb\data\shard2 //啟動config服務器 mongod --dbpath C:\Mongodb\data\config --port 27017 //啟動mongos服務器(chunkSize:當分片插入大於1M時,開始進行數據轉移,默認200MB) mongos --port 27017 --configdb 192.168.24.125:27017 --chunkSize 1 //登錄mongos服務器,添加shard服務器(allowLocal允許本地部署多個分片,默認不允許) use admin db.runCommand({addshard : "192.168.24.42:27017", allowLocal : true}) db.runCommand({addshard : "192.168.24.252:27017", allowLocal : true}) //登錄mongos服務器,開啟數據庫分片功能,並指定集合的分片片鍵 db.runCommand({enablesharding : "DBName"}) db.runCommand({shardcollection:"DBName.CName",key:{fieldName:1}}) //數字代表排序這裡需要注意,一定要指定集合的分片的片鍵,這個鍵就是將這個整體分成部分的關鍵。此時我們可以做一些測試操作,登錄mongos服務器,輸入相應的測試數據,然後,分別登上不同的片服務器,看看裡面的內容,你就明白了。測試數據等其他方面的命令如下
for(var i=0;i<100000;i++){ db.perons.insert({id:i, name:"qingshan"+i})}//測試數據 片節點操作 //移除非主分片,第一次轉移數據,第二次刪 db.runCommand({"removeshard" : "192.168.24.42:27017"}); db.runCommand({"removeshard" : "192.168.24.42:27017"}); //添加分片(須先刪除數據庫) db.runCommand({addshard : "192.168.24.42:27017", allowLocal : true}) //移除主分片,第一次設置主分片,第二次刪 db.runCommand({"moveprimary" : "192.168.24.42:27017"}); db.runCommand({"removeshard" : "192.168.24.252:27017"}); db.runCommand({listshards:1}) //分片信息 db.printShardingStatus() //分片狀態 use config db.shards.find() //分片服務器信息 db.chunks.find() //分片信息