mongodb replica sets搭建及使用

MongoDB副本集(Replica Set)详解与实战操作 MongoDB副本集(Replica Set)是一种数据冗余和故障恢复机制,它允许你维护相同数据的一个或多个副本,并提供自动故障转移和数据恢复能力。副本集是一个包含多个MongoDB实例(通常称为成员)的集合,其中一个成员被选举为主节点(Primary),其他成员作为从节点(Secondary)或仲裁节点(Arbiter)。主节点(Primary):负责处理客户端的读写请求,并将数据更改写入其本地数据文件中。 阅读详情

由于机器紧张,没办法搞分片(sharding),而只是用了复制集这个功能,一下介绍下自己这几天的实验。


环境:

目录结构

mongo_data

|--conf

    |--config.js

    |--rs0.cnf

    |--rs1.cnf

    |--rs2.cnf

|--data

    |--r0

    |--r1

    |--r2

|--key

    |--r0

    |--r1

    |--r2

|--log

    |--r0.log

    |--r1.log

    |--r2.log

|--run

    |--run_config.sh

   |--run_rs0.sh

   |--run_rs1.sh

   |--run_rs2.sh


举几个文件,其他类似:

rs0.cnf:

replSet=rs1
keyFile=/home/madding/output/mongodb/replica_set/key/r0
dbpath=/home/madding/output/mongodb/replica_set/data/r0
logpath=/home/madding/output/mongodb/replica_set/log/r0.log
port=10240

config.js:

var config_rs1={
    _id:'rs1',
    members:[
        {_id:0, host:'127.0.0.1:10240', priority:1},
        {_id:1, host:'127.0.0.1:11240'},
        {_id:2, host:'127.0.0.1:12240'}]
}

rs.initiate(config_rs1);

rs.slaveOk();

printjson('status info:');
printjson(rs.status());

printjson('result info: ');
printjson(rs.isMaster());

r0:

ANKDIUOJHKJDLKFJHDOUDOJFKLDJ

随便复杂,保证r0,r1,r2一致即可


run_config.sh:

!/bin/bash

MONGODB_HOME=/usr/mytools/mongodb

$MONGODB_HOME/bin/mongo ../conf/config.js --port 10240 --quiet

exit

run_rs0.sh:

#!/bin/bash

MONGODB_HOME=/usr/mytools/mongodb

$MONGODB_HOME/bin/mongod -f ../conf/rs0.cnf --logappend --fork

exit

运行顺序:

1.分别启动run_rs0.sh,run_rs1.sh,run_rs2.sh,ps看下进程是否都启动成功

2.运行run_config.sh,如果信息显示正常,说明已经建立成功。



测试场景:

1.kill r0进程:

    mongo客户端:

        自动切换primary;

        r0客户端可查询,不可插入;

    java驱动:

        采用集群连接,发现可正常查询,插入,业务不受影响  

说明:如果是kill -9方式,可能会导致mongo对应实例下的lock文件还在,删除掉后才能重启,要不然会重启失败


2.恢复r0进程:

   r0 mongod数据同步

  r0没有切换为primary ,主从维持在kill时的水平


3.当两个mongod实例(包括SECONDARY和PRIMARY组合)挂掉,是否可对外提供服务:

    mongo客户端:指定端口的可以连接,但是由于两个挂了导致没办法把SECONDARY切换到PRIMARY,只能查询不能修改

    java驱动:根据现象提示

Exception in thread "main" com.mongodb.MongoException: can't find a master
	at com.mongodb.DBTCPConnector.checkMaster(DBTCPConnector.java:436)
	at com.mongodb.DBTCPConnector.call(DBTCPConnector.java:211)
	at com.mongodb.DBApiLayer$MyCollection.__find(DBApiLayer.java:305)
	at com.mongodb.DBCursor._check(DBCursor.java:369)
	at com.mongodb.DBCursor._hasNext(DBCursor.java:504)
	at com.mongodb.DBCursor.hasNext(DBCursor.java:529)
	at ReplicaSets.main(ReplicaSets.java:57)
也就是此时没办法对外提供服务,虽然还有一个SECONDARY存活

注:如果最后一个保留下来的是PRIMARY,虽然短暂提供服务,但是一会儿后就自动切换为SECONDARY。


4.当两个实例挂掉,重启一个实例,是否可对外提供服务:

    mongo客户端:此时自动切换一台为PRIMARY,查询操作正常

   java驱动:只要设置自动重连,等待几秒即可恢复正常

注:发现在一台机器中操作,过程中出现一个实例把两一个socket端口占用现象,主要是因为web监控的端口,1000间隔。

       建议启动是先启动初始的PRIMARY最后启动


5.两个mongo实例是否可构建replica sets:

基于以上分析,虽然两个能构建复制集,但是由于一个挂掉,另一个自动切换为SECONDARY,做不到热备,因此没有价值。


6.三台同时挂掉,重启是否正常:

三台挂掉,重启后,会出现其中一台recovering,但是之后三台状态就能恢复正常,一个primary,两个secondary


------
author: madding.lip
date: 2012.02.09




Docker搭建高可用的mongodb副本集+分片(Replica Sets+Sharded Cluster)集群 高可用的mongodb副本集+分片(Replica Sets+Sharded Cluster)集群 一,前言 本文主要讲解如何通过docker制作高可用的mongodb副本集+分片(Replica Sets+Sharded Cluster)集群 ,采用各软件版本如下: 工具 版本 操作系统 centos7 docker 1.13.1 mongodb 4.0.0 robo... 阅读详情

相关推荐

Mongodb单机、复制集Replica Sets、分片集群Shard Cluster安装详解

​ 在主从模式的架构中,主节点(Master)的操作记录成为oplog(operation log),oplog存储在系统数据库local的 oplog.$main集合中,这个集合的每个文档都代表主节点上执行的一个操作。​ Hash分片与范围分片互补,能将文档随机的分散到各个chunk,充分的扩展写能力,弥补了范围分片的不足,缺点是不能高效的服务范围查询,所有的范围查询要分发到后端所有的Shard才能找出满足条件的文档。主节点选举是一个二阶段过程+多数派协议。

qq_36305027的博客 966

mongodb replica set(副本集)设置步骤

网上已经有一大堆的设置步骤的了,根据我遇到的问题,整理一下,如下: 首先先去下载一个mongodb最新版,目前最新版应该是2.6 [code="java"] cd /usr/local/bin wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.6.0.tgz tar -zxvf mongodb-linux-x86...

tcrct 816

QCM6490平台DDR测试:从QDUTT配置到眼图分析的实战指南

本文详细介绍了QCM6490平台DDR测试的全流程,从QDUTT工具安装配置到眼图分析,提供了实战操作指南和常见问题解决方案。通过具体案例分享,帮助工程师掌握DDR测试技巧,确保内存稳定性,特别适用于物联网和边缘计算设备的开发调试。

weixin_33910191的博客 456

mongoDB副本集-Replica Sets

MongoDB中的副本集()是一组维护相同数据集的mongod服务。副本集可提供冗余和高可用性,是所有生产部署的基础。也可以说,副本集类似于有自动故障恢复功能的主从集群。通俗的讲就是用多台机器进行同一数据的异步同步,从而使多台机器拥有同一数据的多个副本,并且当主库当掉时在不需要用户干预的情况下自动切换其他备份服务器做主库。而且还可以利用副本服务器做只读服务器,实现读写分离,提高负载。1)冗余和数据可用性复制提供冗余并提高数据可用性。

qq_63431773的博客 1699

深入解析UDS 0x19服务:DTC状态掩码与故障诊断实战

本文深入解析了UDS诊断协议中的核心0x19服务(ReadDTCInformation),重点拆解了DTC状态掩码(DTCStatusMask)的八个状态位及其在故障生命周期中的联动逻辑。通过实战案例,详细说明了从故障发生、确认到清除的全过程,并介绍了如何利用该服务进行深度诊断,包括读取扩展数据(如冻结帧)和避免常见开发误区,是理解汽车ECU故障管理机制的关键。

weixin_29248313的博客 323

【ArcPy】用Python批量处理大规模地理数据的几何校正

在许多GIS应用中,尤其是在大规模地理数据处理时,几何校正(Geometric Correction)是一个至关重要的任务。它确保了不同来源的地理数据能够正确地对齐和匹配,从而为后续分析提供准确的基础。几何校正的常见应用包括遥感影像的地理配准、矢量数据的投影转换等。几何校正通常包括坐标转换、重采样等步骤。以下示例展示了如何使用arcpy的工具进行几何校正。"""实施几何校正:param input_layer: 输入待校正数据层。

陈书予 995

MongoDB中的ReplSet

   在Mongodb中有2种方式来做集群,一种是Mastet--slave,另一种是replset.先新版本中推荐使用replset.下面就是怎样使用replset来构建我们的数据库服务器集群.我们用3台数据库服务器,其中2台用来存储数据,另一台用来做仲裁服务器(当存储数据的服务器down掉时仲裁服务器用来决定选择新的primary服务器).   第一步:在s1服务器上运行mongo --r...

yutaozxy的博客 553

Ultralytics 框架中 model.predict() 返回的 results 对象的详细解析

通过掌握 results 对象的使用方法,您可以快速实现模型部署、数据分析与可视化。

浩瀚之水的专栏 747

Mongodb Replica Sets 副本集群搭建

通过oplog日志进行添加节点操作简单,但oplog是capped collection,采用循环的方式处理日志,通过oplog日志来添加节点,可能导致数据的不一致(日志被刷新),因此我们引出快照和oplog相结合的方式来添加节点,保证数据的一致性。Sharding 模式适合处理大量数据,它将数据分开存储,不同服务器保存不同的数据,所有服务器数据的总和即为整个数据集。它的核心作用是数据的备份和故障转移。方式:复制一份副本集的物理文件来做初始化数据,然后使用oplog日志来追溯数据,最终达到数据的一致性。

zll4859291的博客 1485

仅使用 Python 创建的 Web 应用程序(前端版本)第03章Streamlit-多页面

接下来,我们将解释多页面切换。Streamlit 没有“多页面”或“页面路由”等功能。另一方面,通过根据用户动作切换要执行的功能,可以使其看起来好像存在“多个页面”。注意:我认为它类似于 SinglePageApplication (SPA)。然而,根据 React、Vue 等中使用的 URL 路径来更改页面的路由很困难。还有一个用于获取查询参数的实验性 API,但如果您确实需要这种功能,我认为认真尝试编写 React 或 Vue 是个好主意。我们来看一个通过按下按钮来切换页面的示例,如下所示。

xianyinsuifeng的博客 1326

28、基准剂量法:原理、应用与计算详解

本文详细介绍了基准剂量法(BMD)的原理、在监管机构中的应用以及具体的计算方法。内容涵盖样本量与BMD的关系、主要监管机构如EPA对BMD的应用、BMD的模型选择与数据拟合过程、拟合优度评估、下置信限(BMDL)计算,以及实验设计对BMD结果的影响。同时,还讨论了剂量指标和响应选择的关键问题,为理解和应用基准剂量法提供了全面的参考。

info6的博客 280

MongoDB副本集(Replica Sets)搭建教程

mongodb副本集的搭建教程

19:30的博客 1万+

零差云控 ZeroErr eRob 电机 CAN、CANopen、EtherCAT、ROS2 机器人开发详细教程

TwinCAT 3(Windows 控制与自动化技术)是 Beckhoff 提供的开发平台,可将任何兼容 PC 转变为实时控制系统,用于管理各种类型的工业自动化系统,如 PLC(可编程逻辑控制器)、运动控制、机器人等。

机器人控制与仿真应用 1万+

MongoDB 副本集-Replica Sets 搭建

1.副本集-Replica Sets 1.1 简介 MongoDB中的副本集(Replica Set)是一组维护相同数据集的mongod服务。 副本集可提供冗余和高 可用性,是所有生产部署的基础。 也可以说,副本集类似于有自动故障恢复功能的主从集群。通俗的讲就是用多台机器进行同一数据的异 步同步,从而使多台机器拥有同一数据的多个副本,并且当主库当掉时在不需要用户干预的情况下自动 切换其他备份服...

dsen726的博客 1344

【AFAC2026金融智能-赛题四】我做了一个疯狂的决定,把Embedding和Reranker全删了

本文介绍了AFAC2026金融智能挑战赛赛道四的解题思路,核心是在500万token的严格限制下实现金融长文本的高效问答。作者通过四步流水线(规划、BM25检索、记忆压缩、LLM推理)优化流程,重点创新在于: 采用零API调用的纯BM25检索,配合多路查询、封面页加权和页面邻接扩展等策略 设计高效的检索算法,从问题中提取专有名词并构建多路查询组合 深入理解评分公式,平衡准确率和token消耗,最终在准确率提升的同时将token消耗从数百万降至百万级 这些创新使方案在严格限制下实现了性能突破,展示了在资源受限

224

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

MongoDB之Replica Sets环境搭建

最近学习MongoDB,这两天在搭建复制集的时候碰到了不少问题,也踩了好多坑,现在在这里记录下来,以供自己和他人参考 (因为本人是初学者,所以遇到的问题也会比较初级,所以本文也比较适合初学者查阅) 背景:虚拟机:VirtualBox linux系统: centOs6.9 MongoDB版本:2.4.8 第一部分安装Mongodb2.4.8 1. 下载MongoDB安装包,直...

weixin_30872789的博客 115

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

第六章:MongoDB Replica Sets复制集的搭建

1. Replica Sets  复制集 MongoDB 支持在多个机器中通过异步复制达到故障转移和实现冗余。多机器中同一时刻只有一台是用于写操作。正是由于这个情况,为 MongoDB 提供了数据一致性的保障。担当Primary角色的机器能把读操作分发给 slave。  MongoDB  高可用可用分两种:    1.1  Master-Slave :主

小伟的专栏 979

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

mongodb transaction + docker 搭建replica sets 测试

基本概念 特性兼容测试 Transactions and Operations Transactions Operations Transactions and Security 事务 与 会话 支持mognodb4.0的驱动版本 Transactions and Locks 生产考虑 运行限制 获取锁限制 Pending DDL Operations and Transactions ...

wisfy_21的博客 851

利用Mongodb的复制集搭建高可用分片,Replica Sets + Sharding的搭建过程

参考资料 reference: http://mongodb.blog.51cto.com/1071559/740131 http://docs.mongodb.org/manual/tutorial/deploy-shard-cluster/#sharding-setup-shard-collection 感谢网友Mr.Sharp,他给了我很多很有用的建议。 概念梳理 Sharded...

csdn's blog 1万+

mongodb replica sets(复制集)配置与搭建

一、节点类型 standard:常规节点,它存储一份完整的数据副本,参与选举投票,有可能成为primary节点。 passive:存储了完整的数据副本,参与投票,不能成为primary节点。 arbiter:仲裁节点,只参与投票,不接收复制的数据,也不能成为primary节点。   一个repica sets节点数量最好为奇数(odd)。   二、relica sets 集群三节点分

andyzhaojianhui的专栏 941

MongoDB Replica Sets +Sharding高可用集群搭建

集群由三台服务器(假定ip地址为:serverA,serverB,serverC)组成,采用mongodb的复制集+分片(Replica Sets+Sharding) 实现集群的高可靠/高可用以及数据读写的负载均衡。 三台机器分成两个复制集,两个复制集组成一个集群的两个分片(shard1和shard2)。具体如下:   1、ServerA的s1-1 / ServerB的s1-2 / Server...

weixin_34205076的博客 119

mongodb复制集(replica sets)+分片(sharding)环境搭建

1.创建数据目录 --server a: # mkdir -p /data/shard1_1 # mkdir -p /data/shard2_1 # mkdir -p /data/config --server b: # mkdir -p /data/shard1_2 # mkdir -p /data/shard2_2 # mkdir -p /data/config --server c: #...

数据库生态圈(RDB & NoSQL & Bigdata)——专注于关系库应用与研究(Oracle & Mysql & Postgresql & SQL Server ) 489

第十章:MongoDB Replica Sets + Sharding搭建

MongoDBAuto-Sharding  解决了海量存储和动态扩容的问题,但离实际生产环境所需的高可靠、高可用还有些距离。 所以有了” Replica Sets + Sharding”的解决方案:   Shard: 使用  Replica Sets,确保每个数据节点都具有备份、自动容错转移、自动恢复能力。  Config:使用3 个配置服务器,确保元数据完整性

小伟的专栏 687

采用Replica Sets + Sharding方式搭建MongoDB高可用集群

3.搭建 3.1环境准备   在 Mongo 的官网下载 Linux 版本安装包,然后解压到对应的目录下;由于资源有限,我们采用 Replica Sets + Sharding 方式来配置高可用。结构图如下所示:     这里我说明下这个图所表达的意思。 l Shard服务器:使用Replica Sets确保每个数据节点都具有备份、自动容错转移、自动

xincai的专栏 934
上一篇: mongodb java接入
下一篇: java使用mongodb问题集
「已注销」
博客等级 码龄20年 47粉丝 107原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值