mongodb简单分片实验

##mongodb简单分片实验
10.127.32.121       mongos  shard1
10.127.32.123       shard3
10.127.32.125       config  shard2

##安装数据库
安装略
##10.127.32.121 包含mongos和shard1节点##
[root@node1 ~]# mkdir -p /home/mongodb/mongos/log
[root@node1 ~]# mkdir -p /home/mongodb/shard1/log      
[root@node1 ~]# mkdir -p /home/mongodb/shard1/data

##10.127.32.125 包含config和shard2节点##
[root@node2 /]# mkdir -p /home/mongodb/config/data
[root@node2 /]# mkdir -p /home/mongodb/config/log
[root@node2 /]# mkdir -p /home/mongodb/shard2/data
[root@node2 /]# mkdir -p /home/mongodb/shard2/log

##10.127.32.123 包含shard3节点##
[root@node3 /]# mkdir -p /home/mongodb/shard3/data
[root@node3 /]# mkdir -p /home/mongodb/shard3/log

##配置并启动shard节点
10.127.32.121    
[root@node1 ~]# mongod --dbpath=/home/mongodb/shard1/data --logpath=/home/mongodb/shard1/log/shard1.log --logappend --port 27017 --shardsvr --fork
netstat -luntp |grep 27017
10.127.32.125
[root@node2 /]# mongod --dbpath=/home/mongodb/shard2/data --logpath=/home/mongodb/shard2/log/shard2.log --logappend --port 27017 --shardsvr --fork
netstat -luntp |grep 27017
10.127.32.123
[root@node3 /]# mongod --dbpath=/home/mongodb/shard3/data --logpath=/home/mongodb/shard3/log/shard3.log --logappend --port 27017 --shardsvr --fork
netstat -luntp |grep 27017
##配置并启动config节点
10.127.32.125
[root@node2 /]# mongod --dbpath=/home/mongodb/config/data --logpath=/home/mongodb/config/log/config.log --logappend --port 27018 --configsvr --fork
netstat -luntp |grep 27018
##配置并启动mongos节点
10.127.32.121
[root@node1 ~]# mongos  --logpath=/home/mongodb/mongos/log/mongos.log --logappend --port 27019 --configdb 10.127.32.125:27018 --fork
[root@node1 ~]# netstat -luntp |grep 27019

##添加分片
(连接mongos——>add shards——>enable sharding——>对集合进行分片)
语法:
db.runCommand({addshard:"127.0.0.1:8081",allowLocal:true})  ##allowLocal:true仅仅开发时才将分片配置到本地,生产时不能这样
单实例添加:db.runCommand({addshard:":",maxSize:,name:""})
副本群集添加:db.runCommand({addshard:"/:",maxSize:,name:""})
注意:如果mongos和shard在同一服务器上,不能通过localhost添加分片,建议通过实际IP地址。在mongos上执行下属命令:
use admin
db.runCommand({addshard:"10.127.32.121:27017"})
db.runCommand({addshard:"10.127.32.123:27017"})
db.runCommand({addshard:"10.127.32.125:27017"})

##上述配置信息被添加至config server

##开启分片功能
use shard_db
for (i=0;i<=10000;i++){db.t1.insert({id:i})}

use admin
db.runCommand({"enablesharding":"shard_db"})

##对集合及逆行分片
db.runCommand({shardcollection:"",key:""})
unique:"true/false" ##启动对shard key的唯一性约束,默认是true

db.runCommand({"shardcollection":"shard_db.t1","key":{"_id":1}})
db.runCommand({"shardcollection":"shard_db.t1","key":{"id":1}})  ##"errmsg" : "please create an index that starts with the shard key before sharding." 默认需要创建索引

use shard_db
for (i=10001;i<=100000;i++){db.t1.insert({id:i})}


##测试分片##通过mongos

##查看集合状态
use shard_db
db.t1.stats()

##查看配置库对于分片服务器的配置存储,查看分片状态
use admin
mongos> db.printShardingStatus()
##查看集群对t1的自动分片机制配置信息
    use config
mongos> db.shards.find()
##删除shard
db.runCommand({"removeshard" : "ip:port"})

##修改shard
db.runCommand({"moveprimary" : "test","to" : "ip:port"})
##新增shard
db.runCommand({addshard:"ip:port",allowLocal:true})


请使用浏览器的分享功能分享到微信等