mongodb数据库主从复制的原理:
在主从结构中,主节点的操作记录称为oplog(operation log)。oplog存储在一个系统数据库local的集合oplog.$main中,这个集合的每个文档都代表主节点上执行的一个操作。 
可以通过以下语句查询:
db.oplog.$main.find()
从服务器会定期从主服务器中获取oplog记录,然后在本机上执行!对于存储oplog的集合,MongoDB采用的是固定集合,也就是说随着操作过多,新的操作会覆盖旧的操作!

主从复制的一些设置:
–only 从节点指定复制某个数据库,默认是复制全部数据库 
–slavedelay 从节点设置主数据库同步数据的延迟(单位是秒) 
–fastsync 从节点以主数据库的节点快照为节点启动从数据库 
–autoresync 从节点如果不同步则从新同步数据库(即选择当通过热添加了一台从服务器之后,从服务器选择是否更新主服务器之间的数据) 
–oplogSize 主节点设置oplog的大小(主节点操作记录存储到local的oplog中)

1:首先确认一下我们已经有了这个环境了:

mongodb数据库1 localhost:27017
mongodb数据库2 localhost:27018

2:修改配置文件

vi mongodb27018.conf

加入以下几个参数

bind_ip = 127.0.0.1 #从数据库所在服务器
source = 127.0.0.1:27017 #确定主数据库端口
slave = true #确定自己是从服务器
vi mongodb27017.conf
加入以下参数
bind_ip = 127.0.0.1 #主数据库所在服务器
master = true #确定我是主服务器

3:重启两天mongodb数据库

进入数据库

use admin
db.shutdownServer()

关闭后重新启动数据库

4:从节点登陆
mongodb 127.0.0.1:27108
show dbs
返回错误,因为从节点不可读,然后执行下面语句OK
在从节点上执行rs.slaveOk()
或者在主节点上执行db.getMongo().setSlaveOk()

5:开始验证数据
主库添加数据:
mongodb 127.0.0.1:27107
use maxiangqian
db.student.insert({"name":"maxiangqian"})
从库验证数据:
use maxiangqian
db.student.find()
发现数据已经同步了

6:查看同步状态
rs.printReplicationInfo()

官网给的解释:
1:启动master:mongod --master --dbpath /data/masterdb/
2:启动slave:mongod --slave --source <masterhostname><:<port>> --dbpath /data/slavedb/
3:从库添加:
use local
db.sources.find()
db.sources.insert( { host: <127.0.0.1:27107> } );

删除复制的联系:
直接在从库执行:
use local
db.sources.remove({“host”:”127.0.0.1:8888”})

mongodb 3.4复制搭建的更多相关文章

  1. 【MongoDB】windows平台搭建Mongo数据库复制集(类似集群)(转)

    原文链接:[MongoDB]windows平台搭建Mongo数据库复制集(类似集群)(一) Replica  Sets(复制集)是在mongodDB1.6版本开始新增的功能,它可以实现故障自动切换和自 ...

  2. 【Mongodb】 可复制集搭建

    可复制集 replica set 概念图 可复制集需要至少3个以上的mongodb节点,其中有一个主节点promary,其余的为副本节点secondary 可复制集有三个角色: 主要成员(Primar ...

  3. MongoDB副本集的搭建

    副本集是mongodb提供的一种高可用解决方案.相对于原来的主从复制,副本集能自动感知primary节点的下线,并提升其中一个Secondary作为Primary. 整个过程对业务透明,同时也大大降低 ...

  4. Mongodb数据库学习系列————(一)Mongodb数据库主从复制的搭建

    Mongodb数据库主从复制的搭建 Writeby:lipeng                                    date:2014-10-22 最近项目上用到了位置查询,在网上 ...

  5. PostgreSQL同步复制搭建

    摘要: PostgreSQL同步复制搭建 一.初始化master节点 1. 安装PostgreSQL 2. 初始化db initdb -D /data/pg940_data 二.配置master节点 ...

  6. (初稿)SQL Server 复制(Replication)系列(2)——事务复制搭建

    原文:(初稿)SQL Server 复制(Replication)系列(2)--事务复制搭建 本文演示如何搭建最基本的事务复制. 环境准备: 虚拟机2台: 服务器名分别为RepA和RepB,RepA为 ...

  7. 1018关于MySQL复制搭建[异步复制和半同步复制]

    转自:http://www.cnblogs.com/ivictor/p/5735580.html 搭建MySQL数据库的主从架构,还是蛮简单的.重要的几个命令整理一下. 主从服务器上: SHOW VA ...

  8. mongodb 3.4复制集配置

    1:启动三个实例 /bin/mongod --config /home/mongodb/db27017/mongodb27017.conf /bin/mongod --config /home/mon ...

  9. mongodb 3.4复制集详解

    1关闭数据库,打开三个mongodb数据库数据库实例 rs.printReplicationInfo() 2:原理 主库能够进行读写操作,一个复制集群只能有一个活跃的主库 一般情况下复制可以分为好几种 ...

随机推荐

  1. wordpress 后台页面无法显示绑定的台湾语言

    问题:当前切换到的语言是English,然后在页面的列表中,分别显示的语言有中文和香港,没有出现台湾的图标,如上图所示 原因:在polylang插件的设置里面,可以看到台湾语言的 Language c ...

  2. Ubuntu禁用Compiz

    环境: Ubuntu 16.04 什么是Compiz: https://zh.wikipedia.org/wiki/Compiz ,简单理解是实现了Ubuntu的3D效果 禁用的好处: 节省内存和CP ...

  3. Comparing deep learning frameworks: Tensorflow, CNTK, MXNet, & Caffe

    https://imaginghub.com/blog/10-a-comparison-of-four-deep-learning-frameworks-tensorflow-cntk-mxnet-a ...

  4. JS框架设计之主流框架的引入机制DomeReady一种子模块

    DomReady其实是一种名为"DomContentLoaded"事件的名称,不过由于框架的需要,它与真正的DomContentLoaded有区别,在旧的JS书籍中m都会让我们把J ...

  5. Git 学习之关于版本库

    记得在第一次接触代码的时候,当对一些改动不是很确定的时候,我的做法就是在我的电脑上保留多个文件,分别以不同的名字来保存,以便于以后发现某个地方的带动是错误的好做修改,现在想想真是好笑啊. 慢慢的在工作 ...

  6. Mybatis 关联查询(二

    一对多的管理查询结果映射   1.进行一对多的查询时候,要在主查询表对应的Po中加入关联查询表对应PO的类的list集合作为属性. public class Orders { private Inte ...

  7. jquery ui dialog弹出窗 清空缓存Cache或强制刷新

    我用jquery ui 弹出一个购物车的对话,通过AJAX加载的数据.发现购物车被缓存,一直看到是旧数据.为了刷新购物车更新,我必须去加一个刷新按钮,点击后更新购物车页面.有没有一种方法来自动刷新加载 ...

  8. Hadoop实战之四~hadoop作业调度详解(2)

    这篇文章将接着上一篇wordcount的例子,抽象出最简单的过程,一探MapReduce的运算过程中,其系统调度到底是如何运作的. 情况一:数据和运算分开的情况 wordcount这个例子的是hado ...

  9. 总结—angularjs项目

    我毕业了-------有点期待生活,又点害怕生活. 总结下最近一个月做的这个项目,项目的开发形式也比较新颖,采用的是前后端分离的形式.我负责前端的管理系统开发,另一个哥们负责利用ABP创建接口,整合后 ...

  10. moment常用操作

    1.返回当前日期截止时的时间戳: post.createtime = moment().unix(); let stime = moment(moment.unix(moment().unix()). ...