Mongodb的副本集:(有两种情况,主从复制,副本集)

  这次我来说一下mongodb的副本集,副本集的出现可以有效的保证mongodb的单点问题,对数据的稳健性有一定辅助作用:

  MongoDB复制:是将数据同步在多个服务器的过程。

    1.复制提供了数据的冗余备份,并在多个服务器上存储数据副本,提高了数据的可用性, 并可以保证数据的安全性。

    2.复制还允许您从硬件故障和服务中断中恢复数据。


  什么是复制?

    • 保障数据的安全性
    • 数据高可用性 (24*7)
    • 灾难恢复
    • 无需停机维护(如备份,重建索引,压缩)
    • 分布式读取数据

MongoDB复制原理:

  mongodb的复制至少需要两个节点。其中一个是主节点,负责处理客户端请求,其余的都是从节点,负责复制主节点上的数据。

  mongodb各个节点常见的搭配方式为:一主一从、一主多从。

  主节点记录在其上的所有操作oplog,从节点定期轮询主节点获取这些操作,然后对自己的数据副本执行这些操作,从而保证从节点的数据与主节点一致。

     


Mongodb的主从复制:

   由于我本地已经装载了一个mongodb服务,我就在本地模拟两个mongdb启动做数据备份的操作:

     1> 配置路径如下:

      

     2> 进入各服务下的bin目录启动mongodb 并指定端口:Server1的对应master port = 27011

      mongod.exe --dbpath=E:\mongodbRs\db1 --master --port=27011

      

      Server2下是复制的mongodb  port=27012     mongod.exe --dbpath=E:\mongodbRs\db2 --port=27012 --slave --source=127.0.0.1:27011

      启动后一直监控:

      

    3>在27011 上插入一条记录:

      27012上就能看到变化:

      

      

·      报错的解决办法:

      

      注意:丛库只允许查询,插入会报错

      

    4>动态追加从属数据库    有印象就行,

      上面介绍的是在mongodb启动的时候,就知道主数据是哪个,下面我来说一种动态追加的方式:

      

     启动mongodb,不指定主库:mongod.exe --dbpath=E:\mongodbRs\db3 --port=27013 --slave

      

     上面显示信息是指没有master库配置:配置方式如下:

      

    查看mongodb3的服务启动信息可以查看到:slave生效了

      

    到这动态追加从库也配置完成:

  5>读写分离

  这种手段在大一点的架构中都有实现,在mongodb中其实很简单,在默认的情况下,从属数据库不支持数据的读取,但是没关系,

  在驱动中给我们提供了一个叫做“slaveOkay"来让我们可以显示的读取从属数据库来减轻主数据库的性能压力

  


对比:一主两从

    

  到这主从复制就基本上说完了,下面说副本集的搭建和介绍


Mongdb的副本集:  

   副本集的特点:

    1> 副本集没有特定的主数据库。

    2>如果哪个主数据库宕机了,集群中就会推选出一个从属数据库作为主数据库顶上,这就具备了自动故障恢复功能,

  

  副本集在搭建过程中,要保证数据是清空的,因为我上面搭建的主从复制的数据都保存在db1 db2 db3中,所以在搭建副本集时,要先清空数据,保证搭建副本集的纯净环境

  副本集:(搭建命令)
      mongod.exe --port 27011 --dbpath=E:\mongodbRs\db1 --replSet rs0
      mongod.exe --port 27012 --dbpath=E:\mongodbRs\db2 --replSet rs0
      mongod.exe --port 27013 --dbpath=E:\mongodbRs\db3 --replSet rs0

副本集搭建过程:

    

  rs.status():查询副本集的状态:截图如下:

    

  6>刚说副本集是没有主节点的集群,主节点宕机后其他节点会自动切换回来,下面我模拟这种场景,把27011干掉:

    

  7>我再把27011节点起来,这时候他作为一个从节点的状态又回到了集群中:

    

  


  至此,mongodb的主从复制和副本集的搭建已经全部完成,不会的搭建可以参考:http://www.runoob.com/mongodb/mongodb-replication.html

  

Mongodb的入门(6)副本集的更多相关文章

  1. MongoDB 删除,添加副本集,并修改副本集IP等信息

    MongoDB 删除,添加副本集,并修改副本集IP等信息 添加副本,在登录到主节点下输入 rs.add("ip:port"); 删除副本 rs.remove("ip:po ...

  2. MongoDB 带访问控制的副本集部署

    当你需要用到一个MongoDB 副本集集群,用于开发测试时, 可以通过下面的步骤简单完成. 版本及环境 MongoDB4.4  Centos6.5  一. 下载安装 MongoDB Server 及 ...

  3. 8.MongoDB系列之创建副本集(一)

    1. 复制简介 在MongoDB中,创建副本集后就可以使用复制功能了,副本集是一组服务器,其中一个是用于处理写操作的主节点,还有多个用于保存主节点的数据副本的从节点,如果主节点崩溃了,则从节点会从中选 ...

  4. MongoDB的主从复制和副本集

    mongoDB的两个特性主从复制和副本集,实现了数据的同步备份 一.主从复制 主从复制是一个简单的数据库同步备份的集群技术.例如主服务器宕机了,可以直接使用从服务器,主服务器恢复后在进行同步,保证了业 ...

  5. MongoDB系列之三(副本集配置)

    今天我测试了一下MongoDB的副本集的配置. 首先从概念上说一下MongoDB副本集和主从复制的区别.其实副本集(Replica Set)是主从复制的高级形式.高级在哪里呢?主动复制实现了数据备份+ ...

  6. mongodb 系列 ~ mongo的副本集(3)

    一 简介:今天咱们来聊聊mongodb复制的具体一些案例 二 副本集 1 当mongodb采用全量复制时,如何观察全量复制的进度 对比文件本身和primary大小 2 mongodb全量复制的过程 旧 ...

  7. mongodb 3.2 分片 + 副本集

    从图中可以看到有四个组件:mongos.config server.shard.replica set. mongos,数据库集群请求的入口,所有的请求都通过mongos进行协调,不需要在应用程序添加 ...

  8. MongoDB 2.6配置副本集,支持端口号修改和用户登录认证

    mongoDB系列之(二):mongoDB 副本集 Mongodb2.6副本集验证部署和认证 副本集有以下特点: 1. 最小构成是:primary,secondary,arbiter,一般部署是:pr ...

  9. MongoDB(五)-- 副本集(replica Set)

    一.副本集介绍 搭建副本集是为了实现mongodb高可用. Mongodb(M)表示主节点,Mongodb(S)表示备节点,Mongodb(A)表示仲裁节点.主备节点存储数据,仲裁节点不存储数据.客户 ...

  10. mongodb带认证的副本集搭建

    Mongodb副本集带用户认证的 概述 本次实验是在一台虚拟机上做的,正式环境一定要分开实现,以免影响服务的正常使用和性能. 准备工作: 操作系统:centos7.2 Mongodb版本:3.4.1 ...

随机推荐

  1. 二、LINQ之查询表达式基础

    1.查询是什么? 查询是一组指令,描述要从给定数据源(或源)检索的数据以及返回的数据应具有的形状和组织.查询表达式和它所产生的结果不同.

  2. Android_OnLowMemory和OnTrimMemory

    Android OnLowMemory和OnTrimMemory OnLowMemoryOnLowMemory是Android提供的API,在系统内存不足,所有后台程序(优先级为background的 ...

  3. Docker概念学习系列之Docker核心概念之容器container

    不多说,直接上干货! Docker 利用容器来运行应用. 容器是从镜像创建的运行实例. 它可以被启动.开始.停止.删除.每个容器都是相互隔离的.保证安全的平台. 可以把容器看做是一个简易版的 Linu ...

  4. 拥抱了IDEA却发现再也回不去Eclipse...

    一.背景 还记得去年入职的时候,发现很多同事都在用Intellij IDEA,其实在那之前都已经接触过,只不过没有在开发中实际应用而已. 这时候我下定决心要拥抱IDEA了,尤其被它酷酷的黑色主题所吸引 ...

  5. OSRM笔记

    OSRM OSRM(OpenStreetMap Routeing Machine)可用于路线规划.作为高性能的路线规划引擎,OSRM使用C++14编写,基于开源的OpenStreetMap数据实现. ...

  6. Spring Boot使用JWT实现系统登录验证

    简介 什么是JWT(Json Web Token) jwt是为了在网络应用环境间传递声明而执行的一种基于json的开放标准.该token被设计紧凑且安全的,特别适用于SSO场景.jwt的声明一般被用来 ...

  7. jquery的DataTable按列排序

    不管你用SQL查询数据时,是如何排序的,当数据传递给DataTable时,它会按照它自己的规则再进行一次排序,这个规则就是"order" 可以使用以下代码来进行排序 $('#exa ...

  8. SQL PKG示例

    CREATE OR REPLACE PACKAGE PKG_SYS_LOG IS -- Author : Li Cong -- Created : 2009-10-12 -- Purpose : 存放 ...

  9. GoogLeNetv4 论文研读笔记

    Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning 原文链接 摘要 向传统体系结构中引入 ...

  10. MVC使用jQuery.ajax()删除数据

    jQuery.ajax()可以简写为$.ajax().以前有写过MVC删除的实现,如<MVC实现删除数据库记录> http://www.cnblogs.com/insus/p/336804 ...