首页 > 其他分享 >mongo 副本集rs 理解和使用小结

mongo 副本集rs 理解和使用小结

时间:2024-09-23 11:21:33浏览次数:9  
标签:mongo rs MongoDB 27017 复制 mongodb 小结 节点


 在MongoDB中,rs(通常指的是“replica set”的缩写)是复制集(Replica Set)的标识符或在使用时的一种常见前缀,尤其是在命令行工具和脚本中引用复制集时。复制集是MongoDB用来实现数据冗余和高可用性的一个核心组件。

复制集(Replica Set)的作用:

  1. 数据冗余:复制集在多个服务器上维护相同数据的多个副本,以防止单点故障导致的数据丢失。
  2. 高可用性:通过自动故障转移(Failover)机制,当主节点(Primary)不可用时,复制集中的从节点(Secondary)之一会被选举为新的主节点,从而保持服务的连续性。
  3. 读扩展:客户端可以将读操作分发到从节点上,从而减轻主节点的压力,提高整体读性能。

如何使用复制集:

1. 初始化复制集

在MongoDB中,你可以通过rs.initiate()命令在mongo shell中初始化一个新的复制集。假设你已经在三台不同的服务器上运行了MongoDB实例,并希望将它们配置为一个复制集。

# 登录到其中一个MongoDB实例的mongo shell  
mongo  
  
# 切换到admin数据库(或任何你希望用于复制集配置的数据库)  
use admin  
  
# 初始化复制集  
rs.initiate({  
   _id: "rs0",  
   members: [  
      { _id: 0, host: "mongodb-host1:27017" },  
      { _id: 1, host: "mongodb-host2:27017" },  
      { _id: 2, host: "mongodb-host3:27017" }  
   ]  
})

  在这里,_id是复制集的名称(这里使用了rs0作为示例),members数组列出了复制集中的所有成员及其主机名和端口。

2. 添加副本集成员

要添加新的成员到现有的副本集中,可以使用以下命令:

rs.add("newNode.example.com:27017")

3. 删除副本集成员

 要从副本集中删除一个成员,可以使用以下命令:

rs.remove("nodeToRemove.example.com:27017")

4. 监控复制集状态

使用rs.status()命令可以获取复制集的当前状态,包括每个成员的状态、复制延迟等信息。

use admin  
rs.status()

5. 读写操作

默认情况下,MongoDB的客户端会连接到复制集中的主节点进行写操作,并可以配置为从从节点读取数据以减轻主节点的负载。这通常通过连接字符串中的读偏好(Read Preference)设置来实现。

# 使用mongo shell连接到复制集(自动连接到主节点)  
mongo mongodb://mongodb-host1:27017,mongodb-host2:27017,mongodb-host3:27017/yourdatabase?replicaSet=rs0  
  
# 在你的应用程序中,你可能需要设置读偏好来从从节点读取数据  
# 这取决于你使用的MongoDB驱动程序或客户端库

6. 故障转移和恢复

 如果主节点发生故障,复制集中的其他成员将检测到这一点,并启动故障转移过程。其中一个从节点将被选举为新的主节点,并且应用程序的连接(如果配置了自动重连)将自动切换到新的主节点。

 



标签:mongo,rs,MongoDB,27017,复制,mongodb,小结,节点
From: https://blog.51cto.com/u_15535797/12087940

相关文章

  • Spring Cloud Gateway CORS 方案
    SpringCloudGatewayCORS(跨域资源共享)方案主要涉及在网关层面配置CORS策略,以允许前端应用跨域访问后端服务。以下是一个详细的CORS配置方案,包括配置文件(如application.yml)和Java代码配置两种方式。一、配置文件方式(application.yml)在SpringCloudGateway项目中,通常可以通过编辑a......
  • CentOS7使用yum时File contains no section headers. file: file:///etc/yum.repos.d/
    CentOS7使用yum时Filecontainsnosectionheaders.file:file:///etc/yum.repos.d/CentOS-Base.repo,line:1'--2024-09-2221:08:17--http://mirrors.aliyun.com/repo/Centos-7.repo\n'安装好CenOS7后,自带的yum不能直接使用,使用会出现如下问题:原因是没有配置yum源,修改/e......
  • [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\partmgr\Parameters] "SanP
    WindowsRegistryEditorVersion5.00;关闭windowstogo特性[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control]"PortableOperatingSystem"=dword:00000000 [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\partmgr\Parameters]"SanPolicy"=......
  • Metric3D v2: A Versatile Monocular Geometric Foundation Model for Zero-shot Metr
    paperMetric3Dv2:AVersatileMonocularGeometricFoundationModelforZero-shotMetricDepthandSurfaceNormalEstimation作者MuHu1∗,WeiYin2∗†,ChiZhang3,ZhipengCai4,XiaoxiaoLong5‡,HaoChen6,KaixuanWang1,GangYu7,ChunhuaShen......
  • Redis从基础到实战总结+Redisson分布式锁小结
    一、NoSQL和RDBMS的区别传统的rdbms结构化组织SQL数据和关系都存储在单独的表中操作语言是数据库定义语言严格的一致性基础的事务NoSql不仅仅是数据没有固定的语言键值对存储,列存储、文档存储、图形数据库最终一致性cpa定理和base高性能,高可用,高可扩二、NoSql的四大分类......
  • "放开那代码让我来!"——Cursor帮你写代码的奇妙之旅
    让我们开门见山:编程很酷,但也很折磨人。那些长时间盯着屏幕,debug无休止的日子,只有程序员懂得它的酸爽。而就在这个编程焦虑的世界中,Cursor横空出世,带着一系列魔法功能,如同你手中的一根智能魔杖,让写代码变得像煮速冻面一样简单。Cursor,一款基于AI的编程助手,号称可以从自然语言生成......
  • Cursor 使用技巧指南
    引言在过去的1周里,我使用Cursor完成了1个chrome插件、1个内部查询系统的开发,这些经验让我总结出了5个使用Cursor的技巧,这些技巧不仅能提升你的使用体验,还能帮你实现免费使用最强代码AI。并别忘了点赞和收藏。CursorAi开发的AI浏览器侧边栏完整源码地址(0积分下载):https:/......
  • MongoDB副本集故障切换期间的回滚
    每当复制集在选举中替换主节点时,旧主节点可能包含未复制到辅助节点的文档。在这种情况下,旧的主节点会回滚这些写入内容。在回滚过程中,节点将处于ROLLBACK状态。处于ROLLBACK状态的节点有资格在选举中投票。 从4.2版开始,当节点进入ROLLBACK状态时,MongoDB会杀死所有正在......
  • WPF Combobox ObjectDataProvider MethodName ObjectType ObjectDataProvider.Metho
    <Window.Resources><ObjectDataProviderx:Key="kindEnum"MethodName="GetValues"ObjectType="{x:Typesys:Enum}"><ObjectDataProvider.MethodParameters><x:Type......
  • ERROR StatusLogger NoSql contains an invalid element or attribute "MongoDb"
    报错:ERRORStatusLoggerNoSqlcontainsaninvalidelementorattribute"MongoDb"ERRORStatusLoggerNoSQLprovidernotspecifiedforappender[databaseAppender].ERRORStatusLoggerNullobjectreturnedforNoSqlinAppenders.ERRORStatusLoggerUnab......