参考http://scholar.blog.51cto.com/9985645/1673939
一、环境
mongodb-1 192.168.3.31 mongos
mongodb-2 192.168.3.32 shard1
mongodb-3 192.168.3.33 shard2
mongodb-4 192.168.3.34 config server
二、配置过程清理数据(我这里是之前做过mongodb的其它实验)
[root@mongodb-2 ~]# /etc/init.d/mongod stop Stopping mongod: [ OK ] [root@mongodb-2 ~]# rm -rf /usr/local/mongodb/data/*
1.config server配置
#修改配置文件mongodb.conf [root@mongodb-4 ~]# cat /usr/local/mongodb/conf/mongodb.conf #bind_ip=0.0.0.0 #port=27017 configsvr=true #开启config server dbpath=/usr/local/mongodb/data logpath=/usr/local/mongodb/log/mongodb.log pidfilepath=/usr/local/mongodb/log/mongodb.pid directoryperdb=true logappend=true oplogSize=1000 fork=true rest=true #noprealloc=true #master=true
启动服务
[root@mongodb-4 ~]# /etc/init.d/mongodb start Starting mongod: [ OK ] #默认监听在27019,28019上 [root@mongodb-4 ~]# netstat -tunlp |grep mongo tcp 0 0 0.0.0.0:27019 0.0.0.0:* LISTEN 1493/mongod tcp 0 0 0.0.0.0:28019 0.0.0.0:* LISTEN 1493/mongod
2.mongos配置
[root@mongodb-1 ~]# mongos --configdb=192.168.3.34 --fork --logpath=/tmp/mongos.log 2015-08-07T08:22:56.955+0800 W SHARDING running with 1 config server should be done only for testing purposes and is not recommended for production about to fork child process, waiting until server is ready for connections. forked process: 1644 child process started successfully, parent exiting [root@mongodb-1 ~]# netstat -tunlp |grep mongo tcp 0 0 0.0.0.0:27017 0.0.0.0:* LISTEN 1644/mongos
3.shard1配置
#修改配置文件mongodb.conf [root@mongodb-2 ~]# cat /usr/local/mongodb/conf/mongodb.conf #bind_ip=0.0.0.0 #port=27017 dbpath=/usr/local/mongodb/data logpath=/usr/local/mongodb/log/mongodb.log pidfilepath=/usr/local/mongodb/log/mongodb.pid directoryperdb=true logappend=true oplogSize=1000 fork=true #noprealloc=true #master=true #replSet=testrs0
启动服务
[root@mongodb-2 ~]# /etc/init.d/mongod start Starting mongod: [ OK ] [root@mongodb-2 ~]# netstat -tunlp |grep mon tcp 0 0 0.0.0.0:27017 0.0.0.0:* LISTEN 1729/mongod
4.shard2配置
#修改配置文件mongodb.conf [root@mongodb-3 ~]# cat /usr/local/mongodb/conf/mongodb.conf #bind_ip=0.0.0.0 #port=27017 dbpath=/usr/local/mongodb/data logpath=/usr/local/mongodb/log/mongodb.log pidfilepath=/usr/local/mongodb/log/mongodb.pid directoryperdb=true logappend=true oplogSize=1000 fork=true #noprealloc=true #master=true #replSet=testrs0
启动服务
[root@mongodb-3 ~]# /etc/init.d/mongod start Starting mongod: [ OK ] [root@mongodb-3 ~]# netstat -tunlp |grep mon tcp 0 0 0.0.0.0:27017 0.0.0.0:* LISTEN 2161/mongod
5.在mongos上添加shard节点
[root@mongodb-1 ~]# mongo --host 192.168.3.31
MongoDB shell version: 3.0.5
connecting to: 192.168.3.31:27017/test
Server has startup warnings:
mongos> sh.addShard("192.168.3.32") #添加节点1
{ "shardAdded" : "shard0000", "ok" : 1 }
mongos> sh.addShard("192.168.3.33") #添加节点2
{ "shardAdded" : "shard0001", "ok" : 1 }
mongos> sh.status() #查看状态
--- Sharding Status ---
sharding version: {
"_id" : 1,
"minCompatibleVersion" : 5,
"currentVersion" : 6,
"clusterId" : ObjectId("55c3fa618addd3d263602205")
}
shards:
{ "_id" : "shard0000", "host" : "192.168.3.32:27017" }
{ "_id" : "shard0001", "host" : "192.168.3.33:27017" }
balancer:
Currently enabled: yes
Currently running: no
Failed balancer rounds in last 5 attempts: 0
Migration Results for the last 24 hours:
No recent migrations
databases:
{ "_id" : "admin", "partitioned" : false, "primary" : "config" }对所需对象启用分片功能
#对数据库启用sharding功能
mongos> sh.enableSharding("testdb")
{ "ok" : 1 }
mongos> sh.status()
--- Sharding Status ---
sharding version: {
"_id" : 1,
"minCompatibleVersion" : 5,
"currentVersion" : 6,
"clusterId" : ObjectId("55c3fa618addd3d263602205")
}
shards:
{ "_id" : "shard0000", "host" : "192.168.3.32:27017" }
{ "_id" : "shard0001", "host" : "192.168.3.33:27017" }
balancer:
Currently enabled: yes
Currently running: no
Failed balancer rounds in last 5 attempts: 0
Migration Results for the last 24 hours:
No recent migrations
databases:
{ "_id" : "admin", "partitioned" : false, "primary" : "config" }
{ "_id" : "test", "partitioned" : false, "primary" : "shard0000" }
{ "_id" : "testdb", "partitioned" : true, "primary" : "shard0000" } #已生效
#指定需要分片的Collection及索引
mongos> sh.shardCollection("testdb.students",{"age":1})
{ "collectionsharded" : "testdb.students", "ok" : 1 }
mongos> sh.status()
--- Sharding Status ---
sharding version: {
"_id" : 1,
"minCompatibleVersion" : 5,
"currentVersion" : 6,
"clusterId" : ObjectId("55c3fa618addd3d263602205")
}
shards:
{ "_id" : "shard0000", "host" : "192.168.3.32:27017" }
{ "_id" : "shard0001", "host" : "192.168.3.33:27017" }
balancer:
Currently enabled: yes
Currently running: no
Failed balancer rounds in last 5 attempts: 0
Migration Results for the last 24 hours:
No recent migrations
databases:
{ "_id" : "admin", "partitioned" : false, "primary" : "config" }
{ "_id" : "test", "partitioned" : false, "primary" : "shard0000" }
{ "_id" : "testdb", "partitioned" : true, "primary" : "shard0000" }
testdb.students
shard key: { "age" : 1 }
chunks:
shard0000 1
{ "age" : { "$minKey" : 1 } } -->> { "age" : { "$maxKey" : 1 } } on : shard0000 Timestamp(1, 0)分片功能已开启,接下来我们手动创建数据来验证是否会分片
mongos> for (i=1;i<=100000;i++) db.students.insert({name:"student"+i,age:(i%120),address:"China"})
WriteResult({ "nInserted" : 1 })
mongos> db.students.find().count()
100000
mongos> sh.status()
--- Sharding Status ---
sharding version: {
"_id" : 1,
"minCompatibleVersion" : 5,
"currentVersion" : 6,
"clusterId" : ObjectId("55c3fa618addd3d263602205")
}
shards:
{ "_id" : "shard0000", "host" : "192.168.3.32:27017" }
{ "_id" : "shard0001", "host" : "192.168.3.33:27017" }
balancer:
Currently enabled: yes
Currently running: no
Failed balancer rounds in last 5 attempts: 0
Migration Results for the last 24 hours:
1 : Success
databases:
{ "_id" : "admin", "partitioned" : false, "primary" : "config" }
{ "_id" : "test", "partitioned" : false, "primary" : "shard0000" }
{ "_id" : "testdb", "partitioned" : true, "primary" : "shard0000" }
testdb.students
shard key: { "age" : 1 }
chunks:
shard0000 2 #2个分片
shard0001 1 #1个分片
{ "age" : { "$minKey" : 1 } } -->> { "age" : 2 } on : shard0000 Timestamp(2, 1)
{ "age" : 2 } -->> { "age" : 10 } on : shard0000 Timestamp(1, 2)
{ "age" : 10 } -->> { "age" : { "$maxKey" : 1 } } on : shard0001 Timestamp(2, 0)
















