【MongoDB】windows平台搭建Mongo数据库复制集(类似集群)(转)
原文链接:【MongoDB】windows平台搭建Mongo数据库复制集(类似集群)(一)
Replica Sets(复制集)是在mongodDB1.6版本开始新增的功能,它可以实现故障自动切换和自动修复功能成员节点的功能,各个DB之间的数据完全一致,大大降低了单点故障的风险。
【】
以上图示是三个节点的Replica Set架构。该图来源于红丸编写的《Mongodb管理与开发精要》这本书。从上图可以看出,结构类似与一个集群,其实完全可以当做一个集群。因为它确实和集群实现的作用是相同的。
一、部署Replica Sets.
接下来显示如何在一台服务器上面演示部署3个节点的Replica Sets
二、启动Replica服务
分别打开三个命令窗口,然后分别执行下面三句话。
- mongod.exe --replSet rs1 --keyFile "D:\Program Files\mongodb\data\replica\key\r0" --port 28010 --dbpath "D:\Program Files\mongodb\data\replica\data\r0" --logpath "D:\Program Files\mongodb\data\replica\log\r0.log" --logappend
- mongod.exe --replSet rs1 --keyFile "D:\Program Files\mongodb\data\replica\key\r1" --port 28011 --dbpath "D:\Program Files\mongodb\data\replica\data\r1" --logpath "D:\Program Files\mongodb\data\replica\log\r1.log" --logappend
- cd /d D:\Program Files\mongodb\bin
- mongod.exe --replSet rs1 --keyFile "D:\Program Files\mongodb\data\replica\key\r2" --port 28012 --dbpath "D:\Program Files\mongodb\data\replica\data\r2" --logpath "D:\Program Files\mongodb\data\replica\log\r2.log" --logappend
三、登录客户端,初始化Replica Sets环境
【MongoDB】windows平台搭建Mongo数据库复制集(类似集群)(二)
在上篇博客中,我们主要阐述了在windows平台下如何搭建mongodb复制集。详细博客地址:
由于篇幅有限在上篇没有对结果进行验证,在本篇博客中我们主要进行测试:
通过rs.status()命令我们可以查询到各个节点运行正常。
一、数据同步测试
在28011、28012端口上进行插入:
查看原因:网上找到答案
首先这是正常的,因为SECONDARY是不允许读写的, 在写多读少的应用中,使用Replica Sets来实现读写分离。通过在连接时指定或者在主库指定slaveOk,由Secondary来分担读的压力,Primary只承担写操作。对于replica set 中的secondary 节点默认是不可读的。
二、故障自适应测试
当检测时主库停止心跳了后,28012把自己选举为主库,请看如下:
28012上面就可以进行插入了:
28011上面现在还是不能插入
【MongoDB】windows平台搭建Mongo数据库复制集(类似集群)(三)
关于windows平台搭建Mongo数据库复制集这个话题,我已经在前面写了两篇博客
第一篇: 如何在windows平台搭建Mongo数据库复制集
第二篇: 数据同步和故障自适应测试
在本篇里面,咱们重点总结一下复制集,以及分析一下它的工作原理
一、常见场景
应用程序和数据库之间的网络连接丢失
计划停机、断电、数据库服务硬盘故障等等
复制可以进行故障转移,复制能让你在副本间均衡读负载,保证复制节点与主节点保持同步
二、工作原理
副本集依赖于两个基础机制:oplog和“心跳”(heartbeat).oplog让数据的复制成为可能,而“心跳”则监控健康情况并出发故障转移;
2.1 关于oplog
oplog是MongoDB复制的关键,oplog是一个固定集合,位于每个复制节点的local数据库中,记录了对数据库的所有变更,每次客户端向主节点写入数据,就会自动向主节点的oplog里添加爱一条记录,其中博客了足够的信息来再现数据。一旦写操作被复制到某个从节点上,从节点的oplog也会保存一条记录。
local数据库里保存了所有的副本集元数据和oplog,因为本身不能被复制;
那我们详细在看oplog
在此注意,每个从节点都有一份自己的oplog,从节点使用长轮询的方式立即应用来自主节点oplog的新条目。如果丛节点在主节点的oplog中找不到自己要同步的点,那么就永久停止复制。这是会在日志中有如下异常:
replcation data too stale, halting
caught syncException
调整oplog的大小,利用命令db.getReplicationInfo()可以查看分配了多少oplog空间,同时利用如下命令可以改变默认oplog大小
- mongod.exe --replSet myapp --oplogSize 1024
2.2 心跳检测以及故障转移
副本集的心跳检测有助于选举和故障转移。默认情况下,每个副本集成员每隔2s ping一次其他成员。这样一来系统就可以弄清自己的健康状况了。运行rs.status()也可以看到健康状态。
注意:在三个节点中,如果两个从节点都被杀掉了,在主节点的log会多如下一句话:
replSet can't see a majority of the set,
replSet Secondary
意思是没有多数节点,主节点就把自己降级为从节点;
三、管理
由于副本集存在许多潜在的复杂配置项,接下来我们详细介绍这些复杂配置项目;
3.1 配置细节
3.2 故障转移与恢复
3.3 部署策略
相关文章
- mongoDB Robo 3T 执行命令行shell
- 通过cmd 使用 InstallUtil.exe 命令 操作 windows服务 Windows Service
- 8天学通MongoDB——第二天 细说增删查改
- [MEAN Stack] First API -- 1. with Node.js, Express and MongoDB
- mongodb基础整理篇————聚合操作[三]
- MFC Windows 程序设计[二十四]之windows目录展示(附源码)
- OCR - 微软windows 11系统自带的Windows OCR功能初体验
- MongoDB详解(五)——MongoDB数据库简单使用
- [MongoDB] Mongodb攻略
- Install MongoDB Community Edition on Windows
- 【转】windows下mongodb安装与使用整理
- mongoDB BI 分析利器 - PostgreSQL FDW (MongoDB Connector for BI)
- mongodb去除重复的数据
- windows mongodb最常用命令简单归纳
- MongoDB在Windows系统下的安装和启动
- 【MongoDB】Serveral common command of MongoDb
- MongoDB副本集原理
- Windows系统下正确安装MongoDB
- mongodb与SQL相应关系表
- MongoDB(八)Mongodb——GridFS存储
- MongoDB全文搜索——目前尚不支持针对特定field的搜索
- YCSB benchmark测试mongodb性能——和web服务器测试性能结果类似
- mongodb replica set 配置高性能多服务器详解
- Windows安装MongoDB 4.0并赋予用户访问权限
- MongoDB(1)-CentOS安装MongoDB详细操作
- MongoDB(一)
- Mongodb的安装部署