MongoDB的下载和安装
请参考我的博文:MongoDB实现复制集 中所述的下载和安装
分片集节点架构
创建分片设置
创建配置服务器
$ cd /opt/modules/mongodb/
$ mkdir -p /opt/datas/mongodb/sharding/config/data/
$ mkdir -p /opt/datas/mongodb/sharding/config/logs/
$ touch /opt/datas/mongodb/sharding/config/logs/config.log
$ bin/mongod --port 27032 --configsvr --dbpath /opt/datas/mongodb/sharding/config/data --fork --logpath /opt/datas/mongodb/sharding/config/logs/config.log
创建分片控制器
$ touch /opt/datas/mongodb/sharding/config/logs/mongos.log
$ bin/mongos --configdb [hostname]:27032 --port 27031 --chunkSize 1 --fork --logpath /opt/datas/mongodb/sharding/config/logs/mongos.log
创建分片服务器
$ mkdir -p /opt/datas/mongodb/sharding/shard00/data/
$ mkdir -p /opt/datas/mongodb/sharding/shard00/logs/
$ touch /opt/datas/mongodb/sharding/shard00/logs/shard00.log
$ bin/mongod --port 27033 --dbpath /opt/datas/mongodb/sharding/shard00/data --fork --logpath /opt/datas/mongodb/sharding/shard00/shard00.log
$ mkdir -p /opt/datas/mongodb/sharding/shard01/data/
$ mkdir -p /opt/datas/mongodb/sharding/shard01/logs/
$ touch /opt/datas/mongodb/sharding/shard01/logs/shard01.log
$ bin/mongod --port 27034 --dbpath /opt/datas/mongodb/sharding/shard01/data --fork --logpath /opt/datas/mongodb/sharding/shard01/shard01.log
连接分片控制器添加两台分片服务器
$ bin/mongo [hostname]:27031
mongos> sh.addShard("[hostname]:27033")
mongos> sh.addShard("[hostname]:27034")
检查分片服务器状态
mongos> db.printShardingStatus()
现在分片环境已经可以正常运行,但没有分片数据;接下来创建一个名为testdb的数据库,在testdb中创建一个testcollection集合。对该集合进行分片,赋予它一个名为testkey的参数,用作分片函数。
mongos> sh.enableSharding("testdb")
mongos> sh.shardCollection("testdb.testcollection", {testkey : 1})
mongos> use testdb
mongos> show collections
mongos> db.testcollection.insert({testkey:1,testname:"andy.lau"})
在集群中添加新的分片
$ mkdir -p /opt/datas/mongodb/sharding/shard02/data/
$ mkdir -p /opt/datas/mongodb/sharding/shard02/logs/
$ touch /opt/datas/mongodb/sharding/shard02/logs/shard02.log
$ bin/mongod --port 27035 --dbpath /opt/datas/mongodb/sharding/shard02/data --fork --logpath /opt/datas/mongodb/sharding/shard02/shard02.log
$ bin/mongo [hostname]:27031
mongos> sh.addShard("[hostname]:27035")
查看shard02添加情况
mongos> db.printShardingStatus()
从集群中移除分片
mongos> use admin
mongos> db.runCommand({removeShard:"[hostname]:27035"})
查看移除进度
mongos> db.runCommand({removeShard:"[hostname]:27035"})
mongos> db.runCommand({listshards:1})
确定连接方式:isdbgrid:1表示已经启用分片,isdbgrid:0表示是一个非分片数据库
mongos> db.runCommand({isdbgrid:1})
列出分片服务器的状态
mongos> sh.status()