MongoDB的分片

来源:互联网 发布:windows 10 更改键盘 编辑:程序博客网 时间:2024/05/17 00:59

分片简介

分片是指将数据拆分,将其分散存储在不同的机器上的过程,有时也叫分区。mongodb支持自动分片,集群自动切分片数据,做负载均衡。其基本思想就是将集合切分成小块,这些块分散到诺干片里面,每个片只负责总数据的一部分,应用程序不必知道哪片对应哪些数据,甚至不知道该数据已经被拆分了,所以要在分片之前运行一个路由进程,该进程名位mongos。mongos知道数据存放的位置,所有的一切细节都由mongos来处理,应用程序不必管理这些细节,只用处理自己的业务就可以了。

分片的架构如下图:

 

 

片键

设置分片时,需要从集合里面选一个键,用该键的值作为数据拆分的依据,这个键称为片键。

利用key作为片键,进行自动分片,通过路由去查询。

 

 

什么情况下用到分片

1磁盘不够

2单个mongodb满足不了写数据库性能需要

3想将大量数据放在内存中提高性能

 

分片步骤

4.1 创建一个配置服务器,端口是20000

  配置服务器存储了集群的配置信息,数据和片的对应关系,mongos不永久存放数据,所以需要个地方存放分片的配置。

 启动配置服务器: mongod --dbpath D:\MongoDBDATA\fenpian  --port 20000

 

4.2 创建路由服务器,端口是30000,并且连接到配置服务器,命令名称是mongos,mongos就是mongodb各版本中都配有的路由器进程,它路由所有服务,然后将结果聚合,不存储数据或者配置信息,但会缓存配置服务器的信息

   启动路由:mongos --port 30000 --configdb  127.0.0.1:20000

 

4.3 添加两个分片数据库端口分别是8081,8082

     启动8081的数据库:mongod --dbpath D:\MongoDBDATA\8081 --port 8081

     启动8082的数据库:mongod --dbpath D:\MongoDBDATA\8082 --port 8082

 

4.4利用路由器位集群添加分片,之前不能使用任何数据库语言

    进入mongos来添加分片数据库:

     db.runCommand({"addshard":"127.0.0.1:8081",allow:true});

     db.runCommand({"addshard":"127.0.0.1:8082",allow:true});

 

 4.5打开数据分片功能,为foobar数据库打开分片功能,得先在数据库和集合的级别将分片功能打开

开启数据库foobar分片功能

 db.runCommand({"enablesharding":"foobar"});

 

 

 开启集合分片功能:

 

 插入大量的数据400000

 

 

 

 

 

 

 

 

 

0 0