广告
返回顶部
首页 > 资讯 > 数据库 >MongoDB添加secondary节点的2种方法详解
  • 893
分享到

MongoDB添加secondary节点的2种方法详解

2024-04-02 19:04:59 893人浏览 泡泡鱼
摘要

前言 前段时间维护的一个事业群的其中一条业务线的开发找到运维,提出来了一个mongoDB的优化问题,那段时间MonGoDB正在从op管理移交给db进行维护,整个部门都对MongoDB的运维经验缺乏,Mong

前言

前段时间维护的一个事业群的其中一条业务线的开发找到运维,提出来了一个mongoDB优化问题,那段时间MonGoDB正在从op管理移交给db进行维护,整个部门都对MongoDB的运维经验缺乏,MongoDB的优化更是一个未知的挑战。当op找到我,核心系统的公共服务平台用来进行短信服务的MongoDB集群想进行一次优化,我当仁不能让的承担了这项我都觉得可能搞不定的任务。

开发找到我提出了两点儿问题,并寻求运维团队解决这个问题,不过最终在我的理性的思考和他感性的思维碰撞下,最终我还是以胜利者的姿态胜出。我成功说服了他,并解答了他一些疑问,得到了满意的答复后再也没找我了。当然这里肯定不会就凭几句话,任你理论再怎么丰富,态度如何暧昧,不拿点儿真实数据,做点儿什么,怎么能说服经验丰富的开发认定的事儿。沟通了大半天,占据了我白天的工作时间,不过他提出来的问题还是很值得讨论。

根据开发的逻辑,是想横向扩充secondary节点,把其他要求不高的业务放到secondary节点上,减轻primary节点的压力,达到部分读写分离,使得主要业务优先保障。我觉得这个出发点是好的,但并没有就此作出回应,其一是他没有认识到这个他认为的有延迟并不是数据库集群的问题(这里不详细讲述排查的过程,下一篇文章会讲些MongoDB的写入与业务逻辑),其二是我们确实缺乏有效的资源硬件去进行扩充节点。

不同的业务场景应用不同的架构策略,扩充secondary节点有时候不能解决问题,尤其是那些实时性很高的业务,但有时候扩充secondary节点确实有效,比如硬件升级后需要做的服务迁移,需要在线扩充secondary节点来满足业务需要的更高的硬件要求。

MongoDB的secondary节点的扩充,我总结起来有两种方式:

1、rs.add()直接扩充

2、一致性备份后进行扩充(个人叫法)

1、rs.add("HOST_NAME:PORT")

具体的实现方式是登陆扩充节点的机器,编辑好配置文件,并建立相应的目录和权限,启动MongoDB实例就可以了。

需要注意的一点儿是这种扩充方式要保证同步源的数据量级,即保证在同步完数据前MongoDB的oplog不会被覆盖,这点儿类似与Mysql的redo log日志,如果被覆盖那么同步的数据出现不一致,导致同步失败。

需要注意的另一点是同步数据的过程中,当集群数据达到一定量级时,同步数据的大小很大就会对网络造成一定的压力,可能对业务的核心交换机造成影响,因此需要用TC工具对同步流量做限速处理。这个限速需要考虑同步源可能不会是primary,也可能是同样角色的secondary节点,令外限速同步势必会增大同步时间,这个会增大oplog被覆盖的概率,具体限速值还是要经过计算才能把握好。

2、一致性快照快速添加secondary节点(自我命名,欢迎各位交流)

  a)primary节点上进行一致性快照备份

  b)secondary节点上进行一致性快照恢复,仅仅对数据部分进行恢复,暂时不要对oplog进行恢复

     c)初始化oplog.rs集合,并恢复oplog记录

     d)初始化local数据库的其他两个集合db.replset.election,db.system.replset

  e)修改数据库配置并重启数据库(这一步操作前实例不开启认证模式、复制集的配置),rs.add("HOST_NAME:PORT")将secondary添加进集群并观察同步状态、校验数据的完整和一致性

实践的详细实践过程如下(仅供参考交流,生产环境慎用):

1、primary上进行一致性快照备份


#primary节点或者其他secondary节点备份数据
[root@172-16-3-190 mongodb]# /opt/app/mongodb/bin/mongodump -uroot -ppwd4mysql --authenticationDatabase=admin --port=27017 --oplog -o /tmp/dump_mongo/
2018-08-20T15:42:47.028+0800 writing admin.system.users to 
2018-08-20T15:42:47.030+0800 done dumping admin.system.users (1 document)
2018-08-20T15:42:47.030+0800 writing admin.system.version to 
2018-08-20T15:42:47.031+0800 done dumping admin.system.version (2 documents)
2018-08-20T15:42:47.032+0800 writing super_hero.user_address to 
2018-08-20T15:42:47.032+0800 writing super_hero.user_info to 
2018-08-20T15:42:47.033+0800 done dumping super_hero.user_address (1 document)
2018-08-20T15:42:47.033+0800 done dumping super_hero.user_info (1 document)
2018-08-20T15:42:47.034+0800 writing captured oplog to 
2018-08-20T15:42:47.036+0800 dumped 1 oplog entry

#查看备份的文件
[root@172-16-3-190 mongodb]# ls -lh /tmp/dump_mongo/
total 12K
drwxr-xr-x 2 root root 4.0K Aug 20 15:42 admin
-rw-r--r-- 1 root root 110 Aug 20 15:42 oplog.bson
drwxr-xr-x 2 root root 4.0K Aug 20 15:42 super_hero

#传递备份到准备添加为secondary的节点上
[root@172-16-3-190 tmp]# scp -r -P22222 /tmp/dump_mongo/ liyingxiao@172.16.3.189:/tmp
您可能感兴趣的文档:

--结束END--

本文标题: MongoDB添加secondary节点的2种方法详解

本文链接: https://www.lsjlt.com/news/50628.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MongoDB添加secondary节点的2种方法详解
    前言 前段时间维护的一个事业群的其中一条业务线的开发找到运维,提出来了一个MongoDB的优化问题,那段时间MongoDB正在从op管理移交给db进行维护,整个部门都对MongoDB的运维经验缺乏,Mong...
    99+
    2022-10-18
  • 怎么采用secondary的冷备份的方式来添加新的secondary节点
    这篇文章主要讲解了“怎么采用secondary的冷备份的方式来添加新的secondary节点”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么采用secon...
    99+
    2022-10-18
  • mongodb集群添加节点的方法是什么
    要向MongoDB集群添加节点,可以按照以下步骤进行操作:1. 安装MongoDB:在要添加节点的机器上安装MongoDB软件。确保...
    99+
    2023-09-12
    mongodb
  • JavaScript添加节点的方法
    小编给大家分享一下JavaScript添加节点的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!JavaScript添加节点的方法:1、使用appendChil...
    99+
    2023-06-14
  • qt treeview添加节点的方法是什么
    在Qt的TreeView中,可以使用`QStandardItemModel`类来添加节点。下面是一个简单的示例代码:1. 创建一个`...
    99+
    2023-09-16
    qt qtreeview
  • mongodb副本集用一致性快照方法添加从节点步骤
    环境描述 主节点 192.168.0.1:27002 两个从节点 192.168.0.2:27002 192.168.0.3:27002 目标:用一致性快照方式添加第三个从节点192.168...
    99+
    2022-10-18
  • 详解QTreeWidget隐藏节点的两种方式
    目录简述方法一:直接隐藏式方法二:间接隐藏式结尾简述 关于QTreeWidget隐藏节点有两种方式,一种是直接隐藏,一种是间接隐藏,但是两种方式各有差异,下面请听具体解说。 方法一:...
    99+
    2022-11-13
  • Mysql添加外键的两种方式详解
    目录mysql添加外键的几种方式方法一:方法二:补充:MySQL 删除外键操作总结 Mysql添加外键的几种方式 注意:添加外键是给从表添加(即子表)父表是主表 方法一: 创建表之前: FOREIGN KEY ...
    99+
    2023-04-10
    mysql添加外键 mysql怎么增加外键 MySQL添加外键操作
  • pytorch加载自己的图片数据集的2种方法详解
    目录ImageFolder 加载数据集使用pytorch提供的Dataset类创建自己的数据集。Dataset加载数据集总结pytorch加载图片数据集有两种方法。 1.ImageF...
    99+
    2022-11-11
  • 11G RAC节点删除与添加的方法是什么
    这篇文章主要介绍“11G RAC节点删除与添加的方法是什么”,在日常操作中,相信很多人在11G RAC节点删除与添加的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”...
    99+
    2022-10-18
  • Oracle添加和删除集群节点的方法是什么
    这篇文章主要介绍“Oracle添加和删除集群节点的方法是什么”,在日常操作中,相信很多人在Oracle添加和删除集群节点的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解...
    99+
    2022-10-18
  • C++链表节点的添加和删除方法是什么
    本篇内容介绍了“C++链表节点的添加和删除方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!前言链表是一种动态的数据结构,因为在创建链...
    99+
    2023-06-26
  • drupal实现在node节点的评论下面添加内容的方法
    本文实例讲述了drupal实现在node节点的评论下面添加内容的方法。分享给大家供大家参考。具体实现方法如下: drupal中node的评论节点显示是由下面的函数来控制的。这个函数在node.module里面,如下所示:...
    99+
    2022-06-12
    drupal node 节点 评论 添加 内容 方法
  • C#实现PDF签名时添加时间戳的2种方法(附VB.NET代码)
    在PDF添加签名时,支持添加可信时间戳来保证文档的法律效应。本文,将通过C#程序代码介绍如何添加可信时间戳,可通过2种方法来实现。文中附上VB.NET代码,有需可供参考。 一、程序运...
    99+
    2022-11-12
  • bootstrap中treeview扩展addNode方法动态添加子节点的示例分析
    这篇文章主要介绍了bootstrap中treeview扩展addNode方法动态添加子节点的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解...
    99+
    2022-10-19
  • Linux/CentOS系统同步网络时间的2种方法详解
    由于硬件的原因,机器或多或少的跟标准时间对不上,一个月的误差几秒到几分钟不等。对于服务器来说时间不准,会有很多麻烦。例如,支付的时候,无法下单,游戏无法登录等。 方法一:用 ntpdate从时间服务器更新时间 如果系统没...
    99+
    2022-06-04
    Linux同步网络时间 linux系统时间同步 ntp时间同步命令 linux ntp
  • Android 往Framework中添加新资源的方法详解
    有时候我们想在标准的Framework中添加自己的新的资源怎么办呢?办法就是我们来尝试下。通过Eclipse的联系,我们可以联想到是否就是简单的把字符串放在res的各个文件夹里...
    99+
    2022-06-06
    方法 framework Android
  • Spring详解四种加载配置项的方法
    目录1.spring加载yml文件2.spring 加载 properties 文件3.spring加载系统磁盘(properties)文件4.spring加载xml文件5.Java...
    99+
    2022-11-13
  • python中对列表的删除和添加方法详解
    目录删除 1.pop(index)2.remove(item)3.del list[index]4.clear()添加 1.append(obj)2.extend...
    99+
    2022-11-13
  • redis实现加锁的几种方法示例详解
    前言 本文主要给大家介绍了关于redis实现加锁的几种方法,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。 1. redis加锁分类 redis能用的的加锁命令分表是INCR、SETNX、...
    99+
    2022-06-04
    示例 详解 加锁
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作