第42章:MongoDB-集群--Sharding(分片)--单机的搭建

①配置服务器

在大型的集群中,建议配置3台配置服务器,就足够用了。启动配置服务器的方式:

1:先创建几个存放数据的文件夹,比如在前面的dbs下面创建confdb文件夹,然后在confdb下面创建confdb1,confdb2,confdb3文件夹;同理在前面的logs下面创建conflogs文件夹

 

2:然后分别启动这三个配置服务器,使用--configsvr指明是配置服务器,如下:

./mongod --configsvr --dbpath ../dbs/confdb/confdb1 --logpath ../logs/conflog/conflog1 --fork --port 30001

./mongod --configsvr --dbpath ../dbs/confdb/confdb2 --logpath ../logs/conflog/conflog2 --fork --port 30002

./mongod --configsvr --dbpath ../dbs/confdb/confdb3 --logpath ../logs/conflog/conflog3 --fork --port 30003

3:--configsvr默认的端口为27019,默认的数据目录为/data/configdb,可以使用--dbpath和--port自己定义。

4:注意不要使用--replSet选项,配置服务器不是副本集成员。Mongos会向所有的3台配置服务器发送写请求,并确保3台服务器拥有相同的数据

②启动mongos进程

1:./mongos --configdb localhost:30001,localhost:30002,localhost:30003 --logpath ../logs/conflog/mongoslog --fork

2:可以启动任意多个mongos,通常是一个应用服务器使用一个mongos,也就是说mongos通常与应用服务器运行在一个机器上

3:mongos的默认端口是27017,可以用chunkSize来指定块的大小,默认是200M

③将副本集转换成为分片

 

1:如果没有副本集,按照前面讲的创建并初始化一个;如果有一个副本集,就打开相应的服务器,把副本集运行起来

 

 

2:./mongo localhost:27017  

   use admin

3:然后连接到mongos,把副本集转换成为分片,示例如下:

   sh.addShard("myrepl/127.0.0.1:20001,127.0.0.1:20002");

   不用把所有副本集的成员都写出来,mongos会自动检查整个副本集。副本集的名称myrepl就用作了分片的名称。

4:使用sh.status()查看状态,会发现整个副本集里面的服务都加入进来了。

5:注意:添加分片过后,客户端应该连接mongos进行操作,而不是连接副本集了。

6:也可以创建单mongod服务器的分片,但不建议在生产环境中使用

7:至此一个分片就创建好了,然后可以重复步骤,创建一个新的副本集,加入到分片中来

④数据分片

需要明确指定分片的数据库和集合,MongoDB才会对数据进行自动分片。

1:对数据库启用分片

use admin

sh.enableSharding("sd1");   --数据库名

2:然后指定分片的集合,还有分片的键,如果对已经存在的集合进行分片,那么指定的这个分片键上必须有索引;如果集合不存在,mongos会自动在分片键上创建索引。例如:

sh.shardCollection("sd1.users",{"userId":1});--{"userId":1}分片键

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

猜你喜欢

转载自www.cnblogs.com/Lucky-stars/p/10598364.html