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

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

时间:2024-09-18 22:46:35浏览次数:7  
标签:mongo rs MongoDB 27017 复制 小结 节点

转载请注明出处:

  在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,复制,小结,节点
From: https://www.cnblogs.com/zjdxr-up/p/18416666

相关文章

  • MERN 应用程序无法从 MongoDB 中删除项目
    应用程序无法从MongoDB中删除项目问题描述错误信息在MERN应用程序中尝试从MongoDB中删除项目时遇到问题。具体表现为执行删除操作后,项目未能从数据库中成功移除。错误信息可能包括数据库连接问题、权限不足、语法错误等。通过查看控制台输出或服务器日志,可以获取更详细的错误......
  • ActivityManagerService app状态流转(4)
    ActivityManagerServiceapp状态流转简述做过应用开发应该会对Activity的生命周期很熟悉,Activity有onCreate、onStart、onResume…等生命周期,前面在介绍Activity启动流程时,我们提到过SystemServer会通过ClientTransaction来通知app更新生命周期状态变化,以前SystemServer和......
  • ActivityManagerService Activity的启动流程(2)
    ActivityManagerServiceActivity的启动流程简述提到ActivityManagerService,最重要的流程之一就是启动Activity了。这个流程比较复杂:启动activity的调用链很长。业务逻辑很多,activity启动有很多flag,例如FLAG_ACTIVITY_NEW_TASK,FLAG_ACTIVITY_CLEAR_TOP等等。需要在app进......
  • WPF WebBrowser suppress script errors
    ScriptError,Anerrorhasoccuredinthescriptonthispage.Doyouwanttocontinuerunningscriptsonthispage?   //xaml<Windowx:Class="WpfApp378.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/present......
  • PowerShell 命令来备份 Windows 10 的服务列表:CMD 批处理命令来备份 Windows 10 的服
    PowerShell命令来备份Windows10的服务列表:powershellCopyCodeGet-Service|Export-Csv-Path"C:\ServiceListBackup.csv"-NoTypeInformation这条命令会将所有服务信息导出到C:\ServiceListBackup.csv文件中。确保您有写入该路径的权限。CMD批处理命令来备份Windo......
  • Transformer从入门到精通的实战指南看这本书就够了—《Transformers in Action》(附PDF
    前言TransformersinAction将革命性的Transformers架构添加到您的AI工具包中。您将深入了解模型架构的基本细节,通过易于理解的示例和巧妙的类比解释所有复杂的概念-从袜子分类到滑雪!即使是复杂的基础概念也从实际应用开始,因此您永远不必为抽象理论而苦恼。这本书包括一个广......
  • ZBlogPHP网站Leaked 1 hashtable iterators错误
    当遇到Z-BlogPHP报告“Leaked1hashtableiterators”错误时,这意味着在PHP脚本执行期间发生了内存泄漏问题,具体来说是在处理哈希表迭代时出现了问题。这个问题可能是由于PHP脚本中的编程错误导致的,或者是PHP自身的bug引起的。解决步骤1.更新PHP和Z-BlogPHP......
  • zblog安装时出现您在zb_users/c_option.php内配置、或刚才填写的的 MySQL 连接信息是
    当你在安装Z-BlogPHP时遇到“您在 zb_users/c_option.php 内配置、或刚才填写的MySQL连接信息是否正确?”的提示时,这通常意味着数据库连接配置存在问题。以下是详细的排查和解决步骤:1.检查数据库连接配置首先,确保数据库连接配置正确。你需要检查以下几个方面:步骤1:查看......
  • [强网杯2019]supersqli--Web安全进阶系列
    [强网杯2019]supersqli--Web安全进阶系列使用引号判断是否存在sql注入报错,可能存在sql注入,注入payload,判断列数,结果为不存在4列?inject=1'orderby4--q换2试试,正常显示,说明存在2列输出结果?inject=1'orderby2--q尝试使用联合注入失败,并且限制了select|update......
  • MongoDB增加身份验证
    1.数据库添加用户和密码mongo>useadmin>db.createUser({user:"nucRoot",pwd:"f71F!6",roles:["root"]}) 2.修改启动文件,通过auth方式启动,完整如下(INI格式)dbpath=/usr/local/mongodb/data/dblogpath=/usr/local/mongodb/data/logs/mongodb.loglogap......