一、读写分离的概念

    读写分离,基本的原理是让主数据库处理事务性增、改、删操作(INSERT、UPDATE、DELETE),而从数据库处理SELECT查询操作。数据库复制被用来把事务性操作导致的变更同步到集群中的从数据库。

    读写分离的目的是为了实现高并发场景下的请求分流,避免对数据库的访问过于集中,导致性能下降甚至是宕机。

  二、主从复制介绍

    在MongoDB的集群中,会有指定为master的主节点存在,该节点用于被客户端进行数据的增删改操作。同时集群中还会有被指定为slave的节点存在,即从节点,该节点主要接收来自于客户端的读,检索操作,并不具备增删改操作的功能。

    在master节点处理完增删改操作后,会实时同步数据到与其绑定的从节点上,实现主从复制至少要有两个数据库实例,并且每个从节点需要知道主节点的地址,如果是在linux中记得开通主从端口的防火墙。

    主从复制的优势在于比较灵活,适用于数据备份,故障后人工进行数据恢复,以及对读数据的扩展等。

    

  三、主从复制局限

    (1)MongoDB目前建议使用副本集实现集群管理,不建议使用简单的主从复制,副本集在本MongoDB系列博文中有介绍。

    (2)主从复制在master宕机后,没有自动选举master机制,导致主节点服务一挂,便不能对外提供增删改操作。

    (3)所有增删改操作都是针对主节点进行操作,可能导致主节点性能下降。

    (4)从节点对主节点的数据都是全量拷贝,对主从节点的压力都是不小的。

  四、主从复制简单配置及实现

    设备有限,为方便简单的实现,可在一台机器上模拟主节点和从节点。在C盘创建master目录,在E盘创建slave目录,master目录作为主节点数据存放的目录,slave目录作为从节点数据存放的目录。

    注意:主节点和从节点要指定不同的端口。
    启动主节点:mongod --dbpath C:\master --port 666 --master
    启动从节点:mongod --dbpath E:\slave --port 888 --slave --source localhost:666

    启动成功后就可以连接主节点进行操作了,而对主节点的操作会同步到从节点,而对从节点进行插入操作时,会报not master的提示并拒绝写入数据。

    配置实现解释

    master:默认为false,若要设置当前节点为主节点,需要在服务端启动添加--master
    slave:默认为false,若要设置当前节点为从节点,需要在服务端启动添加--slave
    source:默认为空,用于从节点,指定从节点的复制来源,即主节点所在的地址,格式为:<host><:port>
    only:默认为空,用于从节点,主动复制默认复制主节点上所有的数据库,通过设置此项指定需要复制的数据库名称
    slavedelay:设置从节点同步主节点的延迟时间,用于从节点设置,默认为0,单位秒。
    autoresync:默认为false,用于从节点设置。是否自动重新同步。设置为true,如果落后主节点超过10秒,会强制从节点自动重新同步。如果oplogSize太小,此设置可能有问题。如果oplog大小不足以存储主节点的变化状态和从节点的状态变化之间的差异,这种情况下强制重新同步是不必要的。当设置autoresync选项设置为false,10分钟内从节点不会进行大于1次的自动重新同步。

    什么是oplog?

    主节点的操作会被记录为oplog,存储在系统数据库local的集合oplog.$main中,这个集合中的每个文档都代表主节点的一个操作(不包括查询),从节点定期从主服务器获取oplog数据,并在本机进行执行,oplog使用的是固定集合,随着操作的逐渐增加,新的文档会逐渐覆盖旧的文档。

    

MongoDB主从复制+集群的更多相关文章

  1. 基于MongoDB2.6版本配置MongoDB主从复制集群架构

    1:集群环境说明:mongodb1:192.168.43.10.mongodb2:192.168.43.11.mongodb3:192.168.43.12.且基于主机名相互通信/etc/hosts文件 ...

  2. 2020重新出发,NOSQL,MongoDB分布式集群架构

    MongoDB分布式集群架构 看到这里相信你已经掌握了 MongoDB 的大部分基本知识,现在在单机环境下操作 MongoDB 已经不存在问题,但是单机环境只适合学习和开发测试,在实际的生产环境中,M ...

  3. MySQL主从复制原理及配置详细过程以及主从复制集群自动化部署的实现

    一.复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,并重 ...

  4. elasticsearch与mongodb分布式集群环境下数据同步

    1.ElasticSearch是什么 ElasticSearch 是一个基于Lucene构建的开源.分布式,RESTful搜索引擎.它的服务是为具有数据库和Web前端的应用程序提供附加的组件(即可搜索 ...

  5. MongoDB分片集群原理、搭建及测试详解

    随着技术的发展,目前数据库系统对于海量数据的存储和高效访问海量数据要求越来越高,MongoDB分片机制就是为了解决海量数据的存储和高效海量数据访问而生. MongoDB分片集群由mongos路由进程( ...

  6. mongodb分片集群

    第一章 1.mongodb 分片集群解释和目的 一组Mongodb复制集,就是一组mongod进程,这些进程维护同一个数据集合.复制集提供了数据冗余和高等级的可靠性,这是生产部署的基础. 第二章 1. ...

  7. mongodb分布式集群搭建手记

    一.架构简介 目标单机搭建mongodb分布式集群(副本集 + 分片集群),演示mongodb分布式集群的安装部署.简单操作. 说明在同一个vm启动由两个分片组成的分布式集群,每个分片都是一个PSS( ...

  8. mongodb 搭建集群(分片+副本集)

    mongodb  搭建集群(分片+副本集) 一.搭建结构图: 二.搭建步骤:

  9. TiDB和MongoDB分片集群架构比较

    此文已由作者温正湖授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 最近阅读了TiDB源码的说明文档,跟MongoDB的分片集群做了下简单对比. 首先展示TiDB的整体架构 M ...

随机推荐

  1. C++ 运算符重载一(二元运算符重载)

    //二元运算符重载 #include<iostream> using namespace std; class Point { public: Point(int x,int y){ th ...

  2. Oracle字符串分割Split(超简单一条sql解决)

    ) FROM renyuan where name ='张三' 解决如下问题 我现在有一个字段是存:,,3的,而它对应另一张值集表中.eg; 课程人员表 renyuan id name Course ...

  3. Spring Cloud是一系列框架的有序集合

    Spring Cloud是一系列框架的有序集合.它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册.配置中心.消息总线.负载均衡.断路器.数据监控等,都可以用 ...

  4. 控制反转(Inversion of Control,英文缩写为IoC),另外一个名字叫做依赖注入(Dependency Injection,简称DI)

    控制反转(Inversion of Control,英文缩写为IoC),另外一个名字叫做依赖注入(Dependency Injection,简称DI),是一个重要的面向对象编程的法则来削减计算机程序的 ...

  5. 用newInstance与用new是区别的

    用newInstance与用new是区别的,区别在于创建对象的方式不一样,前者是使用类加载机制,那么为什么会有两种创建对象方式?这个就要从可伸缩.可扩展,可重用等软件思想上解释了.Java中工厂模式经 ...

  6. 【BZOJ】1492: [NOI2007]货币兑换Cash(cdq分治)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1492 蒟蒻来学学cdq神算法啊.. 详见论文 陈丹琦<从<Cash>谈一类分治算法 ...

  7. ThinkPHP项目笔记之RBAC(权限)基础篇

    今天,总结一下,RBAC(基于角色的访问控制),直白一点,就是权限管理.说到这,不得不“小叙”一下,我第一次 开发权限管理功能的“插曲”.第一次做这个,真的不会,我只知道“有点印象”,当时任务落到我的 ...

  8. Linux JAVA 配置

    wget http://download.oracle.com/otn-pub/java/jdk/7u25-b15/jdk-7u25-linux-x64.tar.gz tar zxvf jdk-7u2 ...

  9. WPF 渲染级别 (Tier)

    在WPF中,显卡的功能相差很大.当WPF评估显卡时,它会考虑许多因素,包括显卡上的RAM数量.对像素着色器(piexl shader)的支持(计算每个像素效果的内置程序,如透明效果),以及对顶点着色器 ...

  10. leetcode -- Best Time to Buy and Sell Stock III TODO

    Say you have an array for which the ith element is the price of a given stock on day i. Design an al ...