【愚公系列】2022年05月 .NET架构班 060-分布式中间件 Mongodb复制集

举报
愚公搬代码 发表于 2022/05/08 21:47:03 2022/05/08
【摘要】 前言 1.什么是复制集MongoDB复制是将数据同步到多个服务器的过程;复制集提供了数据的冗余备份并提高了数据的可用性,通常可以保证数据的安全性;复制集还允许您从硬件故障和服务中断中恢复数据。mongodb的复制集至少需要两个节点。其中一个是主节点,负责处理客户端请求,其余的都是从节点,负责复制主节点上的数据。mongodb各个节点常见的搭配方式为:一主一从、一主多从。主节点记录在其上的所...

前言

1.什么是复制集

MongoDB复制是将数据同步到多个服务器的过程;复制集提供了数据的冗余备份并提高了数据的可用性,通常可以保证数据的安全性;复制集还允许您从硬件故障和服务中断中恢复数据。

  • mongodb的复制集至少需要两个节点。其中一个是主节点,负责处理客户端请求,其余的都是从节点,负责复制主节点上的数据。
  • mongodb各个节点常见的搭配方式为:一主一从、一主多从。
  • 主节点记录在其上的所有操作oplog,从节点定期轮询主节点获取这些操作,然后对自己的数据副本执行。

一份数据复制多份。如图所示
在这里插入图片描述

2.复制集的作用

当客户端通过电商网站从MongoDB中查询数据的时候,如果MongoDB宕机,就会导致整个系统不可用。复制集就可以实现MongoDB高可用
在这里插入图片描述

3.MongoDB复制集集群

在这里插入图片描述

  • primary:主节点,负责接受客户端请求
  • secondary:从节点,负责从主节点复制数据

一、Mongodb复制集的搭建

1.MongoDB中创建3个配置文件

27018.cfg

# mongod.conf

# for documentation of all options, see:
#   http://docs.mongodb.org/manual/reference/configuration-options/

# Where and how to store data.
storage:
  dbPath: D:\work\net\mongodb\MongoDB-5.0.6\ReplicaSet-data\data-27018
  journal:
    enabled: true
#  engine:
#  mmapv1:
#  wiredTiger:

# where to write logging data.
systemLog:
  destination: file
  logAppend: true
  path:  D:\work\net\mongodb\MongoDB-5.0.6\ReplicaSet-log\mongod-27018.log

# network interfaces
net:
  port: 27018
  bindIp: 127.0.0.1


#processManagement:

#security:

#operationProfiling:

replication:
   replSetName: rs0
#sharding:

## Enterprise-Only Options:

#auditLog:

#snmp:

27019.cfg

# mongod.conf

# for documentation of all options, see:
#   http://docs.mongodb.org/manual/reference/configuration-options/

# Where and how to store data.
storage:
  dbPath: D:\work\net\mongodb\MongoDB-5.0.6\ReplicaSet-data\data-27019
  journal:
    enabled: true
#  engine:
#  mmapv1:
#  wiredTiger:

# where to write logging data.
systemLog:
  destination: file
  logAppend: true
  path:  D:\work\net\mongodb\MongoDB-5.0.6\ReplicaSet-log\mongod-27019.log

# network interfaces
net:
  port: 27019
  bindIp: 127.0.0.1


#processManagement:

#security:

#operationProfiling:

replication:
   replSetName: rs0
#sharding:

## Enterprise-Only Options:

#auditLog:

#snmp:

27020.cfg

# mongod.conf

# for documentation of all options, see:
#   http://docs.mongodb.org/manual/reference/configuration-options/

# Where and how to store data.
storage:
  dbPath: D:\work\net\mongodb\MongoDB-5.0.6\ReplicaSet-data\data-27020
  journal:
    enabled: true
#  engine:
#  mmapv1:
#  wiredTiger:

# where to write logging data.
systemLog:
  destination: file
  logAppend: true
  path:  D:\work\net\mongodb\MongoDB-5.0.6\ReplicaSet-log\mongod-27020.log

# network interfaces
net:
  port: 27020
  bindIp: 127.0.0.1


#processManagement:

#security:

#operationProfiling:

replication:
   replSetName: rs0
#sharding:

## Enterprise-Only Options:

#auditLog:

#snmp:

2.MongoDB中创建3个数据目录和日志目录

在这里插入图片描述
在这里插入图片描述

3.MongoDB多个实例启动

3.1 mongod-27018实例启动

在这里插入图片描述

3.2 mongod-27018实例启动

在这里插入图片描述

3.3 mongod-27018实例启动

在这里插入图片描述

4.MongoDB复制集角色分配

4.1 primary节点初始化

连接27018节点 mongo.exe –host 127.0.0.1 –port 27018
在这里插入图片描述
初始化主节点rs.initiate()
在这里插入图片描述
主节点状态查看rs.status()
在这里插入图片描述

4.2 primary节点添加从节点

主节点中添加27019节点

​ rs.add(127.0.0.1:27019)

在这里插入图片描述
主节点中添加27020节点

rs.add(127.0.0.1:27020)

在这里插入图片描述
查看节点状态
在这里插入图片描述

4.3 MongoDB复制集Compass连接

连接地址:mongodb://localhost:27018,localhost:27019,localhost:27020/?readPreference=primary&appname=MongoDB%20Compass&ssl=false

4.4 MongoDB复制集.NET Core连接

在这里插入图片描述

总结

MongoDB复制集缺陷

  • 数据量过大,MongoDB所在的磁盘容量有限,无法存储海量数据
  • 高并发的写,一个MongoDB主节点并发处理能力有限,无法解决高并发写

所以:需要使用MongoDB分片

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。