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. vim退出后终端保留 退出前的内容

    export TERM=linux 或者 具体选项 可以看看secrecrt的选项

  2. 使用QRCode简单生成二维码

    // //  ViewController.m //  二维码 // //  Created by 123 on 16/9/4. //  Copyright © 2016年 彭洪. All right ...

  3. javascript-String

    概述 String对象是JavaScript原生提供的三个包装对象之一,用来生成字符串的包装对象实例. var s = new String("abc"); typeof s // ...

  4. Java--CyclicBarrier同步屏障原理,使用

    package com; import java.util.Map; import java.util.concurrent.BrokenBarrierException; import java.u ...

  5. comparator接口与Comparable接口的区别

    1. Comparator 和 Comparable 相同的地方 他们都是java的一个接口, 并且是用来对自定义的class比较大小的, 什么是自定义class: 如 public class Pe ...

  6. 【FOL】第二周

    一直在忙其他事情,停了好久了.终于又可以开始做点东西了. 这周主要工作: 1.整理客户端代码,加入网络模块:fol.client.net. 2.写了个简单的版本服务端程序. 3.初步完成了自动更新功能 ...

  7. Git删除错误提交的commit

    git reset --hard <commit_id> git push origin HEAD --force

  8. mybatis公用代码抽取到单独的mapper.xml文件

    同任何的代码库一样,在mapper中,通常也会有一些公共的sql代码段会被很多业务mapper.xml引用到,比如最常用的可能是分页和数据权限过滤了,尤其是在oracle中的分页语法.为了减少骨架性代 ...

  9. 【GOF23设计模式】观察者模式

    来源:http://www.bjsxt.com/ 一.[GOF23设计模式]_观察者模式.广播机制.消息订阅.网络游戏对战原理 package com.test.observer; import ja ...

  10. 使用React并做一个简单的to-do-list

    1. 前言 说到React,我从一年之前就开始试着了解并且看了相关的入门教程,而且还买过一本<React:引领未来的用户界面开发框架 >拜读.React的轻量组件化的思想及其virtual ...