mongodb服务器集群shard,所有数据都往一个片服务器上的一个chunk写,超过限制的chunksize,也不会分块。

junzizhao 2015-12-08 11:26:27
用3台pc搭建mongodb的分布式系统,在三台pc上都运行以下命令:$MONGODB_PATH是我设置好的一个变量
mongod --configsvr --dbpath ${MONGODB_PATH}/config/data --port 21000 --logpath ${MONGODB_PATH}/config/log/config.log --fork
mongod --shardsvr --replSet shard1 --port 22001 --dbpath ${MONGODB_PATH}/shard1/data --logpath ${MONGODB_PATH}/shard1/log/shard1.log --fork --nojournal --oplogSize 10
mongod --shardsvr --replSet shard2 --port 22002 --dbpath ${MONGODB_PATH}/shard2/data --logpath ${MONGODB_PATH}/shard2/log/shard2.log --fork --nojournal --oplogSize 10
mongod --shardsvr --replSet shard3 --port 22003 --dbpath ${MONGODB_PATH}/shard3/data --logpath ${MONGODB_PATH}/shard3/log/shard3.log --fork --nojournal --oplogSize 10
在172.24.222.32这台服务器上运行
mongos --configdb 172.24.222.32:21000,172.24.222.39:21000,172.24.222.46:21000 --port 20000 --logpath ${MONGODB_PATH}/mongos/log/mongos.log --fork
分片服务器设置好之后查看配置
mongos> db.runCommand( { listshards : 1 } )
{
"shards" : [
{
"_id" : "shard1",
"host" : "shard1/172.24.222.32:22001,172.24.222.39:22001,172.24.222.46:22001"
},
{
"_id" : "shard2",
"host" : "shard2/172.24.222.32:22002,172.24.222.39:22002,172.24.222.46:22002"
},
{
"_id" : "shard3",
"host" : "shard3/172.24.222.32:22003,172.24.222.39:22003,172.24.222.46:22003"
}
],
"ok" : 1
}
然后对kidwatch数据库的table1集合进行分片
db.runCommand( { enablesharding :"kidwatch"});
#指定数据库里需要分片的集合和片键
db.runCommand( { shardcollection : "kidwatch.table1",key : {key_id: 1} } )
返回都成功之后
use kidwatch
然后我插入数据
for (var i = 1; i <= 3000000; i++)
db.table1.save({key_id:i,"testkey":"testval"});
成功之后查看分片情况
mongos> db.table1.stats()
{
"sharded" : true,
"ns" : "kidwatch.table1",
"count" : 2999999,
"numExtents" : 13,
"size" : 192000000,
"storageSize" : 243314688,
"totalIndexSize" : 181065696,
"indexSizes" : {
"_id_" : 97343456,
"key_id_1" : 83722240
},
"avgObjSize" : 64.00002133334044,
"nindexes" : 2,
"nchunks" : 1,
"shards" : {
"shard1" : {
"ns" : "kidwatch.table1",
"count" : 2999999,
"size" : 192000000,
"avgObjSize" : 64.00002133334044,
"storageSize" : 243314688,
"numExtents" : 13,
"nindexes" : 2,
"lastExtentSize" : 68579328,
"paddingFactor" : 1,
"systemFlags" : 1,
"userFlags" : 0,
"totalIndexSize" : 181065696,
"indexSizes" : {
"_id_" : 97343456,
"key_id_1" : 83722240
},
"ok" : 1
}
},
"ok" : 1
}
所有的数据都写到一个chunk里面,而且chunksize我已经设置为1MB
mongos> db.settings.find()
{ "_id" : "chunksize", "value" : 1 }
现在我不知道什么原因导致mongodb不会分块,请大神们解答,万分感谢
...全文
982 1 1 打赏 收藏 举报
写回复
1 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
luojianvslg 2016-07-22
你分片集群,没有开启自动分片功能,也就是没有开启balancer,在mongos下执行sh.startBalancer();然后进入config库,执行db.settings.find(),可以看到{ "_id" : "balancer", "stopped" : false }
  • 打赏
  • 举报
回复
相关推荐
发帖
数据运维
创建于2013-08-28

950

社区成员

云计算服务器、网络、虚拟化相关讨论
申请成为版主
帖子事件
创建了帖子
2015-12-08 11:26
社区公告
暂无公告