MongoDB 的Sharding机制解决了海量存储和动态扩容的问题,但离生产环境的高可靠,高可用还有距离,Sharding在单点出现故障时就无能为力了。但是 MongoDB的副本集却可以很轻松的处理单点故障,所以就有了Replica Sets + Sharding的高可用,高安全的架构。Mongodb支持自动分片和划分架构,可以利用它构建一个水平扩展的数据库集群系统,将数据库分表存储在各个sharding节点上。
架构如下:
1,shard服务器:使用Replica Sets确保每个数据节点都具有备份、自动容错转移、自动恢复的能力。
2,配置服务器:使用使用3个配置服务器确保元数据完整性
3,路由进程:使用3个路由进程实现平衡,提高客户端接入性能,架构如下
3个分片进程:shard11,shard12,shard13组成一个副本集,提供Sharding中shard1的功能。
3个分片进程:shard21,shard22,shard23组成一个副本集,提供Sharding中shard2的功能。
3个配置服务器进程和3个路由器进程
--------------------------------------------------------------------------------------------
现在我们开始搭建整个架构(因为没那么多机器,我还是用本地的目录来模拟机器)
主机 | ip | 服务及端口 |
ServerA mongodb1 mongodb2 mongodb3 mongodb4 |
127.0.0.1 |
mongod shard11:10000 mongod shard21:20000 mongod config 1:30000 mongos :40000 |
ServerB mongodb5 mongodb6 mongodb7 mongodb4 |
127.0.0.1 |
mongod shard12:10001 mongod shard22:20001 mongod config 2:30001 mongos :40000 |
ServerC mongodb9 mongodb8 mongodb11 mongodb4 |
127.0.0.1 |
mongod shard13:10002 mongod shard23:20002 mongod config 3:30002 mongos :40000 |
1,启动Shard1进程并配置Replica Sets
启动mongod shard11进程,副本集名称:shard1
启动mongod shard12进程,并设置副本集:shard1
启动mongod shard13进程,并设置副本集:shard1
把这三个进程配置成副本集,新开一个cmd,用来执行各种非启动命令,连接到上面三个进程中的任何一个,把他们配置成副本集,操作如下
这里启动只多了一个命令:shardsvr,用这个命令就表示这个进程是Shard进程。
2,启动Shard2进程并配置Replica Sets
启动mongod shard21进程,副本集名称:shard2
启动mongod shard22进程,并设置副本集:shard2
启动mongod shard23进程,并设置副本集:shard2
把这三个进程配置成副本集,操作如下
到此两个副本集够成的分片已经配置完成,下面配置Config server和Route process
3,配置3个Config Server
4配置Route Process
chunk大小为1M,方便我们测试效果。
5配置分片的表和片键
我用的还是Friends库中的FriendUser表来做分片,片键是_id,因为cmd宽度太小了添加分片的命令显示不完全,我手动把他们列出来
添加分片
db.runCommand({addshard:"shard1/127.0.0.1:10000,127.0.0.1:10001,127.0.0.1:10002"})
db.runCommand({addshard:"shard2/127.0.0.1:20000,127.0.0.1:20001,127.0.0.1:20002"})
到此整个构架已经配置完成了,我们来验证下配置的情况,我通过客户端添加10000条数据到数据库中
可以看到分片已经执行。
------------------------------------------------------------------------------------------------
现在做下容灾的测试,我停掉shard11,看看结果会如何。
打开shard11的 cmd窗口,Ctrl+C停止进程
查看下状态
状态完好,我在插入20000条数据,看看效果
可以看到依然可以运行。
这里会出现这种情况:当有三台机器做副本集的时候,只能是一太服务器当掉,当有两台当掉的时候,第三台不能由从库变为主库。
这里应该注意副本集的选举规则: 当主库当掉时,次节点将触发选举。 收到副本集大多数成员投票的第一个节点将成为主节点。副本集选举最重要的功能是副本集的大多数原始成员节点必须参与选举才能成功。如果您的副本集包含三个 成员,有两个或三个节点可以相互连接时该副本集可选出一个主节点。如果该副本集中有两个节点脱机,则剩余的一个节点仍将作为次节点。
相关推荐
MongoDB 分片是一种水平扩展策略,用于处理大数据量和高并发场景。通过将数据分散到多个物理节点(称为分片,或 shard),分片技术能够提高数据库的读写性能和存储容量。以下是对MongoDB分片的详细说明: 1. **启动...
对于大数据处理,MongoDB支持分片(Sharding),即将数据分散到多个服务器上,以实现水平扩展。分片策略通常基于数据的哈希值或范围。 总结,MongoDB是一款强大的NoSQL数据库,适用于处理大规模、结构多变的数据。...
1. **启动分片功能**:在服务器nosql01中登录mongos的MongoDB客户端,切换到数据库`gateway`,并向分片集群中添加三个Shard,分别为`shard1`、`shard2`和`shard3`。 #### 实验注意事项 - 在实验过程中,需要注意...
MongoDB是一种流行的NoSQL数据库,它支持自动分片功能,使得数据可以在多个服务器节点间自动平衡。除了性能提升之外,MongoDB还注重安全性,提供了访问控制列表(ACL)功能来限制对数据库的访问。本文将详细介绍在...
MongoDB4.2分片及副本集群搭建 MongoDB集群 MongoDB分片 MongoDB副本 MongoDB副本集群
### MongoDB分片技术详解 #### 一、MongoDB分片概念 MongoDB 分片是一种将数据分布在网络中的多个服务器上的方法。它通过水平分割数据来提高可伸缩性和性能,适用于处理大量数据和高并发访问场景。分片的核心组件...
在本篇中,我们将深入探讨MongoDB的中文API以及如何实施分布式分片,旨在帮助开发者更好地理解和应用这一强大的数据库技术。 一、MongoDB中文API详解 1. 连接与断开:MongoDB的中文API提供了连接数据库的方法,如`...
MongoDB提供了许多高级功能和选项,如索引、分片、复制集、事务等,以满足更复杂的数据管理和处理需求。 - **索引**:通过创建索引来加速查询速度。 - **分片**:将大数据集分布在多个服务器上,提高可伸缩性和性能...
MongoDB 分片是大型数据库系统中用于横向扩展存储能力的关键技术。在 CentOS 7 上部署 MongoDB 分片集群是一项复杂但必要的任务,特别是当处理大量数据并需要高效读写性能时。以下是一个详细的步骤指南,涵盖了从...
在MongoDB 4.0中,为了应对高数据量和吞吐量带来的挑战,引入了分片(Sharding)技术,这是一种分布式存储策略,旨在将数据分散到多个服务器上,以实现水平扩展和负载均衡。分片的主要目标是提高存储容量、提升读写...
MongoDB 分片是数据库扩展的一种策略,用于处理大数据量和高并发读写操作。在MongoDB中,分片(Sharding)是指将数据分散存储在多台服务器上,以此实现水平扩展,提高系统的可伸缩性和可用性。以下是对MongoDB分片...
总结,MongoDB的分片技术是应对大数据挑战的有效手段,通过合理的设计和管理,可以使数据库系统在高并发、大数据量的环境中保持高效稳定运行。了解并熟练掌握分片技术,对于提升MongoDB数据库的性能和可维护性至关...
3. 易扩展性:支持水平扩展,通过分片集群处理大数据量。 4. 强大的查询语言:支持丰富的查询表达式和聚合框架。 二、MongoDB同步 在MongoDB中,数据同步主要是通过复制集(Replica Set)来实现的。复制集是...
分片集群是MongoDB扩展存储能力、提高性能的关键特性,适合大数据应用场景。本教程将详细讲解如何安装和配置MongoDB的分片集群。 首先,我们需要了解MongoDB分片的概念。在MongoDB中,分片(Sharding)是指将数据...
内容概要:本文提供了详细的MongoDB分片集群的搭建指导,涵盖了从环境准备、配置文件编写、副本集的建立、主节点的选择、配置服务器和数据分片服务器的配置到最后的路由节点的搭建与操作整个流程,以及对数据库的...
MongoDB的分片技术是为了解决大数据存储和高性能需求而设计的一种分布式数据库解决方案。它允许数据被分割成多个部分,或称为数据块(chunks),并分散到不同的服务器上,称为分片(shards)。这样的架构有助于提升...
MongoDB的分布式特性体现在其分片(Sharding)和复制集(Replica Sets)功能上。分片是将大型数据集分布在多个服务器上,以实现水平扩展,提高读写性能。分片可以按范围、哈希或复合键进行,确保数据在集群中的均衡...
config server,顾名思义为配置服务器,存储所有数据库元信息(路由、分片)的配置。mongos本身没有物理存储分片服务器和数据路由信息,只是缓存在内存里,配置服务器则实际存储这些数据。mongos第一次启动或者关掉...
目录 1 MongoDB的简介和安装启动.mp4 2 MongoDB服务器的启动优化.mp4 3 MongoDB客户端基础使用.mp4 4 MongoDB集合的多种查询条件.mp4 5 MongoDB索引查询与建立.mp4 ...17 MongoDB分片集群的使用介绍.mp4
2. 分布式架构:MongoDB支持分片(sharding)和复制集(replica sets),能够轻松实现水平扩展,以适应大数据量和高并发场景。 3. 弹性查询:MongoDB提供了丰富的查询语言,支持各种查询、排序、聚合操作,以及强大...