在本篇里面,咱们重点总结一下复制集,以及分析一下它的工作原理

一、常见场景

应用程序和数据库之间的网络连接丢失

计划停机、断电、数据库服务硬盘故障等等

复制可以进行故障转移,复制能让你在副本间均衡读负载,保证复制节点与主节点保持同步

二、工作原理

副本集依赖于两个基础机制: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大小

[html] view plaincopy
  1. 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 配置细节

可以用rs.initiate()和rs.add()方法初始化副本集合。利用config.members.push({})增加节点;
其他的一些方法:

3.2 故障转移与恢复

恢复是在故障后讲副本集还原到原始状态的过程。有两大类故障需要处理。第一类就是包含所有的无损故障,直接重启服务就好。第二种是明确故障,主要是数据文件损坏等等,非正常关闭mongodb服务,如果不更改主机名称和端口号则重新执行数据文件夹,启动后数据后同步过来。如果修改属性,则要用rs.reconfig();

3.3 部署策略

副本集最多包含12个节点,提供自动故障转移的最小副本集合配置就是先前例子中。包含两个副本和一个仲裁节点。在生产环境中,仲裁机节点可以运行在应用服务器上,而副本则运行在自己的机器上。对于多数环境而言,这样配置经济又高校
转自:http://blog.csdn.net/sxb0841901116/article/details/40686521
关于mongodb的副本集的搭建与详解,也可参考:http://blog.csdn.net/mchdba/article/details/51638131

转载于:https://www.cnblogs.com/GtShare/p/7661432.html

windows平台搭建Mongo数据库复制集(类似集群)(三)相关推荐

  1. windows平台搭建Mongo数据库复制集(类似集群)(一)

    Replica  Sets(复制集)是在mongodDB1.6版本开始新增的功能,它可以实现故障自动切换和自动修复功能成员节点的功能,各个DB之间的数据完全一致,大大降低了单点故障的风险. [] 以上 ...

  2. 在windows平台搭建基于nginx的直播服务器

    1.nginx简介 Nginx本身是一个非常出色的HTTP服务器,FFMPEG是非常好的音视频解决方案.这两个东西通过一个nginx的模块nginx-rtmp-module,组合在一起即可以搭建一个功 ...

  3. Windows平台搭建Mantis服务器

    Windows平台搭建Mantis服务器 1.资源下载 操作系统:Windows_7_Enterprise_SP1_x64 XAMPP版本:xampp-win32-7.2.6-0-VC15 Manti ...

  4. 微服架构基础设施环境平台搭建 -(四)在Kubernetes集群基础上搭建Kubesphere平台

    微服架构基础设施环境平台搭建 -(四)在Kubernetes集群基础上搭建Kubesphere平台 通过采用微服相关架构构建一套以Kubernetes+Docker为自动化运维基础平台,以微服务为服务 ...

  5. Windows平台搭建-----C语言

    上期我们已经进行Linux的平台搭建,今期我们就来搭建下我们最常用的.最适合初学者的一种方式,那就是搭建Windows平台开发环境,只需要两种工具即可,一个就是编辑器(编辑代码的工具),另一个就是编译 ...

  6. Windows 平台安装 MongoDB数据库(检测是否安装成功、启动和关闭MongoDB数据库)

    参考: 菜鸟教程: Windows 平台安装 MongoDB | 菜鸟教程 windows平台mongoDB安装配置 - ymwangel - 博客园 1.安装: 去官网下载MongoDB Commu ...

  7. 【kafka】 windows平台搭建及使用

    一.安装 kafka 需要java环境: kafka 最新版本内置了 zookeeper,所以不需要安装zookeeper: 下载kafka最新版本,因为下载的是tgz文件,所以不需要安装,解压到相应 ...

  8. 区块链开发(一)Windows平台搭建基于以太坊的区块链开发环境

    引言 Ethereum(以太坊)是一个使开发人员能够建立和发布下一代分布式应用的公共区块链平台. 通过其专用加密货币以太币(Ether)提供去中心化的虚拟机(称为"以太虚拟机"Et ...

  9. 基于Linux(LAMP)平台搭建MYsql数据库(二)

    接着上一章安装MySQL数据库<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" ...

最新文章

  1. R语言-包的安装、载入及使用方法
  2. linux进程自动关闭与dmesg的使用
  3. 【ionic App问题总结系列】ionic 如何更新app版本
  4. Windows杀死结束进程图形化界面操作方法
  5. Error: Another program is already listening on a port that one of our HTTP servers is configured to
  6. leetcode586. 订单最多的客户(SQL)
  7. 开发指南专题二:JEECG微云快速开发平台JEECG框架初探
  8. 不需要登陆的灵感笔记私人版正式上线,迭代优化中。
  9. HTML5 canvas游戏工作原理
  10. Zend Studio使用Xdebug调试
  11. Cocos2d-x场景(Scene)详解
  12. 将linux系统分区变成逻辑卷,linux运维基础知识-系统分区及LVM逻辑卷的创建
  13. 【原创】 ES5高效封装WIN10系统教程2020系列(六)ES5封装
  14. 智慧机场室内导航系统-采用蓝牙定位方案-导乘整体解决方案
  15. ubuntu16.04安装网易云音乐
  16. matlab图像身高测量,基于Kinect景深图像的快速身高和体重测量方法
  17. CentOS7.6 部署 Snipe-it 资产管理系统
  18. 【转载】8B/10B Encode/Decode详解
  19. 【现代密码学原理】——传统加密技术(学习笔记)
  20. 金山发布毒霸V及网镖V新品 坚持高定价策略 (转)

热门文章

  1. MySQL导入sql 文件的5大步骤
  2. python itchat 无法登录_利用python实现在微信群刷屏的方法
  3. html邮件模板编辑器_免费电子邮件群发工具推荐「aweber」
  4. python爬取小说章节信息用pygame进行数据显示_爬虫不过如此(python的Re 、Requests、BeautifulSoup 详细篇)...
  5. es6 ik分词热更新MySQL_rollup环境搭建(es6转es5、压缩、本地服务器、热更新)
  6. java 图片手动切换_JavaScript学习案例之手动切换轮播图片
  7. 插值算法C实现(二元全区间)
  8. MFC多线程同步互斥
  9. python直接执行代码漏洞_修复Python任意命令执行漏洞
  10. html5 图形化操作,HTML5的图像及动画图形操作-20210525222751.ppt-原创力文档