Master/Slave主从复制

主从复制MongoDB中比较常用的一种方式,如果要实现主从复制至少应该有两个MongoDB实例,一个作为主节点负责客户端请求,另一个作为从节点负责从主节点映射数据,提供数据备份,客户端读取等,推荐一主多从模式

MongoDB主从复制的实现方式:

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

MongoDB使用注意点或缺点:

  • 每个从节点必须知晓其对应的主节点地址
  • 只允许主节点进行数据更新操作
  • 主节点宕机服务不可用
  • 3.2版本以后已经移除

Mongodb主从复制配置项详解:

  • master:默认为false,当设置为true,则配置当前实例作为主节点。
  • slave:默认为false,当设置为true,则配置当前实例作为从节点。
  • source:默认为空,用于从节点,指定从节点的复制来源(主节点的IP+端口),格式为:<host><:port>
  • only:默认为空,用于从节点,主动复制默认复制主节点上所有的数据库,通过设置此项指定需要复制的数据库名称
  • ,单位秒。
  • 秒,会强制从自动重新同步。如果oplogSize太小,此设置可能有问题。如果OPLOG大小不足以存储主的变化状态和从的状态变化之间的差异,这种情况下强制重新同步是不必要的。当设置autoresync选项设置为false,10分钟内从不会进行大于1次的自动重新同步。

主从配置实例(一主一从)

主节点 master.conf

dbpath=D:\mongodb\zhucong\master\data

logpath=D:\mongodb\zhucong\master\logs\mongodb.log

port=27017

bind_ip=127.0.0.1

master=true

从节点配置

dbpath=D:\mongodb\zhucong\slave\data

logpath=D:\mongodb\zhucong\slave\logs\mongodb.log

port=27018

bind_ip=127.0.0.1

master=true

slave=true

source=127.0.0.1:27017

分别启动两个MongoDB实例

mongod --config D:\mongodb\zhucong\master\master.conf

mongod --config D:\mongodb\zhucong\slave\slave.conf

使用 Robomongo 客户端分别连接上两个MongoDB实例

在主库上创建数据库 masterslavetest 并创建一些测试数据

use masterslavetest

for (i = 5000; i < 100000; i++) {

db.users.insert({

"i": i,

"userName": "user" + i,

"age": Math.floor(Math.random() * 120),

"created": new Date(),

total: Math.floor(Math.random() * 100) * i

})

}

在两个实例上分别执行
以下命令
可以看到在两个数据库上的数据保持一致,这时在主数据库上执行CRUD等操作时,从库数据依然与主库一致

db.users.find({})

两条指令

db.printReplicationInfo(): //查看主节点的信息

db.printSlaveReplicationInfo(): //查看从节点的信息

MongoDB学习笔记——Master/Slave主从复制的更多相关文章

  1. MongoDB学习笔记(五)--复制集 && sharding分片

    主从复制                                                                                       主从节点开启 主节 ...

  2. mongoDB 学习笔记纯干货(mongoose、增删改查、聚合、索引、连接、备份与恢复、监控等等)

    最后更新时间:2017-07-13 11:10:49 原始文章链接:http://www.lovebxm.com/2017/07/13/mongodb_primer/ MongoDB - 简介 官网: ...

  3. MongoDB学习笔记系列

    回到占占推荐博客索引 该来的总会来的,Ef,Redis,MVC甚至Sqlserver都有了自己的系列,MongoDB没有理由不去整理一下,这个系列都是平时在项目开发时总结出来的,希望可以为各位一些帮助 ...

  4. PHP操作MongoDB学习笔记

    <?php/*** PHP操作MongoDB学习笔记*///*************************//**   连接MongoDB数据库  **////*************** ...

  5. MongoDB 学习笔记(原创)

    MongoDB 学习笔记 mongodb 数据库 nosql 一.数据库的基本概念及操作 SQL术语/概念 MongoDB术语/概念 解释/说明 database database 数据库 table ...

  6. MongoDB学习笔记(转)

    MongoDB学习笔记(一) MongoDB介绍及安装MongoDB学习笔记(二) 通过samus驱动实现基本数据操作MongoDB学习笔记(三) 在MVC模式下通过Jqgrid表格操作MongoDB ...

  7. 【转】MongoDB学习笔记(查询)

    原文地址 MongoDB学习笔记(查询) 基本查询: 构造查询数据. > db.test.findOne() { "_id" : ObjectId("4fd58ec ...

  8. MongoDB学习笔记(六)--复制集+sharding分片 && 总结

    复制集+sharding分片                                                               背景 主机 IP 服务及端口 Server A ...

  9. MongoDB学习笔记(四)--索引 && 性能优化

    索引                                                                                             基础索引 ...

随机推荐

  1. Failed to create the Java Virtual Machine.问题的解决

    运行Eclipse,出现了"Failed to create the Java Virtual Machine."错误: 解决的办法是在Eclipse的解压目录下找到eclipse ...

  2. Android布局实现圆角边框

    首先,在res下面新建一个文件夹drawable,在drawable下面新建三个xml文件:shape_corner_down.xml.shape_corner_up.xml和shape_corner ...

  3. hibernate----N-N--(人与地点)

    package com.ij34.dao; import java.util.HashSet; import java.util.Set; import javax.persistence.*; @E ...

  4. Principal Data Scientist

    http://stackoverflow.com/jobs/124781/principal-data-scientist-concur-technologies-inc?med=clc&re ...

  5. 几个最常用的git命令

    之前在Windows下一直用可视化的tortoise git,在Linux下最好是用命令行,以下是常用的git命令: git status:显示当前已修改的文件,新增的文件 git checkout  ...

  6. .net下mysql存储过程返回自定义值(原创)

    ado.net方法 public static string ExecuteQueryProc(string sConnStr, string sSql, Hashtable args) { MySq ...

  7. extern的用法

    extern作为外部函数声明的用法: 1. 可以扩展函数的应用范围: 107.h #ifndef _107H_ #def _107H_ extern void func(); #endif 107.c ...

  8. 利用Redis cache优化app查询速度实践

    注意:本篇文章译自speeding up existing app with a redis cache,如需要转载请注明出处. 发现问题 在应用解决方法之前,我们需要对我们面对的问题有一个清晰的认识 ...

  9. LR--Controller的Pacing设置(不容忽视的设置)

    运行时的Pacing设置主要影响什么?     Pacing主要用来设置重复迭代脚本的间隔时间.共有三种方法: A:上次迭代结束后立刻开始. B:上次迭代结束后等待固定时间. C:按固定或随机的时间间 ...

  10. 决战大数据之二:CentOS 7 最新JDK 8安装

    决战大数据之二:CentOS 7 最新JDK 8安装 [TOC] 修改hostname # hostnamectl set-hostname node1 --static # reboot now 重 ...