1.简介
分片(分区),是指将数据拆分,将其分散存在不同的机器上的过程。
将数据分散到不同的机器上,不需要功能强大的大型计算机就可以存储更多地数据,处理更大的负载。
2.MongoDB的自动分片
MongoDB分片的基本思想是将集合切分成小块。这些块分散到若干片里面,每个片只负责总数据的一部分。
应用程序不必知道拿片对应哪些数据,甚至不需要知道数据已经被拆分,应用通过连接一个路由进程mongos来正常发送请求。mongos知道所有数据的存放位置。
1)何时分片
--机器的磁盘不够用了
--单个mongod已经不能满足写数据的性能需要了
--想将大量数据放在内存中提高性能
一般来说,先要从不分片开始,然后在需要时将其转换成分片的
3.实现
1)片键
设置分片时,需要从集合里选一个键,用该键的值作为数据拆分的依据,这个键就叫片键。
2)分片的组成部分
--片:保存子集合数据的容器。
--mongos:路由器进程。路由所有请求,然后将结果聚合。本身不存储数据或者配置信息(但会缓存配置服务器的信息)。
--配置服务器:存储集群的配置信息(数据和片的对应关系)。
3)配置
//启动配置服务器 mongod --dbpath D:\mongoDB\shard-cfg --logpath D:\mongoDB\shard-cfg-log\log.log --port 10001 //启动分片shard1 mongod --dbpath D:\mongoDB\shard1 --logpath D:\mongoDB\shard1-log\log.log --port 30003 //启动分片shard2 mongod --dbpath D:\mongoDB\shard2 --logpath D:\mongoDB\shard2-log\log.log --port 40004 //启动mongos mongos --configdb localhost:10001 --port 20002 //在mongos中配置分片 use admin; db.runCommand({"addshard": "localhost:30003", "allowLocal": true}); db.runCommand({"addshard": "localhost:40004", "allowLocal": true}); //插入数据 use test; db.user.insert({"name": "路人甲0"}); //name键上必须要有索引,否则无法分片 db.user.ensuredIndex({"name": 1}); use test1; db.user1.insert({"name": "路人甲0"}); //开启数据库的分片功能 use admin; db.runCommand({"enablesharding": "test"}); //对集合进行分片 db.runCommand({"shardcollection": "test.user", "key": {"name": 1}}); //插入大量数据 use test; for (var i = 1; i <= 10000; i++) { db.user.insert({"name": i + "路人甲"}); } use test1; for (var i = 1; i <= 10000; i++) { db.user1.insert({"name": "路人甲" + i}); } //查看分片信息 use config; db.shards.find(); //查看数据库 db.databases.find(); //查看块信息 db.chunks.find(); //查看上述集合的概要信息 db.printShardingStatus(); //移除分片--mongos会把给定片上的所有块都移到其他片上 use admin; db.runCommand({"removeShard": "localhost:30003"}); //当移动的片是数据库的大本营时,需先手动移动该数据库到别的片上 db.runCommand({"moveprimary": "test", "to": "localhost:40004"});
4.生产实现
1)多个配置服务器
2)多个mongos服务器
3)每个片都是副本集
4)正确设置w
相关推荐
k8s 安装 MongoDB 分片(Sharding)+ 副本集(Replica Set) k8s 安装 MongoDB 分片(Sharding)+ 副本集(Replica Set)是结合 Kubernetes(k8s)和 MongoDB 实现高可用性和高性能的解决方案。本解决方案通过使用 ...
MongoDB分片介绍
MongoDB分片副本级 详细的讲述了MongoDB分片副本级配置
实验五 MongoDB分片部署与启动
mongodb的分片备份 复制集的备份和配置的备份
mongodb 分片集群搭建过程(无副本),详细操作步骤,linux命令
英文当的mongodb分片设计以及原理,喜欢的可以下载来看看
mongodb集群分片操作以及增加acl,有什么问题联系我!
13、MongoDB分片集群&高级集群架构详解_ev.rar13、MongoDB分片集群&高级集群架构详解_ev.rar13、MongoDB分片集群&高级集群架构详解_ev.rar13、MongoDB分片集群&高级集群架构详解_ev.rar13、MongoDB分片集群&高级集群...
MongoDB4.2分片及副本集群搭建 MongoDB集群 MongoDB分片 MongoDB副本 MongoDB副本集群
该文档详细讲述了对三个服务器的mongodb进行副本集与分片的部署。并给出测试方案和架构图。
i) 添加分片过程 i. 步骤一.链接到mongos ii. Add shards 1. 单个数据库实例: -{addShard:”<host><:port>”,maxSize:,name:””} 2. 副本集群: -{addShard:”<replica_set>/<host><:port>”,maxSize:,name:”...
mongoDB分片技术处理方案,内容详细
mongoDB分片、2个mongos实现高可用 操作系统:CentOS Linux release 7.6.1810 (Core) Mongodb版本:mongodb-linux-x86_64-rhel62-4.0.19.tar 3台虚拟机 192.168.213.17、192.168.213.18、192.168.213.19 192.168....
MongoDB分片详细教程。教程内容非常仔细,照着教程很轻松就成功了。
mongodb 分片
本文将详细介绍关于MongoDB分片键的选择和案例,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。 MongoDB版本:3.6 一、分片键类别 1.升序片键 升序片键例如:日期时间字段、自增字段。 2.随机...
配置mongodb分片群集1
搭建Mongodb分片集群的步骤文档,度娘上很多坑,被坑的可以看看,本文档专门埋坑。
我的博客当中mongodb分片集群安装教程所使用的包