当前位置: 首页 > news >正文

如何在一台服务器上搭建 mongodb副本集1主2从节点

在一台服务器上搭建 MongoDB 副本集(1 主节点 + 2 从节点)可以通过运行多个 MongoDB 实例并使用不同端口和数据目录来实现。以下是详细步骤:

1. 准备工作

  • 确保已安装 MongoDB。
  • 为每个实例创建独立的数据目录和日志文件。

2. 创建数据目录和日志文件

为每个节点创建独立的数据目录和日志文件。

mkdir -p /data/db{1,2,3}
touch /var/log/mongodb{1,2,3}.log
chmod 777 /var/log/mongodb{1,2,3}.log

演示

3. 配置 MongoDB 实例

为每个实例创建独立的配置文件。

主节点配置文件 (mongod1.conf):

storage:dbPath: /data/db1
systemLog:destination: filepath: /var/log/mongodb1.loglogAppend: true
net:bindIp: 127.0.0.1port: 27017
replication:replSetName: rs0
processManagement:fork: true

演示如下

systemLog:destination: filepath: "/usr/local/mongodb/logs/mongodb.log"logAppend: truestorage:dbPath: "/usr/local/mongodb/data"engine: wiredTigerwiredTiger:engineConfig:cacheSizeGB: 2journal:commitIntervalMs: 100net:port: 27017bindIp: "0.0.0.0"replication:replSetName: rs0processManagement:fork: true

从节点 1 配置文件 (mongod2.conf):

storage:dbPath: /data/db2
systemLog:destination: filepath: /var/log/mongodb2.loglogAppend: true
net:bindIp: 127.0.0.1port: 27018
replication:replSetName: rs0
processManagement:fork: true

演示如下

systemLog:destination: filepath: "/usr/local/mongodb/logs2/mongodb.log"logAppend: truestorage:dbPath: "/usr/local/mongodb/data2"engine: wiredTigerwiredTiger:engineConfig:cacheSizeGB: 2journal:commitIntervalMs: 100net:port: 27018bindIp: "0.0.0.0"replication:replSetName: rs0processManagement:fork: true

从节点 2 配置文件 (mongod3.conf):

storage:dbPath: /data/db3
systemLog:destination: filepath: /var/log/mongodb3.loglogAppend: true
net:bindIp: 127.0.0.1port: 27019
replication:replSetName: rs0
processManagement:fork: true

演示如下

systemLog:destination: filepath: "/usr/local/mongodb/logs3/mongodb.log"logAppend: truestorage:dbPath: "/usr/local/mongodb/data3"engine: wiredTigerwiredTiger:engineConfig:cacheSizeGB: 2journal:commitIntervalMs: 100net:port: 27019bindIp: "0.0.0.0"replication:replSetName: rs0processManagement:fork: true

4. 启动 MongoDB 实例

使用配置文件启动三个 MongoDB 实例。

mongod -f /path/to/mongod1.conf
mongod -f /path/to/mongod2.conf
mongod -f /path/to/mongod3.conf

 演示如下

#启动
mongod --config /usr/local/mongodb/etc/mongod.conf --fork #后台进程运行
mongod --config /usr/local/mongodb/etc2/mongod.conf --fork #后台进程运行
mongod --config /usr/local/mongodb/etc3/mongod.conf --fork #后台进程运行#关闭
mongod --shutdown -f /usr/local/mongodb/etc/mongod.conf
mongod --shutdown -f /usr/local/mongodb/etc2/mongod.conf
mongod --shutdown -f /usr/local/mongodb/etc3/mongod.conf

启动效果如下

5. 初始化副本集

连接到主节点(27017 端口),初始化副本集。

mongo --port 27017

演示如下

mongosh "mongodb://localhost:27017"

在 MongoDB Shell 中执行:

rs.initiate({_id: "rs0",members: [{ _id: 0, host: "127.0.0.1:27017" },{ _id: 1, host: "127.0.0.1:27018" },{ _id: 2, host: "127.0.0.1:27019" }]
})

演示如下

rs.initiate({_id: "rs0",members: [{ _id: 0, host: "127.0.0.1:27017" },{ _id: 1, host: "127.0.0.1:27018" },{ _id: 2, host: "127.0.0.1:27019" }]
})

 执行效果如下

6. 检查副本集状态

初始化后,检查副本集状态。

rs.status()

输出应显示 1 个 PRIMARY 和 2 个 SECONDARY 节点。

演示如下

 

7. 验证数据同步

在主节点插入数据,检查从节点是否同步。

主节点插入数据:

use testdb
db.testcollection.insert({ name: "example" })

从节点查询数据:

mongo --port 27018

演示如下

mongosh "mongodb://localhost:27018"

在 MongoDB Shell 中执行:

rs.secondaryOk()  # 允许从节点读取 mongodb 7
db.testcollection.find()

说明:

  • rs.secondaryOk() 允许当前会话从次要节点读取数据。
  • 如果你希望所有会话都默认允许从次要节点读取数据,可以在连接字符串中添加 readPreference=secondary 参数。

连接字符串示例

mongodb://host1:27017,host2:27017,host3:27017/myDatabase?readPreference=secondary

通过这种方式,你可以确保应用程序从次要节点读取数据,从而分担主节点的负载。

8. 停止和清理

如果需要停止副本集,可以使用以下命令:

mongod --dbpath /data/db1 --shutdown
mongod --dbpath /data/db2 --shutdown
mongod --dbpath /data/db3 --shutdown

清理数据目录和日志文件:

rm -rf /data/db{1,2,3}
rm -f /var/log/mongodb{1,2,3}.log

总结

通过以上步骤,您可以在单台服务器上成功搭建一个 MongoDB 副本集(1 主 2 从)。这种方法适合本地开发和测试,但在生产环境中建议使用多台服务器以实现高可用性。

相关文章:

如何在一台服务器上搭建 mongodb副本集1主2从节点

在一台服务器上搭建 MongoDB 副本集(1 主节点 2 从节点)可以通过运行多个 MongoDB 实例并使用不同端口和数据目录来实现。以下是详细步骤: 1. 准备工作 确保已安装 MongoDB。为每个实例创建独立的数据目录和日志文件。 2. 创建数据目录和…...

【湖北省计算机信息系统集成协会主办,多高校支持 | ACM出版,EI检索,往届已见刊检索】第二届边缘计算与并行、分布式计算国际学术会议(ECPDC 2025)

第二届边缘计算与并行、分布式计算国际学术会议(ECPDC 2025)将于2025年4月11日至13日在中国武汉盛大召开。本次会议旨在为边缘计算、并行计算及分布式计算领域的研究人员、学者和行业专家提供一个高水平的学术交流平台。 随着物联网、云计算和大数据技术…...

谈谈 ES 6.8 到 7.10 的功能变迁(6)- 其他

这是 ES 7.10 相较于 ES 6.8 新增内容的最后一篇,主要涉及算分方法和同义词加载的部分。 自定义算分:script_score 2.0 Elasticsearch 7.0 引入了新一代的函数分数功能,称为 script_score 查询。这一新功能提供了一种更简单、更灵活的方式来…...

大数据与金融科技:革新金融行业的动力引擎

大数据与金融科技:革新金融行业的动力引擎 在今天的金融行业,大数据与金融科技的结合正在以惊人的速度推动着金融服务的创新与变革。通过精准的数据分析与智能化决策,金融机构能够更高效地进行风险管理、客户服务、资产管理等一系列关键操作…...

企业jsapi_ticket,java举例

在企业微信开发中,使用 Java 获取 jsapi_ticket 并生成签名的步骤如下。以下是完整的 Java 示例代码。 1. 获取 jsapi_ticket 的流程 获取 access_token。 使用 access_token 获取 jsapi_ticket。 使用 jsapi_ticket 生成签名(signature)。…...

【Python】基础语法三

> 作者:დ旧言~ > 座右铭:松树千年终是朽,槿花一日自为荣。 > 目标:了解Python的函数、列表和数组。 > 毒鸡汤:有些事情,总是不明白,所以我不会坚持。早安! > 专栏选自&#xff…...

leetcode_字典树 139. 单词拆分

139. 单词拆分 给你一个字符串 s 和一个字符串列表 wordDict 作为字典。如果可以利用字典中出现的一个或多个单词拼接出 s 则返回 true。 注意:不要求字典中出现的单词全部都使用,并且字典中的单词可以重复使用。 思路: 定义状态: 设dp[i]表…...

Easy Trans Spring Boot Starter ---Spring系列的字段翻译库

Easy Trans Spring Boot Starter 使用文档 1. 简介 easy-trans-spring-boot-starter 是一个基于 Spring Boot 的库,用于简化数据翻译和转换操作。它可以帮助你将数据库中的枚举值、状态码等转换为用户友好的文本,或者将一种数据格式转换为另一种格式。…...

算法-数据结构(图)-迪杰斯特拉最短逻辑算法( Dijkstra)

迪杰斯特拉算法(Dijkstras Algorithm) 是一种用于计算单源最短路径的经典算法,由荷兰计算机科学家 艾兹赫尔迪杰斯特拉(Edsger W. Dijkstra) 于1956年提出。它的主要目标是找到从图中的某个源节点到所有其他节点的最短…...

抖音生活服务加强探店内容治理,2024年达人违规率下降30%

发布 | 大力财经 2月27日,抖音生活服务发布《2024抖音生活服务消费者权益保护年度报告》(以下简称“报告”)。报告显示,过去一年,抖音生活服务针对消费者反感的虚假、夸张探店内容,开展了专项治理。通过一…...

跟着源码实现LevelDB(二)util/status.cc

概述 本小节实现了leveld的Status类,Status看起来是个简单的类,但是其中也包含了leveldb对极致的性能实现的巧妙设计 Status的内存管理 Status 只有一个成员变量 const char* state_; state[0…3] 表示长度,state[4] 1个字节 表示状态的枚…...

51c自动驾驶~合集52

我自己的原文哦~ https://blog.51cto.com/whaosoft/13383340 #世界模型如何推演未来的千万种可能 驾驶世界模型(DWM),专注于预测驾驶过程中的场景演变,已经成为追求自动驾驶的一种有前景的范式。这些方法使自动驾驶系统能够更…...

Rust 是什么

Rust 是什么 Rust 是一种由 Mozilla 开发的系统级编程语言,它于 2010 年首次亮相,在 2015 年发布 1.0 版本,此后迅速发展并受到广泛关注。 内存安全:Rust 最大的亮点之一是它在编译阶段就能够避免常见的内存错误,如空指针引用、数据竞争和内存泄漏等。它通过所有权(Owne…...

005 公网访问 docker rocketmq

文章目录 创建自定义网络创建NameServer容器创建Broker容器正式开始启动 Nameserver 容器启动 Broker 容器并关联 Nameserverdocker exec -it rmqbroker vi /etc/rocketmq/broker.conf检查 namesrv 解析检查 Broker 注册状态Nameserver 日志Broker 日志检查容器日志手动指定 Br…...

ASP.NET MVC项目部署到IIS后,w3wp.exe程序报错重启

一、错误信息 windows的事件查看器》windows日志》应用程序,按时间找到错误信息如下: 错误应用程序名称: w3wp.exe,版本: 10.0.14393.0,时间戳: 0x57899b8a 错误模块名称: KERNELBASE.dll,版本: 10.0.14393.5850&…...

Java多线程与高并发专题——深入ReentrantReadWriteLock

深入ReentrantReadWriteLock 读写锁出现原因 synchronized和ReentrantLock都是互斥锁。如果说有一个操作是读多写少的,还要保证线程安全的话。如果采用上述的两种互斥锁,效率方面很定是很低的。在这种情况下,咱们就可以使用ReentrantReadWr…...

支付宝 IoT 设备入门宝典(下)设备经营篇

上篇介绍了支付宝 IoT 设备管理,但除了这些基础功能外,商户还可以利用设备进行一些运营动作,让设备更好的帮助自己,本篇就会以设备经营为中心,介绍常见的设备相关能力和问题解决方案。如果对上篇感兴趣,可以…...

极简本地体验deepseek大模型教程

一 题外随感:时代之问 就像狄更斯在双城记中所述,“这是最好的时代,这是最坏的时代”。每一代人都有其所处的时代,每一个时代都有其所谓好的一面和不那么好的一面。很多时候随口的一句大环境不好,就似乎给了自己一个最…...

最短路问题--Floyd

Floyd算法 一、介绍二、补充知识:邻接矩阵三、原理四、实现 提示:以下是本篇文章正文内容,下面案例可供参考 一、介绍 Floyd算法是一种用来计算图中所有点之间最短距离的算法。它的核心思想是:通过逐步尝试每个点作为中间点&…...

深入理解Java网络编程:从基础到高级应用

一、网络编程概述 1.什么是网络编程? 网络编程是指利用计算机网络实现程序之间通信的一种编程方式。在网络编程中,程序需要通过网络协议(如 TCP/IP)来进行通信,以实现不同计算机之间的数据传输和共享。 2.在网络编程…...

浅谈deepseek环境搭建

在探索人工智能的浩瀚宇宙中,DeepSeek如同一颗璀璨的星辰,以其独特的魅力引领着我们在逻辑推理与数据分析的海洋中遨游。想要在这片未知的领域里扬帆起航,首先必须精心搭建起我们的“星际飞船”——DeepSeek环境。无论你是渴望在本地实例上运…...

AI绘画软件Stable Diffusion详解教程(2):Windows系统本地化部署操作方法(专业版)

一、事前准备 1、一台配置不错的电脑,英伟达显卡,20系列起步,建议显存6G起步,安装win10或以上版本,我的显卡是40系列,16G显存,所以跑大部分的模型都比较快; 2、科学上网&#xff0…...

kali liux的下载

Kali Linux | Penetration Testing and Ethical Hacking Linux Distributionhttps://www.kali.org/ VMware虚拟机https://pan.quark.cn/s/aa869ffbf184 【补充一个今天学到的知识昂和内容无关:(遥感)指非接触的远距离探测技术,使用传感器探…...

DeepSeek 助力 Vue3 开发:打造丝滑的悬浮按钮(Floating Action Button)

前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 Deep…...

ES from size聚合查询10000聚合查询,是每个分片先聚合,再统计。还是所有节点查询1万条后,再聚合

在 Elasticsearch 中,聚合查询 的执行过程是 分布式 的,Elasticsearch 会先在每个分片(shard)上执行本地聚合,然后再在协调节点(coordinating node)上对所有分片的聚合结果进行 全局汇总。具体过…...

fluent-ffmpeg 依赖详解

fluent-ffmpeg 是一个用于在 Node.js 环境中与 FFmpeg 进行交互的强大库,它提供了流畅的 API 来执行各种音视频处理任务,如转码、剪辑、合并等。 一、安装 npm install fluent-ffmpeg二、基本使用 要使用 fluent-ffmpeg,首先需要确保系统中…...

SLAM文献之-DROID-SLAM: Deep Visual SLAM for Monocular, Stereo, and RGB-D Cameras

DROID-SLAM 是一种结合深度学习与传统视觉SLAM技术的先进算法,其核心目标是通过端到端可训练的深度神经网络来实现高精度的相机位姿估计和稠密三维重建。与传统SLAM方法不同,DROID-SLAM采用深度学习网络来估计深度信息,提供更高的精度与鲁棒性…...

一、旋转编码器模块分析与使用

一、旋转编码器说明 该模块配合定时器的encoder使用时,可通过旋转来进行调整记录编码的数值。(通过旋转编码器的数值与字母建立对应关系,即可进行打字编码) 引脚说明: vcc,gnd,供电使用 sw&am…...

【踩坑日志】解决CU118环境下RuntimeError: NCCL error: invalid usage

本博客主要记录了CU118环境下,出现报错信息为RuntimeError: NCCL error: invalid usage的解决方案。我的环境信息如下: cuda版本:11.7torch版本:torch-2.5.1-cu118 定位到核心报错信息为: NCCL WARN NCCL cannot be …...

FREERTOS的三种调度方式

一、调度器的调度方式 调度器的调度方式解释针对的对象抢占式调度1.高优先级的抢占低优先级的任务 2.高优先级的任务不停止,低优先级的任务不能执行 3.被强占的任务会进入就绪态优先级不同的任务时间片调度1.同等优先级任务轮流享用CPU时间 2.没有用完的时间片&…...

338.比特位计数<动态规划>

338. 比特位计数 - 力扣&#xff08;LeetCode&#xff09; class Solution { public:vector<int> countBits(int n) {//将所有数初始化为0vector<int>dp(n1,0);for(int i 0; i<n;i){if(i % 2 0){dp[i] dp[i/2];}else{dp[i] dp[i/2]1;}}return dp;} };...

释放你的IDE潜能:Code::Blocks 插件创意开发深度指南

释放你的IDE潜能:Code::Blocks 插件创意开发深度指南 在软件开发的浩瀚世界中,集成开发环境 (IDE) 扮演着至关重要的角色。一款优秀的 IDE 不仅能提升开发效率,更能激发开发者的创造力。Code::Blocks,作为一款开源、跨平台的 C, C++ 和 Fortran IDE,以其轻量级、高度可定…...

行星际激波与高能粒子的相互作用机制及其天体物理意义

第一章 行星际激波的物理本质与形成机制 1.1 激波的普遍定义与分类​ 激波&#xff08;Shock Wave&#xff09;是介质中传播的压缩性不连续面&#xff0c;其本质是介质参数&#xff08;如密度、速度、压力&#xff09;的突变。在天体物理中&#xff0c;根据激波传播方向与磁场…...

C# 牵手DeepSeek:打造本地AI超能力

一、引言 在人工智能飞速发展的当下&#xff0c;大语言模型如 DeepSeek 正掀起新一轮的技术变革浪潮&#xff0c;为自然语言处理领域带来了诸多创新应用。随着数据隐私和安全意识的提升&#xff0c;以及对模型部署灵活性的追求&#xff0c;本地部署 DeepSeek 成为众多开发者和…...

不同版本的BLE和WiFi有什么区别?

一、蓝牙技术对比&#xff1a;从 Bluetooth 4.0 到 5.3 的演进与室内定位应用 蓝牙技术自推出以来&#xff0c;经历了多次重大升级&#xff0c;每一代都在传输速率、功耗、覆盖范围和功能上有所改进。本文将从 Bluetooth 4.0 到 5.3&#xff0c;逐一对比各版本的特点&#xff0…...

LVS+Keepalived高可用高性能负载实战

高可用集群&#xff08; High Availability Cluster, HA 集群&#xff09;&#xff0c;其中高可用的含义是最大限度地可以使用。从集群 的名字上可以看出&#xff0c;此类集群实现的功能是保障用户的应用程序持久、不间断地提供服务。 当应用程序出现故障或者系统硬件、网络出现…...

网络安全-使用DeepSeek来获取sqlmap的攻击payload

文章目录 概述DeepSeek使用创建示例数据库创建API测试sqlmap部分日志参考 概述 今天来使用DeepSeek做安全测试&#xff0c;看看在有思路的情况下实现的快不快。 DeepSeek使用 我有一个思路&#xff0c;想要测试sqlmap工具如何dump数据库的&#xff1a; 连接mysql数据库&#…...

【MongoDB】在Windows11下安装与使用

官网下载链接&#xff1a;Download MongoDB Community Server 官方参考文档&#xff1a;https://www.mongodb.com/zh-cn/docs/manual/tutorial/install-mongodb-on-windows/#std-label-install-mdb-community-windows 选择custom类型&#xff0c;其他默认 注意&#xff0c;此选…...

vscode输入!+tab没反应??

&#xff01;&#xff0b;tab直接生成html框架 第一步 ctrlshipp 选择更改语言模式 change language mode&#xff0c; 选择HTML 然后试一下行不行&#xff0c;如果还不行看第二步 第二步 检查一下输入的&#xff01;是不是英文输入法输入的&#xff0c;一定要是英文输入&…...

【Cadence射频仿真学习笔记】2.4GHz低噪放LNA仿真设计

课程分为3个部分&#xff0c; 一、LNA结构与噪声优化方法 噪声优化的方法是&#xff1a;限定功耗的噪声和功率同时匹配噪声匹配和功率匹配一般不会同时达到&#xff0c; 对于PCSNIM结构的噪声分析&#xff0c;我们只需要了解与哪些参数有关优化思路是&#xff1a;1.信号源阻抗…...

初阶MySQL(两万字全面解析)

文章目录 1.初识MySQL1.1数据库1.2查看数据库1.3创建数据库1.4字符集编码和排序规则1.5修改数据库1.6删除数据库 2.MySQL常用数据类型和表的操作2.(一)常用数据类型1.数值类2.字符串类型3.二进制类型4.日期类型 2.(二)表的操作1查看指定库中所有表2.创建表 3.查看表结构和查看表…...

Python每日一练:学习指南进行汇总

Python&#xff0c;一种“优雅”、“明确”、“简单”的编程语言&#xff0c;凭借其低学习曲线、强大的开源生态系统、卓越的平台可移植性以及面向对象和函数式编程的支持&#xff0c;成为了众多开发者首选。 01 Python 应用领域和就业形势分析 Python&#xff0c;一种“优雅…...

Spring-AI搭建企业专属知识库 一

环境介绍&#xff1a;Spring3.3.2 JDK 21 POM文件 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation&…...

Python的那些事第三十六篇:基于 Vega 和 Vega-Lite 的数据可视化解决方案,Altair 声明式可视化库

Altair 声明式可视化库:基于 Vega 和 Vega-Lite 的数据可视化解决方案 摘要 在数据科学和分析领域,有效的数据可视化是理解数据、发现模式和传达见解的关键。Python 作为数据科学的主要编程语言之一,提供了多种数据可视化库。其中,Altair 是一个基于 Vega 和 Vega-Lite 的…...

虚拟化园区网络部署指南

《虚拟化园区网络部署指南》属于博主的“园区网”专栏&#xff0c;若想成为HCIE&#xff0c;对于园区网相关的知识需要非常了解&#xff0c;更多关于园区网的内容博主会更新在“园区网”专栏里&#xff0c;请持续关注&#xff01; 一.前言 华为CloudCampus解决方案基于智简网络…...

系统调用有哪些函数

系统调用是操作系统提供给用户程序的一组“特殊”的函数接口&#xff0c;允许用户程序请求操作系统执行某些低级服务。这些服务通常涉及对硬件的直接操作或访问受保护的内核资源。以下是一些常见的系统调用函数&#xff0c;主要基于Unix/Linux环境&#xff1a; 一、文件与设备…...

Go红队开发—编解码工具

文章目录 开启一个项目编解码工具开发Dongle包Base64编解码摩斯密码URL加解密AES加解密 MD5碰撞工具开发 开启一个项目 这作为补充内容&#xff0c;可忽略直接看下面的编解码&#xff1a; 一开始用就按照下面的步骤即可 1.创建一个文件夹&#xff0c;你自己定义名字(建议只用…...

PyInstaller 打包python 程序 成 可执行文件

pyinstaller --onefile --name my_project --add-data "config/config.json:config" main.py 要将整个 Python 项目打包成一个可执行文件&#xff0c;可以使用 PyInstaller 来完成这个任务。以下是如何将整个项目打包成可执行文件的步骤&#xff1a; 1. 安装 PyIns…...

2继续NTS库学习(读取shapefile)

引用库如下&#xff1a; 读取shapefile代码如下&#xff1a; namespace IfoxDemo {public class Class1{[CommandMethod("xx")]public static void nts二次学习(){Document doc Application.DocumentManager.MdiActiveDocument;var ed doc.Editor;string shpPath …...

Python爬虫

python凭借其简洁的语法和强大的库支持&#xff0c;成为编写爬虫程序的首选语言之一。今天&#xff0c;我将通过一个简单的示例&#xff0c;带你入门Python爬虫&#xff0c;并展示如何爬取网页内容并保存到文本文件中。 一、爬虫的基本概念 爬虫&#xff08;Web Crawler&#…...