基于Mongodb进行分布式数据存储

 

        注:本文是研究Mongodb分布式数据存储的副产品,通过本文的相关步骤可以将一个大表中的数据分布到几个mongo服务器上。

       MongoDB的1.6版本中auto-sharding功能基本稳定并可以尝试放到生产环境下使用。因为其是auto-sharding,即mongodb通过mongos(一个集群环境配置工具)自动建立一个水平扩展的数据库集群系统,将数据库分表存储在sharding的各个节点上。
       一个mongodb集群包括一些shards(包括一些mongod进程),mongos路由进程,一个或多个config服务器 

      (注:本文的测试用例需求64位的mongo程序,因为我在32位的mongo没成功过)。 

       下面是一些相关词汇说明:
       Shards : 每一个shard包括一个或多个服务和存储数据的mongod进程(mongod是MongoDB数据的核心进程)典型的每个shard开启多个服务来提高服务的可用性。这些服务/mongod进程在shard中组成一个复制集

       Chunks: Chunk是一个来自特殊集合中的一个数据范围,(collection,minKey,maxKey)描叙一个chunk,它介于minKey和maxKey范围之间。例如chunks 的maxsize大小是100M,如果一个文件达到或超过这个范围时,会被切分到2个新的chunks中。当一个shard的数据过量时,chunks将会被迁移到其他的shards上。同样,chunks也可以迁移到其他的shards上


       Config Servers : Config服务器存储着集群的metadata信息,包括每个服务器,每个shard的基本信息和chunk信息Config服务器主要存储的是chunk信息。每一个config服务器都复制了完整的chunk信息。


       接着看一下要配置的测试环境信息:

       模拟2个shard服务和一个config服务, 均运行在10.0.4.85机器上,只是端口不同
       Shard1:27020
       Shard2:27021
       Config:27022
       Mongos启动时默认使用的27017端口

       在C,D,E磁盘下分别建立如下文件夹:

               mongodb/bin 

               mongodb/db

 

       然后用CMD命令行依次打开相应文件夹下的mongd文件:

       c:/mongodb/bin/mongod --dbpath c:/mongodb/db/ --port 27020

       d:/mongodb/bin/mongod --dbpath d:/mongodb/db/ --port 27021

       e:/mongodb/bin/mongod --configsvr --dbpath e:/mongodb/db/ --port 27022          (注:config配置服务器)

 

      启动mongos时,默认开启了27017端口

      e:/mongodb/bin/mongos --configdb 10.0.4.85:27022

 

      然后打下mongo:

      E:/mongodb/bin>mongo   回车  (有时加端口会造成下面的addshard命令出问题)

      > use admin
          switched to db admin
      > db.runCommand( { addshard : "10.0.4.85:27020", allowLocal : 1, maxSize:2 , minKey:1, maxKey:10} )  

         --添加sharding,maxsize单位是M,此处设置比较小的数值只为演示sharding效果

         { "shardAdded" : "shard0000", "ok" : 1 }
      > db.runCommand( { addshard : "10.0.4.85:27021", allowLocal : 1, minKey:1000} )
         { "shardAdded" : "shard0001", "ok" : 1 }      

          注:如果要移除sharding,可用下面写法

          db.runCommand( { removeshard : "localhost:10000" } );

 

      > db.runCommand({listshards:1});   查看shard节点列表     

  • 0
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值