MongoDB 分片

1.建立分片

建立分片有两步:启动实际的服务器,然后决定怎么切分数据。

分片一般会有3个组成部分:

片:就是保存子集合数据的容器。片可是单个的mongod服务器,也可以是副本集。所以即便一片内有多台服务器,也只能有一个主服务器,其他的服务器保存相同的数据。

mongos:就是MongoDB各版本中都配的路由器进程。它路由所有请求,然后将结果聚合。它本身并不存储数据或者配置信息(但会缓存配置服务器的信息)。

配置服务器:配置服务器存储了集群的配置信息:数据和片的对应关系。monogs不永久存放数据,所以需要个地方存放分片配置。它会从配置服务器获取同步数据。

1.1启动服务器

mongod --dbpath F:\mongodb\dbs\config --port 20000

1.2建立mongos进程

mongos --port 30000 --configdb localhost:20000

1.3添加片

片就是普通的mongod实例或者副本集

mongod.exe --dbpath F:\mongodb\dbs\shard1 --port 10000

连接刚才启动的mongos为集群添加一个片。

mongo localhost:30000/admin

> db.runCommand({"addshard":"localhost:10000",allowLocal:true})
{ "shardAdded" : "shard0000", "ok" : 1 }

2.切分数据

MongoDB不会将存储的每一条数据都直接发布,得先在数据库和集合的级别将分片功能打开。

> db.runCommand({"enablesharding":"foo"})
{ "ok" : 1 }
开启foo的分片功能.

> db.runCommand({"shardcollection":"foo.bar","key":{"_id":1}})
{ "collectionsharded" : "foo.bar", "ok" : 1 }

开启集合上的分片功能。

你可能感兴趣的:(mongodb)