mongodb学习之:主从复制
在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学习之:主从复制的更多相关文章
- MongoDB学习总结(二)
前言:学习札记! MongoDB学习总结(二) 1. 安装.初识 之前写过一篇MongoDB的快速上手文章,里边详细的讲了如何安装.启动MongoDB,这里就不再累述安装过程,简单介绍一下Mongo ...
- MongoDB学习笔记(五)--复制集 && sharding分片
主从复制 主从节点开启 主节 ...
- MongoDB学习笔记系列
回到占占推荐博客索引 该来的总会来的,Ef,Redis,MVC甚至Sqlserver都有了自己的系列,MongoDB没有理由不去整理一下,这个系列都是平时在项目开发时总结出来的,希望可以为各位一些帮助 ...
- MongoDB学习笔记—Linux下搭建MongoDB环境
1.MongoDB简单说明 a MongoDB是由C++语言编写的一个基于分布式文件存储的开源数据库系统,它的目的在于为WEB应用提供可扩展的高性能数据存储解决方案. b MongoDB是一个介于关系 ...
- Mongodb学习笔记一(Mongodb环境配置)
Mongodb学习 说明: MongoDB由databases组成,database由collections组成,collection由documents组成,document由fileds组成.Mo ...
- MongoDB学习记录
一.操作符 "$lt" :"<""$lte" :"<=""$gt" :"> ...
- PHP操作MongoDB学习笔记
<?php/*** PHP操作MongoDB学习笔记*///*************************//** 连接MongoDB数据库 **////*************** ...
- MongoDB学习:(二)MongoDB简单使用
MongoDB学习:(二)MongoDB简单使用 MongoDB使用: 执行mongodb的操作之前,我们需要运行命令,来进入操作命令界面 >mongo 提示该错误,说明我们系统缺少一个补丁,该 ...
- MongoDB学习:(一)MongoDB安装
MongoDB学习:(一)MongoDB安装 MongoDB介绍: 直接百科了: MongoDB安装: 1:下载安装: MongoDB安装:https://www.mongodb.com/do ...
- MongoDB学习(四)客户端工具备份数据库
在上一篇MongoDB学习(三)中讲解了如何在服务器端进行数据的导入导出与备份恢复,本篇介绍下如何利用客户端工具来进行远程服务器的数据备份到本地. 以客户端工具MongoVUE为例来进行讲解: 1.首 ...
随机推荐
- gcc 内置函数
关于gcc内置函数和c隐式函数声明的认识以及一些推测 最近在看APUE,不愧是经典,看一点就收获一点.但是感觉有些东西还是没说清楚,需要自己动手验证一下,结果发现需要用gcc,就了解一下. 有时候 ...
- 正确使用‘trap指令’实现Docker优雅退出
一般应用(比如mariadb)都会有一个退出命令,用户使用类似systemctl stop ****.service方法,停止其服务时,systemd会调用其配置文件注册的退出命令,该命令执行清理资源 ...
- svg格式矢量图引入方法
引入方法: span { background: url('1.svg') no-repeat; background-size: 20px 20px; background-position: 0 ...
- android学习资源
https://codelabs.developers.google.com/ https://developer.android.com/ http://v.youku.com/v_show/id_ ...
- spring-cloud - 基础环境搭建
spring-cloud中文文档:https://springcloud.cc/ spring-cloud中文导航:http://springcloud.fun/ 文章纯属用于个人学习的一个归纳,哪里 ...
- [__NSCFConstantString size]: unrecognized selector sent to instance 错误
因为使用时候的类型和初始化的对象类型不匹配造成的,例如 - (NSMutableDictionary *)getMenuItems{ NSArray *defaultTmp = [NSArray ...
- iOS开发 使用Cocoapods管理第三方类库
每次上github看到一些优秀的代码,总能看到Podfile,也了解是个管理第三方类库的,今天抽时间学习了一下,挺简单的! 作用: 太多 还是复制一下把!!! CocoaPods是什么? ...
- treeList获取目录下的所有文件
/// <summary>/// treeList获取目录下的所有文件/// </summary>public static void InitTreeListGetFiles ...
- C# 线程中更新ListView某单元格导致闪烁问题的解决
项目中需要用线程处理一些事务.处理结果(已经处理的比例)随时显示在ListView的某区域. 由于线程循环动作较快,导致被更新的单元格甚至所在行都有闪烁现象. 后来考虑到线程算的值整数部分未必变化很快 ...
- 合并SO为单独交货单
本场景为单步交货 为客户建立专用的route. 增加一个pull rule 在做订单的时候,为订单行选择 上面建立好的route, 连续建立了 2个 订单 SO ...