MongoDB副本集、分片集的伪分布式部署(保姆级教程)
目录
1 集群架构(概念篇)
MongoDB有三种集群部署模式,分别是主从复制(Master-Slave)、副本集(ReplicaSet)、分片集(Sharding)。采用集群架构复制的目的:保证数据生产部署时的冗余和可靠性,采用不同的机器来保存副本,数据不会因为单点故障而丢失。读写分离,提高数据的读取能力。故障转移、故障恢复。
1.1 MongoDB核心组件
💥Mongod: 处理所有的数据请求、管理数据的增删改查操作。默认的数据目录/data/db,默认端口27017,默认主机地址localhost。
💥Mongo:MongoDB提供的一个Mongo shell客户端,便于用户与MongoDB之间的交互。启动Mongo默认连接到localhost:270127的test数据库。
💥Mongos: 用于MongoDB分片集的路由选择,对来自于应用层的查询请求进行处理,平判断所请求的数据位于分片集的哪个位置。
1.2 主从复制
1️⃣主从复制模式的集群只能有一个主节点,主节点提供所有的增删改查服务,从节点不提供服务,但是可以通过设置从节点提供查询服务,这样可以减少主节点的压力。2️⃣此外,每个从节点都要知道主节点的地址以及主节点的各个操作,从节点定期轮询主节点获取操作,并对自己的数据副本进行这些操作,从而保证主从节点数据的一致性。3️⃣主节点出现故障,只能人工介入指定新的主节点,在此期间整个集群数据只能被读而无法修改。
1.3 副本集
Primary主节点:与主从复制一样,副本集中也只能有一个主节点,向外对客户端提供数据读写的服务,执行的写操作信息保存在oplog中。不同的是,副本集中的主节点发生故障时,仲裁节点触发选举,在所有的从节点中选出一个作为新的主节点,即使后续旧的主节点恢复正常,也会以从节点的身份加入到集群。
Secondary从节点:从节点只提供读数据的服务,并且从节点定期轮询oplog日志文件,根据日志内容同步更新自身的数据,使之保持与主节点一致。
Arbiter仲裁节点:仲裁节点不存储任何数据,只记录集群的节点数以及主节点发生故障时触发选举机制进行仲裁。仲裁节点和其他节点之间的唯一通信就是选举期间的投票、心跳信息。
1.4 分片集
副本集可以解决主节点发生故障所导致的数据丢失或不可用的问题,但遇到需要存储海量数据的情况,副本集就无法解决了。此时就用到了MongoDB的分片集操作,所谓分片就是将数据拆分并分散存储在不同机器上的过程。
什么时间进行分片操作:1.单个节点的磁盘空间不足时。2.单个mongod已经不能满足写数据的性能要求,通过分片让写压力分散到各个分片服务器上。3.把大量数据放到内存里提高性能,通过分片利用多台分片服务器的内存资源。
Shard Server分片服务器:每一个分片服务器都是一个mongod进程,用于存储实际的数据块。实际生产中,一个分片服务器往往有多台机器组成一个副本集来共同承担,防止因主节点的单点故障而崩溃整个系统。
Config Server配置服务器:同样是一个mongod进程,用来保存集群和分片的元数据,在集群启动的最开始时建立。
Route Server路由服务器:是一个独立的mongos进程(即不储存数据的mongod进程),启动时要从配置服务器加载集群信息到缓存中(分片集群要首先启动配置服务器的原因),并将客户端的请求路由给每个分片服务器,在各分片服务器返回结果后进行聚合并返回客户端。
2 集群搭建
2.1 部署副本集(伪分布式)
建议开三个终端界面,分别操作三个节点,这样操作比较直观。
1️⃣首先需要有三个节点或者说三个mongod进程
localhost:27017
localhost:27018
localhost:27019
2️⃣创建并配置三个配置文件来开启三个节点
/user/local/mongodb4.4.1/conf/rs_mongod1.conf
/user/local/mongodb4.4.1/conf/rs_mongod2.conf
/user/local/mongodb4.4.1/conf/rs_mongod3.conf
配置文件内容如下:
三个配置文件中的port端口为对应节点的端口,必须更改成
涉及到路径的配置项path、dbpath里面的路径目录文件都必须创建,带后缀的是文件不带后缀的是目录,别创建错了
replSetName是副本集的名字,一个副本集里的三个节点的三个配置文件里都必须一样。
3️⃣使用配置文件开启节点服务
开启节点服务需要先进入配置文件所在目录,开启服务成功后才能连接节点
4️⃣主节点初始化
刚刚创建的三个节点默认都是从节点,从节点在未设置可读之前无法读取数据,故此时show dbs会报错,这就需要初始化主节点,使其中的一个从节点成为主节点。
此时,进行初始化操作的节点就会成为主节点。
5️⃣从节点、仲裁节点设置
下面的三个操作都是在主节点的shell里完成的,主节点才有权对其他节点进行设置
从节点设置为可读
对哪个节点的操作就要在哪个节点的shell界面进行设置
💥💥💥副本集操作完成后不能直接关闭终端,必须必须必须使用两次exit先退出shell再退出节点服务最后关闭虚拟机,否则下次再开启节点服务时,会因为直接关闭终端或者虚拟机而导致服务异常关闭,从而无法正常开启服务,处理起来会很麻烦。
2.2 分片集部署(伪分布式)
建议开三个终端界面,分别操作三个服务器副本集,这样操作比较直观。
1️⃣首先需要有三个服务器节点或者说两个mongod、一个mongos进程
localhost:27017 配置服务器(mongod)
localhost:27018 路由服务器(mongos)
localhost:27019 分片服务器(mongod)
2️⃣创建并配置三个配置文件来完成分片集的主要架构
这里为了减少计算机部署分片集群的压力,采用配置服务器单成员副本集,路由服务器,分片服务器单成员副本集。单成员模式的副本集,即只用一个节点作为主节点加入到副本集中,完成一个最简单的副本集。若想要搭建更加完善的分片集群,只需多创建几个节点并加入到副本集中即可。
💥配置服务器(Config Server)副本集
1.配置文件及其内容:
/user/local/mongodb4.4.1/conf/shard/configsvr.conf
配置文件中的port端口为对应节点的端口,必须更改
涉及到路径的配置项path、dbpath里面的路径目录文件都必须创建,带后缀的是文件不带后缀的是目录,别创建错了
2.初始化主节点:
开启节点服务需要先进入配置文件所在目录,开启服务成功后才能连接节点
💥路由服务器(Route Server)
1.配置文件及其内容
/user/local/mongodb4.4.1/conf/shard/mongos.conf
配置文件中的port端口为对应节点的端口,必须更改
涉及到路径的文件都要创建有后缀是文件,无后缀是目录
路由服务器不存储数据故不需要dbPath(与其他两个结点的区别)
开启节点服务需要先进入配置文件所在目录,开启服务成功后才能连接节点
💥分片服务器(Shard Server)副本集
1.配置文件及内容
/user/local/mongodb4.4.1/conf/shard/shardsvr.conf
2.初始化主节点
3️⃣进入mongos shell界面操作整个分片集
进入mongos shell界面
添加分片服务器副本集到分片集群中
再创建一个分片服务器副本集并加入到分片集群
参照上文分片服务器副本集,先创建并配置一个节点的配置文件,使用配置文件开启服务,进入shell界面初始化主节点,进入mongos的shell界面使用sh.addShard()将其添加入集群。
4️⃣数据库、集合分片操作
💥💥💥分片集操作完成后同样不能直接关闭终端,必须必须必须使用两次exit先退出shell再退出节点服务最后关闭虚拟机,否则下次再开启节点服务时,会因为直接关闭终端或者虚拟机而导致服务异常关闭,从而无法正常开启服务,处理起来会很麻烦。
2.3 副本集与分片集区别
副本集是让多台服务器都拥有同样的数据副本,每一台服务器都是其他服务器的镜像。然而分片集中的每一个分片都和其他分片拥有不同的数据子集,相当于分布式存储。
- 点赞
- 收藏
- 关注作者
评论(0)