博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MongoDB(四)-- 主从配置
阅读量:6457 次
发布时间:2019-06-23

本文共 2679 字,大约阅读时间需要 8 分钟。

一、前言

  虽然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/dblogpath=/usr/java/mongodbMaster-slave/master/log/mongodb.loglogappend=truefork=truebind_ip=192.168.80.128            # master IPport=27020                        # master 端口master=true                       # 设置为mastersource=192.168.80.128:27021       # slave的IP 和 端口

   同理修改 slave 中的mongodb.conf ,vim  mongodb.conf

dbpath=/usr/java/mongodbMaster-slave/slave/data/dblogpath=/usr/java/mongodbMaster-slave/slave/log/mongodb.loglogappend=truefork=truebind_ip=192.168.80.128            # slave IPport=27021                        # slave 端口slave=true                        # 设置为 slavesource=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 (
) 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中 执行:

      

 

转载地址:http://uqnzo.baihongyu.com/

你可能感兴趣的文章
XCode快捷键
查看>>
request.getScheme()的使用方法
查看>>
Kaldi单音素模型 训练部分
查看>>
Android快速开发常用知识点系列目录
查看>>
Java ActiveMQ队列模式案例
查看>>
EJB2的配置
查看>>
最容易理解的对卷积(convolution)的解释
查看>>
《机器学习实战》知识点笔记目录
查看>>
Linux操作系统实时性分析
查看>>
mysql导出导入所有数据库
查看>>
[转载]数据库缓存算法思想与实现
查看>>
完美解决NC502手工sql的查询引擎排序及合计问题
查看>>
PHP+MySQL代码部署在Linux(Ubuntu)上注意事项
查看>>
Tiny语言执行环境TM机源码
查看>>
PE文件之资源讲解
查看>>
windows 7/mac编译cocos2d-x-3.2*的android工程报错
查看>>
MYSQL导入导出.sql文件(转)
查看>>
使用Elasticsearch、Logstash、Kibana与Redis(作为缓冲区)对Nginx日志进行收集(转)
查看>>
git review报错一例
查看>>
Tomcat在Linux上的安装与配置
查看>>