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

概述

       上面两篇博客都是关于mongodb的集群的配置,没有涉及到分布式,该片博客就是写mongodb的分布式,把一个整体,分成多个片,每个片部署到不同的服务器上,这个就是mongodb的分布式,即:mongodb的分片操作。


部署图

        mongodb的分布式集群(3、分片)_第1张图片

       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()                //分片信息

分片的优缺点

       优点

              分布式解决的问题,就是数据太多时,一台服务器不能存储那么多数据的问题,当然,向负载均衡等方面的功能,也是有的。

       缺点

              从上面的部署图我们可以看出,一旦路由服务器出现问题,那就完蛋了,同样,一旦某一个片服务出现问题,那么就会出现数据的不完整性,即缺失数据的问题。

你可能感兴趣的:(mongodb的分布式集群(3、分片))