在sql server能够做到读写分离,双机热备份和集群部署,这些在mongodb也能做到。首先来看主从复制。我们就在一台电脑上进行操作

第一步:分别建立master和slave两个文件夹

第二步:开启主服务器:

mongod --dbpath /home/zhf/master --port 27017 --master

第三步:启动从服务器。这里制定一个从服务器的端口1001,在--source后面设置的是主服务器的地址和端口。注意这个端口要和开启主服务器上的一致。

mongod --dbpath /home/zhf/slave --port 1001 --slave --source 127.0.0.1:27017

在slave上开启成功后后可以看到slave服务器上不断的有同步的操作,从时间上来看, 每秒就同步一次。

登录主服务器插入一个文档。

root@zhf-maple:/home/zhf/桌面# mongo --host 127.0.0.1 --port 27017

MongoDB shell version v3.4.7

connecting to: mongodb://127.0.0.1:27017/

MongoDB server version: 3.4.7> show dbs;

admin  0.000GB

local  0.000GB

> db.test.insert({'name':'zhanghongfeng'})

WriteResult({ "nInserted" : 1 })

> show dbs

admin  0.000GB

local  0.000GB

test   0.000GB

然后登录从服务器:

root@zhf-maple:/home/zhf/桌面# mongo --host 127.0.0.1 --port 1001

MongoDB shell version v3.4.7

connecting to: mongodb://127.0.0.1:1001/

MongoDB server version: 3.4.7

> show dbs

2018-01-08T21:34:46.525+0800 E QUERY    [thread1] Error: listDatabases failed:{

"ok" : 0,

"errmsg" : "not master and slaveOk=false",

"code" : 13435,

"codeName" : "NotMasterNoSlaveOk"

} :

_getErrorWithCode@src/mongo/shell/utils.js:25:13

Mongo.prototype.getDBs@src/mongo/shell/mongo.js:62:1

shellHelper.show@src/mongo/shell/utils.js:769:19

shellHelper@src/mongo/shell/utils.js:659:15

@(shellhelp2):1:1

但是在执行show dbs报了上面的错误。解决办法是执行下rs.slaveOk()就可以了

> show dbs

admin  0.000GB

local  0.000GB

test   0.000GB

rs.slaveOk()是什么意思呢。下面是官网的描述。也就是允许去读slave服务器上的数据

Provides a shorthand for the following operation:

db.getMongo().setSlaveOk()
This allows the current connection to allow read operations to run on secondary members. See the readPref() method for more fine-grained control over read preference in the mongo shell.

此时在从服务器上执行查找可以看到在主服务器上插入的文档。

> db.test.find()

{ "_id" : ObjectId("5a53729bd46947e70206ba40"), "name" : "zhanghongfeng" }

主从复制还有些选项:

--only: 在从节点上指定只复制特定某个数据库,默认是复制所有数据库

--slavedelay:用在从节点上,当应用主节点的操作时增加延时,单位是秒。这样的好处是通过延缓执行操作,在用户有误操作的时候,有个恢复的时间差

--fastsync:以主节点的数据快照为基础启动从节点。

--autoresync: 如果主节点与从节点不同步了,则自动重新同步

--oplogSize: 主节点oplog的大小。单位是MB。

那么如果还想增加一台从服务器但是又不想在启动的时候就指定,而是后期指定该如何操作呢。

在主从服务器中有一个local的数据库,在里面添加从服务器就可以了.操作步骤如下:

>mongo 127.0.0.1:1002

>use local

>db.sources.insert({“host”:”127.0.0.1:27017”})

操作完成后就可以发现数据也同步到了127.0.0.1:1002这个服务器上

mongodb学习之:主从复制的更多相关文章

  1. MongoDB学习总结(二)

    前言:学习札记! MongoDB学习总结(二) 1.  安装.初识 之前写过一篇MongoDB的快速上手文章,里边详细的讲了如何安装.启动MongoDB,这里就不再累述安装过程,简单介绍一下Mongo ...

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

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

  3. MongoDB学习笔记系列

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

  4. MongoDB学习笔记—Linux下搭建MongoDB环境

    1.MongoDB简单说明 a MongoDB是由C++语言编写的一个基于分布式文件存储的开源数据库系统,它的目的在于为WEB应用提供可扩展的高性能数据存储解决方案. b MongoDB是一个介于关系 ...

  5. Mongodb学习笔记一(Mongodb环境配置)

    Mongodb学习 说明: MongoDB由databases组成,database由collections组成,collection由documents组成,document由fileds组成.Mo ...

  6. MongoDB学习记录

    一.操作符 "$lt" :"<""$lte" :"<=""$gt" :"> ...

  7. PHP操作MongoDB学习笔记

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

  8. MongoDB学习:(二)MongoDB简单使用

    MongoDB学习:(二)MongoDB简单使用 MongoDB使用: 执行mongodb的操作之前,我们需要运行命令,来进入操作命令界面 >mongo 提示该错误,说明我们系统缺少一个补丁,该 ...

  9. MongoDB学习:(一)MongoDB安装

    MongoDB学习:(一)MongoDB安装 MongoDB介绍:     直接百科了: MongoDB安装: 1:下载安装: MongoDB安装:https://www.mongodb.com/do ...

  10. MongoDB学习(四)客户端工具备份数据库

    在上一篇MongoDB学习(三)中讲解了如何在服务器端进行数据的导入导出与备份恢复,本篇介绍下如何利用客户端工具来进行远程服务器的数据备份到本地. 以客户端工具MongoVUE为例来进行讲解: 1.首 ...

随机推荐

  1. spring boot--日志、开发和生产环境切换、自定义配置(环境变量)

    Spring Boot日志常用配置: # 日志输出的地址:Spring Boot默认并没有进行文件输出,只在控制台中进行了打印 logging.file=/home/zhou # 日志级别 debug ...

  2. LeetCode OJ--Median of Two Sorted Arrays ***

    http://oj.leetcode.com/problems/median-of-two-sorted-arrays/ 找两个有序数组的中位数,因为有序数组,并且复杂度要求O(lg(m+n))所以想 ...

  3. vue 之循环添加不同class

    在vue中按条件为class动态添加直接使用:class="[{ active: isActive }, errorClass]"之类的表达式就可以 但是如果我们要为一个循环列表按 ...

  4. Spring Tool Suite(STS)安装

    Spring Tool Suite是一个基于Eclipse的开发环境,可以自定义用于开发Spring应用程序.它提供了一个随时可用的环境来实现,调试,运行和部署Spring应用程序,包括Pivotal ...

  5. [转载][FPGA]有限状态机FSM学习笔记(二)

    1. Mealy和Moore状态机的互换 对于给定的时序逻辑功能,可以用Mealy机实现,也可以用Moore机实现.根据Moore机比Mealy机输出落后一个周期的特性,可以实现两种状态机之间的转换. ...

  6. SSL/TLS协议

    今天闲着给自己的网站申请了一个免费证书,顺便复习下SSL/TLS协议    (https 就是在http+ssl协议) SSL介绍: 安全套接字(Secure Socket Layer,SSL)协议是 ...

  7. Java-HashMap原理解析

    本文分析HashMap的实现原理. 数据结构(散列表) HashMap是一个散列表(也叫哈希表),用来存储键值对(key-value)映射.散列表是一种数组和链表的结合体,结构图如下: 简单来说散列表 ...

  8. CreateJS结合Falsh工具生成Canvas动画(加密字符串的由来)

    CreateJS是一款制作Canvas动画的工具. 官网如下: http://www.createjs.com/ http://www.createjs.cc/ 使用CreateJS时最大的疑问就是J ...

  9. iOS -- 十进制、十六进制字符串,byte,data等之间的转换

    十进制->十六进制 Byte bytes[]={0xA6,0x27,0x0A}; NSString *strIdL = [NSStringstringWithFormat:]]]; 十六进制-& ...

  10. CSRF攻击 & XSS攻击

    之前有几篇文章写了 SQL注入类问题: http://www.cnblogs.com/charlesblc/p/5987951.html (介绍) http://www.cnblogs.com/cha ...