MongoDB(四)-- 主从配置
一、前言
虽然MongoDB官方已经不建议使用主从模式了,但是 熟悉下 也是有用的,替代方案是采用副本集的模式。slave默认情况下是不支持读写的,但是master会把数据同步到slave,不支持客户端读写。客户端连接slave时用命令支持读:rs.slaveOk()。
二、主从配置
1.进入到 /usr/java 中,cd /usr/java
2.新建mongodbMaster-slave,mkdir mongodbMaster-slave
3.进入到 mongodbMaster-slave 文件夹中,新建 master 和 slave 文件夹,mkdir master slave
4.进入到 master 和 slave 中,新建 data 和 log 文件件,mkdir data log;进入到 data中,新建 db文件件,mkdir db
5.进入到 mongodbMaster-slave 中,配置 临时的环境变量,export PATH=/usr/java/mongodb/bin:$PATH
6.查看临时的环境变量是否配置成功:echo $PATH

7.执行 mongod --help ,查看帮助信息

--master:指定master节点;
--slave:指定slave节点;
--source :指向服务的端口。
8.将 mongodb 的配置文件 拷贝到 master 和 slave 中:
cp mongodb.conf ../mongodbMaster-slave/master/mongodb.conf
cp mongodb.conf ../mongodbMaster-slave/slave/mongodb.conf
9.修改 master中的 mongodb.conf ,vim mongodb.conf
dbpath=/usr/java/mongodbMaster-slave/master/data/db
logpath=/usr/java/mongodbMaster-slave/master/log/mongodb.log
logappend=true
fork=true
bind_ip=192.168.80.128 # master IP
port=27020 # master 端口
master=true # 设置为master
source=192.168.80.128:27021 # slave的IP 和 端口
同理修改 slave 中的mongodb.conf ,vim mongodb.conf
dbpath=/usr/java/mongodbMaster-slave/slave/data/db
logpath=/usr/java/mongodbMaster-slave/slave/log/mongodb.log
logappend=true
fork=true
bind_ip=192.168.80.128 # slave IP
port=27021 # slave 端口
slave=true # 设置为 slave
source=192.168.80.128:27020 # master的IP 和 端口
10.启动 master,进入到 master 文件夹中:
mongod --config mongodb.conf

11.启动slave,进入到 slave 文件夹中:
mongod --config mongodb.conf

12.验证主从是否配置成功
1)客户端连接 slave:
mongo --host 192.168.80.128 --port 27021
方法一:执行:db.printSlaveReplicationInfo() 查看 是否是从,source 指向的是 27020,即 master。

2)客户端连接 slave,通过 查看 local 数据库中的 表的信息 了解 对应的 master,我们 来看下 所有的 db,即 show dbs,此时,发现报错,如下:
2017-07-23T14:07:13.196-0700 E QUERY Error: listDatabases failed:{ "note" : "from execCommand", "ok" : 0, "errmsg" : "not master" }
at Error (<anonymous>)
at Mongo.getDBs (src/mongo/shell/mongo.js:47:15)
at shellHelper.show (src/mongo/shell/utils.js:630:33)
at shellHelper (src/mongo/shell/utils.js:524:36)
at (shellhelp2):1:1 at src/mongo/shell/mongo.js:47
解决方法,执行 rs.slaveOK(),
进入到local 数据库,查看 所有的表:show collections,发现有一个 sources ,我们 查询 sources 表中的数据,db.sources.find():
查询结果:{ "_id" : ObjectId("59750d91828f18cb9f133ef2"), "host" : "192.168.80.128:27020", "source" : "main", "syncedTo" : Timestamp(1500844337, 1) },发现 host对应的是 master 的IP和端口,说明 主从配置成功。
3)通过 在 master 中 插入几条数据,然后 在 slave中 查看 的方法,来看 主从 是否配置成功。
在master中执行 如下,插入 一条数据:

在slave中 执行如下,查询数据:

可以看到 在 master 中 插入的数据,说明主从配置成功。
4)也可以 通过 db.isMaster() 查看,在master中执行:

在 slave中 执行:

MongoDB(四)-- 主从配置的更多相关文章
- mongodb 的主从配置
mongoDB主从配置如下: 主库: port=27017 dbpath=/usr/local/mongodb/data logpath=/usr/local/mongodb/log/mongodb. ...
- mongodb系列之--mongodb 主从配置与说明
一.为什么要配置mongodb的主从: 1.做主从,可以说是做数据的备份,有利于故障的恢复 2.做主从,可以做到读写分离,主节点负责写操作,从节点负责读操作,这样就把读写压力分开,保证系统的稳定性. ...
- redis(四))——多实例化——实现主从配置
引言 redis是一个key-value存储系统. 和Memcached类似,它支持存储的value类型相对很多其它,包含string(字符串).list(链表).set(集合)和zset(有序集合) ...
- Redis——学习之路四(初识主从配置)
首先我们配置一台master服务器,两台slave服务器.master服务器配置就是默认配置 端口为6379,添加就一个密码CeshiPassword,然后启动master服务器. 两台slave服务 ...
- mongodb主从配置信息查看与确认
在local库中不仅有主从日志 oplog集合,还有一个集合用于记录主从配置信息 system.replset: > use local > show collections > d ...
- Redis学习总结(四)--Redis主从配置
在分布式系统架构设计中高可用是必须考虑的因素之一.高可用通常是指,通过设计减少系统不能提供服务的时间.而单点是系统高可用的最大的败笔,如果单点出现问题的话,那么整个服务就不能使用了,所以应该尽量在系统 ...
- mongodb replica set 配置高性能多服务器详解
mongodb的多服务器配置,以前写过一篇文章,是master-slave模式的,请参考:详解mongodb 主从配置.master-slave模式,不能自动实现故障转移和恢复.所以推荐大家使用mon ...
- redis原理及集群主从配置
一.简介 存储系统背景 存储系统有三类: RDBMS oracle,dh2,postgresql,mysql,sql server NoSQL: KV NoSQL:redis,memcached 列式 ...
- Redis集群(三):主从配置一
一.本文目的 Redis的主从配置分为两篇文章,第一篇主要介绍了Redis主从配置的搭建过程及使用,第二篇主要说明各种情况下Redis主从状态,如Master挂掉,Slaver挂掉, ...
随机推荐
- 获取最后插入的id另外方法
在此记录备忘. CREATE TABLE tb_test(custid INT IDENTITY(1,1) NOT NULL , name nvarchar(200) NOT NULL) DECLAR ...
- FPGA中的时序分析(五)
时序约束实例详解 本篇博客结合之前的内容,然后实打实的做一个约束实例,通过本实例读者应该会实用timequest去分析相关的实例.本实例以VGA实验为基础,介绍如何去做时序约束. 首先VGA这种情况属 ...
- Windows IOT 开发入门(准备工作)
终于抽出空来了,将最近研究的东西记录下来,物联网,万物皆可联网.然后可以做到智能家居,智能生活,智能城市....一大堆.吹牛的就不说了. 在实际应用中都是一个个小的传感器在收集数据,同时把数据直接或者 ...
- Lua------------------改善Unity编辑器对Lua文件的支持
原创 2017年03月10日 18:44:22 标签: Unity / lua / 编辑器 952 当前版本的Unity(截至Unity5.5.x)中TextAsset类不支持后缀为lua的文件,将l ...
- Ubuntu Server对OpenStack的支持
关于Ubuntu上OpenStack版本选择的问题, 就看这里. 从12.04 LTS起, Ubuntu云存档允许用户在下一个LTS版的Ubuntu发布前安装更新的OpenStack. 就拿Ubunt ...
- 【转】在64位windows下使用instsrv.exe和srvany.exe创建windows服务
本文转自:https://www.iflym.com/index.php/computer-use/201205020001.html 在32位的windows下,包括windows7,windows ...
- MAC 查看端口占用
命令 lsof -i tcp:[port] (port替换成端口号,比如6379)可以查看该端口被什么程序占用,并显示PID,方便KILL 之后,kill -9 [PID] , kill进程即可 ...
- Java SE 8 并发增强
1.原子值 java5开始,提供了一些原子操作的类,如AtomicInteger.AtomicLong等 这些类提供了诸如incrementAndGet这样的原子操作方法. 单数如果想进行复杂操作,则 ...
- [转]linux下lame的使用
找到這篇好文章,不得不说開源的Lame功能很強大 linux下lame的使用 % lame [参数] <输入文件名> [<输出文件名>] 如需查询更多参数,可输入下列命令: % ...
- PHP多文件上传操作
在前一篇文章里讲到了关于PHP文件上传原理和简单操作举例是单文件上传. http://www.cnblogs.com/lichenwei/p/3879566.html 其实多文件上传和单文件上传大同小 ...