mongodb的sharding集群由以下3个服务组成:
Shards Server: 每个shard由一个或多个mongod进程组成,用于存储数据
Config Server: 用于存储集群的Metadata信息,包括每个Shard的信息和chunks信息
Route Server: 用于提供路由服务,由Client连接,使整个Cluster看起来像单个DB服务器
另外,Chunks是指MongoDB中一段连续的数据块,默认大小是200M,一个Chunk位于其中一台Shard服务器上
下面,搭建一个Cluster,它由4台服务器组成,包括3个Shard,3个Config,1个Route
配置config /usr/local/mongodb/bin/mongod --configsvr --dbpath /usr/local/mongodb/config1 --port 28001 --logpath=/usr/local/mongodb/config1/config.log --replSet configs & /usr/local/mongodb/bin/mongod --configsvr --dbpath /usr/local/mongodb/config2 --port 28002 --logpath=/usr/local/mongodb/config2/config.log --replSet configs & /usr/local/mongodb/bin/mongod --configsvr --dbpath /usr/local/mongodb/config3 --port 28003 --logpath=/usr/local/mongodb/config3/config.log --replSet configs & rs.initiate({ _id:"configs", // replSet指定的名称 members:[{ _id:0, host:"127.0.0.1:28001" // 主节点ip与端口 }] }) rs.add("127.0.0.1:28002"); rs.add("127.0.0.1:28003"); 配置路由设置 /usr/local/mongodb/bin/mongos --port 40000 --configdb="configs/127.0.0.1:28001,127.0.0.1:28002,127.0.0.1:28003" --logpath /usr/local/mongodb/mongos/mongos.log 配置sharding 节点 /usr/local/mongodb/bin/mongod -shardsvr -dbpath=/usr/local/mongodb/c1 -port 29017 -logpath=/usr/local/mongodb/c1/29017.log & /usr/local/mongodb/bin/mongod -shardsvr -dbpath=/usr/local/mongodb/c2 -port 29018 -logpath=/usr/local/mongodb/c2/29018.log & /usr/local/mongodb/bin/mongod -shardsvr -dbpath=/usr/local/mongodb/c3 -port 29019 -logpath=/usr/local/mongodb/c3/29019.log & 路由配置 /usr/local/mongodb/bin/mongo --port 40000 切换到 admin : use admin db.runCommand({ addshard:"127.0.0.1:29017" }) db.runCommand({ addshard:"127.0.0.1:29018" }) db.runCommand({ addshard:"127.0.0.1:29019" }) db.runCommand({"enablesharding": "test"}) 对chunk的移动 db.adminCommand({moveChunk : "test.yhl", find : {id:{$gt:2}}, to : "shard0002"});