程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SyBase數據庫 >> SyBase教程 >> mongodb的分布式集群(3、分片)

mongodb的分布式集群(3、分片)

編輯:SyBase教程

mongodb的分布式集群(3、分片)


概述

上面兩篇博客都是關於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()                //分片信息

 

分片的優缺點

優點

分布式解決的問題,就是數據太多時,一台服務器不能存儲那麼多數據的問題,當然,向負載均衡等方面的功能,也是有的。

缺點

從上面的部署圖我們可以看出,一旦路由服務器出現問題,那就完蛋了,同樣,一旦某一個片服務出現問題,那麼就會出現數據的不完整性,即缺失數據的問題。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved