用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不会分块,请大神们解答,万分感谢