MongoDB管理:如何优雅的重启复制集?

本文涉及的产品
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
简介: 啊!你还不了解MongoDB复制集?先看这里科普一下 复制集的成员启动后,会选举出一个Primary,Primary需要得到大多数成员的投票。所有的写入操作都必须向Primary发起,通过oplog将写操作同步到Secondary。 在复制集运行的过程中,难免会遇到需要重启节点的场景,比如复

啊!你还不了解MongoDB复制集?先看这里科普一下


复制集的成员启动后,会选举出一个Primary,Primary需要得到大多数成员的投票。所有的写入操作都必须向Primary发起,通过oplog将写操作同步到Secondary。


在复制集运行的过程中,难免会遇到需要重启节点的场景,比如复制集版本升级、节点维护等,在重启节点的过程中,建议不要直接shutdown Primary,这样可能导致已经写入primary但未同步到secondary的数据丢失,过程类似如下:


  1. shutdown Primary (shutdown会等待Secondary oplog追到10s以内)
  2. Primary退出后,剩余的节点选举出一个新的Primary(复制集只包含1或2节点例外)
  3. Primary重新启动,因为当前复制集已经有了新的Primary,这个Primary将以Secondary的角色运行。
  4. 从新的Primary同步的过程中,发现自己有无效的oplog,会先进行rollback。(rollback的数据只要不超过300M是可以找回的)


如果想不丢数据重启复制集,更优雅的打开方式应该是这样的

  1. 逐个重启复制集里所有的Secondary节点
  2. 对Primary发送stepDown命令,等待primary降级为Secondary
  3. 重启降级后的Primary

注意:如果Secondary的同步一直追不上Primary,步骤2可能会失败,这时应该重试步骤2直到stepDown成功;步骤2也可以通过调用replSetReconfig命令,来调整节点优先级来实现,让Secondary拥有更高的优先级,然后等待Primary降级为Secondary。


从上述分析可以看出,复制集里Primary、Secondary节点角色切换是很正常的事情,所以连接复制集一定不要直连Primary,否则在节点角色切换时不能正确容错,服务高可用无法保证。


另外,要想保证数据的高可靠,除了在运维上加强,在开发层面也可以做些工作,比如重要的数据写入通过WriteConcern: {w: "majority"}
来保证写入到大多数节点才向客户端确认。

参考资料

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
NoSQL MongoDB
MongoDB-复制集搭建
在安装目录下新建 data/conf/log 3个文件夹,在conf文件夹下新建 mongo.config,在mongo.config中配置如下内容:
90 0
|
4月前
|
运维 监控 NoSQL
【MongoDB 复制集秘籍】Secondary 同步慢怎么办?深度解析与实战指南,让你的数据库飞速同步!
【8月更文挑战第24天】本文通过一个具体案例探讨了MongoDB复制集中Secondary成员同步缓慢的问题。现象表现为数据延迟增加,影响业务运行。经分析,可能的原因包括硬件资源不足、网络状况不佳、复制日志错误等。解决策略涵盖优化硬件(如增加内存、升级CPU)、调整网络配置以减少延迟以及优化MongoDB配置(例如调整`oplogSize`、启用压缩)。通过这些方法可有效提升同步效率,保证系统的稳定性和性能。
100 4
|
27天前
|
存储 NoSQL MongoDB
【赵渝强老师】部署MongoDB复制集
本文介绍了如何在单个节点上搭建MongoDB复制集环境,通过监听不同端口实现多节点配置。详细步骤包括创建数据目录、编辑配置文件、启动节点、初始化复制集、查看状态以及测试主从库的读写操作。文中还提供了视频讲解和代码示例,帮助读者更好地理解和操作。
|
27天前
|
存储 NoSQL MongoDB
【赵渝强老师】MongoDB复制集的体系架构
MongoDB的复制集是一种集群技术,由一个Primary节点和多个Secondary节点组成,实现数据的高可用性。Primary节点处理写入请求,Secondary节点同步数据。当Primary节点故障时,Secondary节点可通过选举成为新的Primary节点。视频讲解和示意图详见正文。
|
6月前
|
JSON NoSQL MongoDB
Rockmongo详解:高效管理MongoDB的图形化利器
Rockmongo详解:高效管理MongoDB的图形化利器
112 0
|
4月前
|
C# UED 开发者
WPF与性能优化:掌握这些核心技巧,让你的应用从卡顿到丝滑,彻底告别延迟,实现响应速度质的飞跃——从布局到动画全面剖析与实例演示
【8月更文挑战第31天】本文通过对比优化前后的方法,详细探讨了提升WPF应用响应速度的策略。文章首先分析了常见的性能瓶颈,如复杂的XAML布局、耗时的事件处理、不当的数据绑定及繁重的动画效果。接着,通过具体示例展示了如何简化XAML结构、使用后台线程处理事件、调整数据绑定设置以及利用DirectX优化动画,从而有效提升应用性能。通过这些优化措施,WPF应用将更加流畅,用户体验也将得到显著改善。
267 1
|
4月前
|
监控 NoSQL 大数据
【MongoDB复制集瓶颈】高频大数据写入引发的灾难,如何破局?
【8月更文挑战第24天】在MongoDB复制集中,主节点处理所有写请求,从节点通过复制保持数据一致性。但在大量高频数据插入场景中,会出现数据延迟增加、系统资源过度消耗、复制队列积压及从节点性能不足等问题,影响集群性能与稳定性。本文分析这些问题,并提出包括优化写入操作、调整写入关注级别、采用分片技术、提升从节点性能以及持续监控调优在内的解决方案,以确保MongoDB复制集高效稳定运行。
93 2
|
4月前
|
C# 开发者 Windows
全面指南:WPF无障碍设计从入门到精通——让每一个用户都能无障碍地享受你的应用,从自动化属性到焦点导航的最佳实践
【8月更文挑战第31天】为了确保Windows Presentation Foundation (WPF) 应用程序对所有用户都具备无障碍性,开发者需关注无障碍设计原则。这不仅是法律要求,更是社会责任,旨在让技术更人性化,惠及包括视障、听障及行动受限等用户群体。
87 0
|
7月前
|
NoSQL Linux Shell
Linux MongoDB重启命令
【5月更文挑战第8天】
483 6
|
7月前
|
监控 NoSQL 安全
【MongoDB 专栏】MongoDB 的复制集:高可用性配置
【5月更文挑战第10天】MongoDB的复制集是实现数据高可用性的重要机制,由主节点和次节点构成,主节点处理写操作,次节点同步数据确保一致。在主节点故障时,次节点自动提升接替,保证服务不间断。通过复制集,可实现数据保护、持续服务,适用于关键业务系统和数据备份。配置时需关注网络稳定性、节点性能和数据一致性。案例显示,复制集能有效保障服务高可用,防止数据丢失和业务中断,是现代数据库管理的关键工具。在数据驱动的世界,复制集为高可用性提供了坚实保障。
144 0
【MongoDB 专栏】MongoDB 的复制集:高可用性配置