mongodb副本集(mongodb副本集中的三种角色)

本篇文章给大家谈谈mongodb副本集,以及mongodb副本集中的三种角色对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

mongodb--选举失败

mongodb搭建了一个集群 测试的只有两个节点

为了测试副本集群的自动切换

关闭了主节点 但是发现子节点权限为只读 没有成为主节点

参考了这篇文章 得知

例如:有N个副本集成员节点,必须有N/2+1个成员投票支持某个节点,此节点才能成为主节点。注意:副本集中若有成员节点处于不可用状态,并不会影响副本集中的“大多数”,“大多数”是以副本集的配置来计算的。

2/2+1=2 也就是必须有两个节点投票支持 才能成为主节点!

mongodb副本集的功能

功能如下:

1、数据冗余:副本集可以确保副本结点与主结点数据的更新,以防止单个数据库的服务宕机造成数据丢失的问题。

动故障转移:副本集没有固定的主结点,整个集群会选举出一个主结点,当这个主弊滑衫结点不会正常工作时,会选举一个副本结点切换为租腔主结点让带。

[img]

搭建MongoDB副本集&分片

顾名思义,副本集是一个集合,即MongoDB实例的集合,集合中的每个成员拥有相同的数据集合;一个副本集包含多个数据节点和一个可选的仲裁节点,在数据节点中,只有一个可以作为主节点(Primary Node),其他节点只能是第二节点(Secondary Nodes)。

主节点接收所氏烂有的写操作,一个副本集只能有一个能够确认写入的主节点(Primary Node),如下图:

第二节点复制主节点的操作日志并且将所有的操作应用到自己的数据集合中,复制过程是异步的,如果主节点不可用,一个可以被选举的第二节点将会被选举为主节点,所以在副本集中,歼携漏即使一个或者多个成员没有正常运行,但整个副本集仍然可以正常工作;主副节点关系如下图:

在某些情况下(比如受硬件条件所限,只有一个主节点和一个副节点,无法添加更多的副节点),你可以选择将mongod实例添加进副本集,并作为仲裁者(仲裁者只负责选举新的主节点,不持有数据),在副本集中,如果主节点与其他节点无法通信的时间超过配置的时间值( electionTimeoutMillis ),那么副本集将视主节点出现故障,此时将会重新选举一个正常副节点来作为新的主节点,从而让整个副本集系统正常工作,如下图:

副本集的搭建的步骤为:同时启动多个mongod实例(可以在一台服务器上,也可以在不同的服务器上),然后在每个实例的配置文件中配置相应的配置项,最后启动实例后,登录并且在做一次配置即可。

注意: 文中都是通过配置文件的方式来启动mongod实例的,你也可以通过启动参数来启动实例,同时本文中的mongod实例是通过 supervisor 来管理的,关于如何通过supervisor管理进程,可以自行查阅相关资料或者参考 这里

对于每一个配置项,如果不明白每个配置项的释义,请参考: mongo配置文件 。另外,如果实例在同一台机器上,则针对每个实例,需要区分 path , pidFilePath , port , dbPath 这几个的配置值,并且每个配置文件中的 replSetName 必隐咐须相同。

在supervisorctl中执行update,此时三个实例便启动成功。

分片是将MongoDB中的数据集分割成多个数据片,每片数据存放在不同的MongoDB实例中,可以理解为将一个MongoDB数据集拆分成多个小型数据集,而小数据集分布在相同或者不同的物理机器上,分割只是从物理层面进行分割,逻辑上仍然属于同一个数据集合。

分片包含三部分, 如下图所示:

注意: 不同的分片集群必须使用不同的配置服务器(Config Servers),不能使用同一个配置服务器(Config Servers)

分片实例的搭建与副本集类似,都是配置不同的配置文件,然后启动相应的实例:

这里只给出了关键配置项,其他配置项根据自己的实际情况配置,图中的 replSetName 表示当前实例属于哪个副本集,该副本集中的每个节点的该配置项必须一致, clusterRole 表示当前节点在分片中的的角色,可选值有: shardsvr 和 configsvr , shardsvr 表示该节点是作为Shards节点提供服务,而 configsvr 表示该节点作为Config Server节点提供服务。

至此,分片搭建完成。

怎么把mongos里面添加的副本集给删除掉

首先来说说副本集的添加,由于我们配置了key文件认证,所以启动新节点时,必须制定keyFile,同时制定相同副本集名称。replSet=yuanfenkeyFile=/usr/local/mongodb/etc/mongodb-keyfile启动成功之后,进入副本集的主节游启点,通过命令rs.add来添加,成功之后,返回OK,如图:查看副本集配置文件,可以看出,新的节点已经加入到配置文件中了。查看集群状态,可以看出,新的节点已经投票选举出身份secondary。"health":1表示节点正常工作了。添加新的节点之后,新的节点需要进行数据同步,通过命扒帆令“rs.printSlaveReplicationInfo()”可以看出所有从节点的同步信息。自此我们就可以确定该节点完全OK了。有添加节点需要,就有删除节点需要,删除节点春磨雹很简单,通过命令rs.remove("ip+端口")。如我删除刚刚添加的节点。也是通过查看配置文件和节点状态来确认节点是否已经删除。有时候想手动更改主节点,可以通过修改节点的优先权来触发节点重新投票。如图先重新申请一个配置文件,将原来的配置文件导入进来。然后修改权限,最后初始化配置文件。7最后通过查看集群状态可以看到集群状态已经改变,主节点和从节点重新切换。

08.Rocket.Chat初始利用MongoDB报错解决

Rocket.Chat初始利用MongoDB产生以下报错

        茄瞎# /usr/local/bin/node main.js

原因是Rocket.Chat使用MongoDB副本集通过Meteor Oplog来提高性能

1.修改MongoDB相关配置

        # cp -p  /etc/mongod.conf /etc/颤肢空mongod.conf.20200604

        # vi /etc/mongod.conf

       插入以下内容

         # diff  /etc/mongod.conf /etc/mongod.conf.20200604

        # systemctl restart mongod

2.启动副本集

        # mongo

注意:Rocket.Chat再调用时导入以下环境配置

        # export MONGO_OPLOG_URL=mongodb://localhost:27017/local?replSet=rs01

现在饥滚就动手----阿里云ECS

关于mongodb副本集和mongodb副本集中的三种角色的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

相关阅读

  • oraclesupport(Oracle support identifier)

    oraclesupport(Oracle support identifier)

    简介:Oracle Support是Oracle公司提供的一项重要的技术支持服务,旨在帮助客户解决Oracle软件产品在使用过程中遇到的问题,提高系统的稳定性和性能。本文将介绍Oracle Support的重要性以及具体的使用方法。一、Or...

    2024.04.17 09:55:21作者:intanet.cnTags:oraclesupport
  • hivetez(hive特征工程)

    hivetez(hive特征工程)

    标题:探索Hivetez的未来简介:Hivetez是一家领先的IT技术公司,在区块链和加密货币领域有着深厚的技术积累。本文将探索Hivetez在IT技术领域的未来发展方向和创新技术。一、区块链技术的应用Hivetez致力于将区块链技术应用于...

    2024.04.17 07:22:22作者:intanet.cnTags:hivetez
  • mysql或的简单介绍

    mysql或的简单介绍

    MySQL数据库简介MySQL是一种开源的关系型数据库系统,广泛应用于Web应用程序的开发中。它支持多种操作系统,包括Windows、Linux和Mac OS等,同时也支持多种编程语言,如PHP、Java和Python。MySQL具有高性能...

    2024.04.17 06:55:17作者:intanet.cnTags:mysql或
  • redis创建表(redis创建表命令)

    redis创建表(redis创建表命令)

    简介:Redis是一种内存数据库,广泛应用于缓存和消息传递等领域。在使用Redis进行开发时,我们经常需要创建表来存储数据。本文将介绍如何在Redis中创建表。一级标题:如何在Redis中创建表二级标题:连接Redis数据库首先,我们需要连...

    2024.04.16 12:55:11作者:intanet.cnTags:redis创建表
  • mongodbapi的简单介绍

    mongodbapi的简单介绍

    MongoDB是一种开源的NoSQL数据库管理系统,它具有高性能、高可用性和可伸缩性的特点,能够处理大量的非结构化数据。MongoDB提供了一套丰富的API,允许开发人员在应用程序中使用各种编程语言来操作和管理数据库。# 什么是MongoD...

    2024.04.16 12:44:25作者:intanet.cnTags:mongodbapi
  • redis3(redis30集群)

    redis3(redis30集群)

    简介:Redis是一种开源的高性能键值存储数据库,常用作缓存、消息队列、排行榜等场景。Redis3是Redis的一个重要版本,它带来了许多新的特性和性能优化,使得Redis在大规模应用中表现更加出色。本文将介绍Redis3的一些重要特性和使...

    2024.04.16 12:22:11作者:intanet.cnTags:redis3
  • db-3(db3双向触发二极管好坏的测量)

    db-3(db3双向触发二极管好坏的测量)

    IT技术在当今社会中扮演着重要的角色,它贯穿着各个行业和领域,为我们的生活带来了巨大的便利和发展。本文将介绍关于数据库技术的知识和应用,探讨数据库技术在IT领域中的重要性和作用。# 数据库技术的概念和分类数据库技术是指通过计算机系统来管理和...

    2024.04.16 11:55:16作者:intanet.cnTags:db-3
  • oracle中sysdate(oracle中sysdate返回多个日期)

    oracle中sysdate(oracle中sysdate返回多个日期)

    标题:Oracle中sysdate的用法简介:在Oracle数据库中,sysdate是一个函数,可用于获取当前的系统日期和时间。它常用于数据库操作中,例如插入、更新数据时记录操作的时间。一、sysdate函数的语法sysdate函数的基本语...

    2024.04.16 08:44:11作者:intanet.cnTags:oracle中sysdate