mongodb sharding 学习笔记

mongodb auto-sharding分片
优点在于可以存储海量的数据并且可以扩容。
支持动态添加或移除sharding,添加shard时,mongo会自动将部分数据转移到新的分片上。
移除shard时,mongo会自动将此分片上的数据转移到其它分片上

分片包括3种服务器:
  1.分片服务器:存储实际的分片数据
  2.配置服务器:存储所有shard节点的配置信息、每个chunk的shard key范围、chunk在各shard的分布情况、该集群中所有db和collection的sharding配置信息
  3.路由服务器:询问配置服务器,上哪个分片服务器上进行查询或写入等操作。

#./shard1.conf 配置实例:
    dbpath = d:/mongodb/shard/data/service1
    logpath = d:/mongodb/shard/log/log1.log
    shardsvr = true
    logappend = true
    port = 20001
    rest=true

#./config.conf 配置实例:
    dbpath = d:/mongodb/shard/data/config
    logpath = d:/mongodb/shard/log/config.log
    configsvr = true
    logappend = true
    port = 30001
    rest=true

#./mongos.conf 配置实例
    logpath = d:/mongodb/shard/log/mongos.log
    configdb = localhost:30001
    logappend = true
    port = 40001
    chunkSize = 1            #设置chunk大小。以兆为单位

#配置并启动mongo服务
cmd:>
mongod -f d:/mongodb/shard/shard1.conf
cmd:>
mongod -f d:/mongodb/shard/shard2.conf
cmd:>
mongod -f d:/mongodb/shard/config.conf
cmd:>
mongos -f d:/mongodb/shard/mongos.conf

mongo:>mongo admin --port 40001                                   #连接到mongos的admin库
mongo:>db.runCommand({addshard:"localhost:20001"})                #添加分片服务器
mongo:>db.runCommand({addshard:"localhost:20002"})                #添加分片服务器
mongo:>db.runCommand({enablesharding:"test"})                     #设置要分片的数据库
mongo:>db.runCommand({shardcollection:"test.users",key:{_id:1}})  #设置分片的集合名称,且必须指定shard key.系统自动创建索引
mongo:>for (var i=1;i<=500000;i++) db.users.insert({age:i,name:"test",addr:"shanghai",country:"China"})
mongo:>db.users.stats();                                          #查看表的状态,包括是否分片,分片上数据大小等等。
mongo:>db.runCommand({listshards:1})                              #列出所有的 shard server.
mongo:>printShardingStatus()                                      #查看sharding信息
mongo:>db.runCommand({isdbgrid:1})                                #判断是否是sharding
mongo:>db.runCommand({shardcollection:"test.users2",key:{_id:1}}) #对user2的集合进行分片

#新增|删除shard server
cmd:>
mongod -f d:/mongodb/shard/shard3.conf
mongo:>mongo admin --port 40001                      #连接到mongos的admin库
mongo:>db.runCommand({addshard:"localhost:20003"})   #添加分片服务器
mongo:>db.runCommand({removeshard:"localhost:2003"}) #移除分片服务器


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值