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挂掉, ...
随机推荐
- -26628 loadrunner
在Vuser脚本编译执行无误情况下,在controller中进行并发操作,并发数设为10,只通过5个,失败的报错信息是: Action.c(15): Error -26628: HTTP Stat ...
- windows下 删除指定文件夹里面一周前的所有文件和文件夹的bat
forfiles /p "指定文件夹路径" /m * /s /d -7 /c "cmd /c if @isdir==TRUE (rd /q @path) else del ...
- UPNP
基本概念 UPnP 的应用范围非常大,以致足够可以实现许多现成的.新的及令人兴奋的方案,包括家庭自动化.打印.图片处理.音频 / 视频娱乐.厨房设备.汽车网络和公共集会场所的类似网络.它可以充分发挥 ...
- C++ 结构体和枚举
共同体 共同体(union) 是一种数据格式, 它能够存储不同的数据类型, 但只能同时存储其中的一种类型.也就是说, 结构可以同时存储int.long 和 double, 共同体只能存储int.lon ...
- linux下硬盘的分区:
提到硬盘的分区,以前就是很乱,有什么主分区/扩展分区/逻辑分区等;它们有什么区别呢?现在简单的了解一下: 由于在MBR的主引导记录中的分区表里面最多只能记录4个分区记录,这个不够用啊,为了解决这个问题 ...
- eclipse里面的常用快捷键
eclipse里面的常用快捷键:代码实战 package com.study.lgs; import java.awt.List; import java.io.FileInputStream; im ...
- mac命令行启动tomcat
一.修改授权 进入tomcat的bin目录,修改授权 ➜ bin pwd /Users/yp/Documents/workspace/apache-tomcat-7.0.68/bin ➜ bin su ...
- c、c++---linux上的GetTickCount函数
http://blog.csdn.net/guang11cheng/article/details/6865992 http://wenda.so.com/q/1378766306062794
- Java 訪问权限控制:你真的了解 protected keyword吗?
摘要: 在一个类的内部,其成员(包含成员变量和成员方法)是否能被其它类所訪问,取决于该成员的修饰词:而一个类是否能被其它类所訪问,取决于该类的修饰词.Java的类成员訪问权限修饰词有四类:privat ...
- 监听输入框值变化的最佳方案 oninput 和 onpropertychange (实时监控文本框改变的最佳方案)
公司有个文本框,当输入文字/粘贴/复制 或者是键盘猛按的时候,都希望这个文本框能统计出 输入了多少字 这种用 onchange onkeyup onkepress 都不怎么好使 最后在 ...