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挂掉, ...
随机推荐
- 利用altium怎么生成PDF及怎么1:1打印文档
画完板子之后,还要生成原理图PDF文档,供其他设计人员参考和指正. 上图红框标注的两个地方,分别用于打印预览设置和生成原理图PDF.那么若是生成原理图PDF文档,则选择smart PDF即可. 点击s ...
- 关于Unity中表面着色器的使用
写shader其实就是在两个工位顶点shader工位和着色shader工位插入代码,供GPU使用运行 表面着色器四个函数的入口 1:表面着色器包括4个函数: (1): 顶点变换函数; (2): 表面着 ...
- Batch normalization:accelerating deep network training by reducing internal covariate shift的笔记
说实话,这篇paper看了很久,,到现在对里面的一些东西还不是很好的理解. 下面是我的理解,当同行看到的话,留言交流交流啊!!!!! 这篇文章的中心点:围绕着如何降低 internal covari ...
- Linq to Entity 动态拼接查询条件(重点是OR)
public static class PredicateExtensions { /// <summary> /// 机关函数应用True时:单个AND有效,多个AND有效:单个OR无效 ...
- MP3帧时长为26ms的来历
- android中清空一个表---类似truncate table 表名 这样的功能 android sqlite 清空数据库的某个表
public void clearFeedTable(){ String sql = "DELETE FROM " + FEED_TABLE_NAME +";" ...
- html常用对照表
常用对照表:http://tool.oschina.net/commons
- remove docker ce fully on centos7
在centos7上用curl 安装了docker ce版本 删除的方法是 $ sudo yum -y remove docker-ce
- ubuntu安装phpVirtualBox web服务
首先确保已经安装好了 virtualbox,打开了 vboxweb-service $ sudo ls /etc/init.d | grep vboxweb-service 然后, Insta ...
- pycharm环境下:同文件夹下文件(.py)之间的调用,出现红线问题
只要将pycharm下打开项目后: 将你运行文件(.py)的项目设置为根目录,就不会出现红色线: