mongodb的副本集Replica Set

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

mongodb不推荐主从复制,推荐建立副本集(Replica Set)来保证1个服务挂了,可以有其他服务顶上,程序正常运行,几个服务的数据都是一样的,后台自动同步


【要搭建一个稳定的mongodb工程,副本集是必须的,因为他可以当你的主服务器挂掉后,根据选举机制自动选举出1个最适合的从服务器来做主服务器继续运行】


参考http://snoopyxdy.blog.163.com/blog/static/60117440201241694254441/

Replica Set使用的是n个mongod节点,构建具备自动的容错功能(auto-failover),自动恢复的(auto-recovery)的高可用方案。
使用Replica Set来实现读写分离。通过在连接时指定或者在主库指定slaveOk,由Secondary来分担读的压力,Primary只承担写操作。
对于Replica Set中的secondary 节点默认是不可读的。 


--------------------------------------------------------
创建4个,3个MONGODB服务器,1个仲裁服务器
步骤1【创建数据存放目录】
分别创建4个节点分配数据存放的位置空间
$  mkdir -p /scmgt/data/r0
$  mkdir -p /scmgt/data/r1
$  mkdir -p /scmgt/data/r2
$  mkdir -p /scmgt/data/r3


步骤2【开启3个mondodb服务】
后台开启3个服务,查看端口是否暂用命令netstat -apn|grep 1000 
/scmgt/mongodb/mongodb/bin/mongod  --replSet gtSet --dbpath=/scmgt/data/r0 --logpath=/scmgt/mongodb/ro_log --logappend --port=9933 --fork
/scmgt/mongodb/mongodb/bin/mongod  --replSet gtSet --rest --dbpath=/scmgt/data/r1 --logpath=/scmgt/mongodb/r1_log --logappend --port=9934 --fork
/scmgt/mongodb/mongodb/bin/mongod  --replSet gtSet --dbpath=/scmgt/data/r2 --logpath=/scmgt/mongodb/r2_log --logappend --port=9935 --fork
/scmgt/mongodb/mongodb/bin/mongod  --replSet gtSet --dbpath=/scmgt/data/r3 --logpath=/scmgt/mongodb/r3_log --logappend --port=9936 --fork

【-replSet gtSet:表示副本集的名字为“wzh”,这里的名字可以任意取;】
【--rest:是打开web监控页面,比如我们这里监听10001端口,则打开http://10.1.49.225:9934/就可以看到这个mongodb数据库进程的信息】
【启动不起来,如果出现 child process failed, exited with error number 100报错,请删除data下面的mongod.lock】
【查看logpath日志,提示replSet can't get local.system.replset config from self or any seed (EMPTYCONFIG),这是因为我们还没有初始化这个set.没有执行第三步】






步骤3【初始化SET】
登陆mongodb后台:
cd /scmgt/mongodb/mongodb/bin          
./mongo --port 9933
把下面config写入控制台
config = {_id: 'gtSet', members: [
      {_id: 0, host: 'localhost:9933'},
      {_id: 1, host: 'localhost:9934'},
      {_id: 2, host: 'localhost:9935'},
      {_id: 3, host: 'localhost:9936',arbiterOnly:true}]
}
 然后执行rs.initiate(config);
 
【arbiterOnly(false):如果是true,则表示这个成员为仲裁节点,不接收数据;】
【priority(1.0):权重,更高的权重会被选举为主节点】
查看日志,如果出现
 rs.initiate(config); rs.initiate(config);
{
        "info" : "Config now saved locally.  Should come online in about a minute.",
        "ok" : 1
}表示将在1分钟后初始化完毕


之后执行 rs.status(),查看详细
【这里有个值"myState",如果这个值为1,说明是主控节点(master);如果是 2 ,说明是从属节点(slave).】




----------------------搭建完毕,添加数据,来需要验证的--------------------
1:主从服务器数据是否同步,从服务器没有读写权限
a:向主服务器写入数据   ok   后台自动同步到从服务器,从服务器有数据
b:向从服务器写入数据  false 从服务器不能写
c:主服务器读取数据  ok 
d:从服务器读取数据  false 从服务器不能读




2:关闭主服务器,从服务器是否能顶替
kill -2 9933的pid
mongo的命令行执行rs.status()  发现PRIMARY替换了主机了


3:关闭的服务器,再恢复,以及主从切换
a:直接启动关闭的服务,rs.status()中会发现,原来挂掉的主服务器重启后变成从服务器了
b:额外删除新的服务器  rs.remove("localhost:9933"); rs.status()
c:额外增加新的服务器 rs.add({_id:0,host:"localhost:9933",priority:1});
d:让新增的成为主服务器   rs.stepDown(),注意之前的 priority投票
     
4:从服务器读写
db.getMongo().setSlaveOk();
db.getMongo().slaveOk();//从库只读,没有写权限,这个方法java里面不推荐了
db.setReadPreference(ReadPreference.secondaryPreferred());//在复制集中优先读secondary,如果secondary访问不了的时候就从master中读
db.setReadPreference(ReadPreference.secondary());//只从secondary中读,如果secondary访问不了的时候就不能进行查询


-------------------------------------------------------------------
日志查看
MongoDB的Replica Set 架构是通过一个日志来存储写操作的,这个日志就叫做”oplog”,它存在于”local”数据库中,oplog的大小是可以通过mongod的参数”—oplogSize”来改变oplog的日志大小。


use local
switched to db local
db.oplog.rs.find()
{ "ts" : { "t" : 1342511269000, "i" : 1 }, "h" : NumberLong(0), "op" : "n", "ns" : "", "o" : { "msg" : "initiating set" } }


字段说明:
ts: 某个操作的时间戳
op: 操作类型,如下:
i: insert
d: delete
u: update
ns: 命名空间,也就是操作的collection name
o: document的内容
MongoDB副本集(Replica Set)操作详解 MongoDB副本集是保障MongoDB数据高可用性和灾难恢复能力的重要技术。通过合理地配置和使用副本集,我们可以提高MongoDB服务的稳定性和可靠性。在实际操作中,建议仔细阅读官方文档,并根据实际需求进行配置和优化。 阅读详情

相关推荐

MongoDB副本集replica set部署

Replication Set概述 MongoDB中的副本集是一组维护相同数据集合的 mongod进程,副本集提供了冗余和高可用性。 通过维护冗余的数据副本,能够实现数据的备份,读写分离和自动故障转移。 1.环境准备 三个以上的mongodb节点(或多实例) 1.1 多实例环境准备 以mongodb3.6.21为例 1.2 多个端口: 28017、28018、28019、28020 1.3 多套目录: mkdir -p /data/mongodb/{28017,28018,28019,28020}/

easydb.net 359

MongoDB-副本集-Replica Sets

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

m0_51607909的博客 2775

微波传感器 - 从原理到实战,解锁非接触感知新维度

本文深入解析微波传感器的工作原理,重点阐述了其基于多普勒效应的非接触感知机制,并对比了红外、超声波等技术的优劣。通过树莓派Pico与RCWL-0516模块的实战案例,展示了如何构建区域入侵检测器,并探讨了微波传感器在智能家居、工业自动化及汽车电子等领域的广阔应用前景。

weixin_29306571的博客 225

mongodb 集群Replica Set搭建

mongo集群有三种方式 1.Replica Set副本 2.Sharding分片 3.Master-slave主备 通常来说,我们用第1、2种较多,第3种官方并不推荐。这里我们主要介绍Replica Set副本集。 Replica Set 中文翻译叫做副本集,不过我并不喜欢把英文翻译成中文,总是感觉怪怪的。其实简单来说就是集群当中包含了多份数据,保证主节点挂掉了,备节点能继...

xueyunzi1的博客 1581

从理论到实践:用CST微波工作室完成单站雷达RCS仿真的完整指南

本文提供了一份利用CST微波工作室进行单站雷达RCS仿真的完整实践指南。文章深入剖析了从求解器选择(重点推荐积分方程法)、模型与材料设置、平面波激励定义到后处理分析的完整逻辑链条,旨在帮助工程师不仅完成仿真,更能理解其背后的物理原理与工程考量,从而高效、精准地评估目标的电磁散射特性。

weixin_29256771的博客 180

advanced installer 打包Flutter的Windows程序安装包(基本打包、开机自启、定时自动检测升级、包含卸载程序)

advanced installer 打包Flutter的Windows程序安装包(基本打包、开机自启、定时自动检测升级、包含卸载程序)

qq_45634989的博客 2878

Hello ”树“先生

简要概述二叉树,全文重点放在AVL树、B树、B+树和红黑树,纯干货。

试问道几许 722

【ros】ROS1的安装和相关使用方法

主要学习ros相关内容

Greary的博客 2379

MongoDB Replica Set使用经验分享理论篇

MongoDB Replica Set是MongoDB官方推荐的主从复制和高可用方案,用于替代原有的Master-Slave主从复制方案。Replicat Set具有自动切换功能,当Primary挂掉之后,可以自动由Replica Set中的某一个Secondary来切换到Primary,以实现高可用的目的,不像MySQL那样需要使用第三方软件。目前很多游戏公司都开始使用Mo...

weixin_34409741的博客 359

AUTOSAR OS Counter讲解

Counter(计数器)以tick为单位记录操作系统中发生了多少“事情”。tick(滴答)是一个抽象的单位。时间,例如毫秒,微妙,分钟等,然后计数器计算过去了多少时间旋转,例如以度或分钟为单位,计数器计算物体旋转了多少按钮按下,计数器计算按钮按下多少次错误,计数器计算错误发生的频次中断(有时是任务)用于驱动一个计数器。该驱动程序负责进行正确的OS API调用来滴答计数器,或者告诉OS计数器已经滴答到一个所需的值。

酒无忧的博客 1074

获取微信公众号历史文章列表页链接

action=home&__biz=这里替换你的biz==4、链接分享、发送到微信即可访问,注意该链接仅可在微信客户端使用,外部浏览器无法打开。3、拼接通用公式生成链接即为微信公众号历史文章列表链接。,如下图找到红框部分值,复制即为上文biz值。2、浏览器右键查看网页源码,新开页面搜索(1、复制公众号任意文章的链接在浏览器打开。

珞瑜的博客 7955

MongoDB 使用Replica Set(副本集)方式搭建

MongoDB集群方案 一. mongoDB简介 MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。 MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bjson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持

wh_huan的博客 1100

基于深度学习YOLOv5的草莓成熟度检测系统详解(深度学习模型+UI界面+Python代码+训练数据集)

数据采集与预处理模块:负责收集草莓图像,并进行数据增强和标注。深度学习模型训练模块:使用YOLOv5模型进行草莓成熟度检测模型的训练。模型推理模块:加载训练好的模型,对输入图像或视频进行草莓成熟度检测。UI界面模块:提供用户交互界面,方便用户上传图像或视频进行成熟度检测。本文详细介绍了基于YOLOv5的草莓成熟度检测系统的构建过程,包括数据集的构建、模型的训练与推理、以及UI界面的设计。通过本文的指导,读者可以快速搭建一个高效的草莓成熟度检测系统,并应用于实际场景中。

斌擎科技 525

MongoDB(9)什么是MongoDB的副本集(Replica Set)?

MongoDB副本集通过多节点数据复制实现高可用性和数据冗余,包含主节点(Primary)和副本节点(Secondary)。主节点处理写操作,副本节点同步数据并支持读扩展。当主节点故障时,副本集自动选举新主节点,保障服务连续性。配置步骤包括:1)启动多个MongoDB实例;2)初始化副本集;3)通过应用程序连接副本集进行读写操作。副本集还支持仲裁节点(Arbiter)参与选举,确保集群拥有奇数成员。该机制有效提升了数据库的容灾能力和读取性能。

qq_43012298的博客 867

一.镜头知识之焦点,焦距,有效焦距,前焦距,后焦距

由光学系统中镜片的最后一面到像面的距离。

AIoT深度探索者 | 嵌入式系统架构师 深耕物联网(IoT)与人工智能(AI)融合技术,聚焦​​边缘计算、图像开发、低功耗通信协议​​,致力于智能硬件,关注我获取最新技术文章信息与海量资源~ 5582

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

mongodb 副本集Replica Set的keyfile验证

      部署好mongodb(Replica Set模式)后,需要为应用程序创建数据库以及登录用户,我们知道,需要在启动配置文件中加入auth=true,但是此时登录主节点会失败(实际登录的是OTHER节点),主要原因是只采用了auth验证,未添加keyFile的验证。1.    查看官方文档Youcan authenticate members of replica sets and sha...

u013867292的博客 1727

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Mongodb 的副本集(Replica Set)部署与配置

这里写目录标题简介副本集的三个角色读写分离,负载均衡与高可用MongoDB 复制主从复制和副本集区别副本集架构副本集的创建创建主节点启动主节点服务创建副本节点创建仲裁节点初始化配置副本集和主节点使用客户端命令连接主节点准备初始化新的副本集使用默认的配置初始化副本集查看副本集的配置内容查看副本集状态添加副本从节点 简介 Mongodb 的副本集就是维护相同数据的多个 MongoDB 服务集合。 副本集的三个角色 Replica Set 包含三类角色 主节点(Primary) 接收所有的写请求,然后把修改同步到

御剑长歌的博客 7450

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

MongoDB副本集replica set状态检查

背景 副本集状态命令检查 写在前面 摘录自https://www.cnblogs.com/lijiaman/p/13215533.html link 查看副本集状态 rs.status() 检查"health" : 1, "ok" : 1, 检查复制滞后 rs.printSlaveReplicationInfo() source: 192.168.68.61:27017 syncedTo: Tue Dec 22 2020 08:29:49 GMT+0000 (UTC)

一杯Mojito可以吗 2326

MongoDB系列之副本集Replica Set

副本集,适用场景,节点类型,成员属性,成员类型,成员状态; 部署安装,添加节点,选举,写关注,读偏好,读写模式,命令

lonelymanontheway的博客 2823

MongoDB 副本集(Replica Set) 的工作机理

所有读都走主,能保证“读到你刚写的”(read-your-writes),一致性最好。典型默认:心跳约每 2s,选举超时 ~10s(不同版本/配置略有差异)。跨分片事务需分片集群支持(4.2+)。为了降低“从库过旧”的风险,可配。:多文档事务(在副本集内)需要走。限制从库最大允许滞后。:确认写入的“应答级别”

喝醉酒的小白 1575

【MongoDB】基于Docker的MongoDB replica set(副本集)搭建

最近项目中需要用到MongoDB,由于资源有限,手头上就只有两台云服务器和一些本地服务器,购买阿里云的MongoDB最低配的1C2G3节点的一年也要三四千块钱,索性自己搭一个吧。 以下理论性质的内容是我用两天时间从各个博客汇总过来,再经过我个人的理解总结出来的,所以可能会有偏差,还望不吝赐教 MongoDB集群分为三种: 主从复制模式(Master Slave Replication) 副本集模式 分片模式 ##主从复制模式(Master Slave Replication) 从官方文档中可以看到,

MacwinWin的博客 2535

MongoDB 副本集Replica Set搭建及操作

文章目录一、搭建三个Mongodb实例二、初始化副本集三、功能测试3.1 数据同步3.2 自动故障转移3.3 维护副本集群3.3.1 增删节点3.3.2 替换副本集节点3.3.3 手动切换主节点Primary3.3.4 添加仲裁节点3.3.5 添加备份节点3.3.6 添加延迟节点四、读写分离 一、搭建三个Mongodb实例 搭建步骤见:MongoDB的搭建。规划如下: ip MongoDB端口 副本角色 Mongodb版本 172.16.113.137 27017 Primary 3.2.1

耿进 1241

MongoDB 副本集自动复制 Replica Set

MongoDB部署实验系列文章,MongoDB做为NoSQL数据库,最近几年持续升温,越来越多的企业都开始尝试用MongoDB代替原有Database做一些事情。MongoDB也在集群,分片,复制上也有相当不错的的表现。我通过将做各种MongoDB的部署实验进行介绍。 关于作者: 张丹(Conan), 程序员Java,R,PHP,Java...

fens的博客 389

mongodb副本集(Replica Set)搭建

mongodb副本集是有故障恢复功能的主从集群,由一个primary节点和一个或多个secondary节点组成。 同步过程: Primary节点写入数据,Secondary通过读取Primary的oplog得到复制信息,开始复制数据并且将复制信息写入到自己的oplog。如果某个操作失败,则备份节点停止从当前数据源复制数据。如果某个备份节点由于某些原因挂掉了,当重新启动后,就会自动从oplog的最

AI开源工具分享 1654

MongoDB副本集replica set(基础知识)

背景 2.7之前是主从,之后推荐副本集 写在前面 摘录自https://www.cnblogs.com/lijiaman/p/13184308.html link 概述 对于副本集,官方文档是这样定义的:副本集是一组mongod维护相同数据的实例,一个副本集包含多个数据承载节点和一个仲裁节点(可选),在数据承载节点中,只有一个成员节点被视为主节点,主节点能够进行读写操作,其它节点则被视为次要节点,次要节点只能进行读操作。 1. PSS架构 “一主两从”架构,如果主节点不可用,则符合条件的次要节点将进行选举以

一杯Mojito可以吗 246

mongodb主从配置:副本集replica set

1. 副本集 mongodb的主从部署,常用方式为副本集(replica set)方式。 replica set为多个mongod实例,组成一组group,包括一个主primary,多个从secondary。 这种一主多从的方式的好处是,mongodb自运维,如果主服务器挂了,会通过心跳自动检测,选举出一个新的主来。不需要人工处理。

yonggang7的专栏 1521
上一篇: mongodb分片时的片键选择
下一篇: mongodb的读写分离
过天
博客等级 码龄18年 358粉丝 72原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值