文档章节

mongoDB集群复制环境搭建

二两豆腐
 二两豆腐
发布于 2015/12/12 11:45
字数 869
阅读 158
收藏 12

由于电脑不足,故在一台电脑上启动三个mongo环境,用以搭建mongo集群复制环境,一个为主节点(28001),一个为从节点(28002),另外一个为选举节点(28003)。

  1. mongo新建三个目录,datalogconf

                data用来存放数据库文件

                log用来存放日志文件

                conf用来存放各个节点的配置文件

、编写配置文件

                28001.conf

port=28001
bind_ip=192.168.0.106,127.0.0.1
logpath=/opt/mongodb-3.0.7/log/28001.log
dbpath=/opt/mongodb-3.0.7/data/28001/
logappend=true
pidfilepath=/opt/mongodb-3.0.7/data/28001/28001.pid
fork=true
oplogSize=1024
replSet=MONGO

            28002.conf28003.conf 和上面类似,只是修改一下目录和文件为对应的目录和文件即可

            对于mongo的各个配置文件的详细信息,请参照文章《mongoDB 配置文件详解》

三、启动各个节点

            bin/mongod  -f conf/28001.conf

     bin/mongod  -f conf/28001.conf

      bin/mongod  -f conf/28001.conf

            出现以下信息,则代表启动成功

            

            通过ps –ef |grep mongo命令,可以查看到启动的各个线程

          

、配置节点主从复制模式

 

bin/mongo 127.0.0.1:28001/admin 进入shell

 配置各个节点

> config={
... _id:"MONGO",
... members:[
... {_id:0,host:"127.0.0.1:28001"},
... {_id:1,host:"127.0.0.1:28002"},
... {_id:2,host:"127.0.0.1:28003"}]}

配置 28003为选举节点

config.members[2] ={ "_id" : 2, "host" : "127.0.0.1:28003","arbiterOnly":true}

 cofig完成以后进行初始化

 

 

此时可以观察到shell窗口的前面的符号已经发生变化,更改为了MONGO:OTHER

通过输入rs.status()命令,可以查看现在各个节点的状态以及所处的位置

MONGO:OTHER> rs.status()
{
         "set" : "MONGO",
         "date" : ISODate("2015-12-12T03:08:27.537Z"),
         "myState" : 1,
         "members" : [
                   {
                            "_id" : 0,
                            "name" : "127.0.0.1:28001",
                            "health" : 1,
                            "state" : 1,
                            "stateStr" : "PRIMARY",
                            "uptime" : 856,
                            "optime" : Timestamp(1449889628, 1),
                            "optimeDate" : ISODate("2015-12-12T03:07:08Z"),
                            "electionTime" : Timestamp(1449889630, 1),
                            "electionDate" : ISODate("2015-12-12T03:07:10Z"),
                            "configVersion" : 1,
                            "self" : true
                   },
                   {
                            "_id" : 1,
                            "name" : "127.0.0.1:28002",
                            "health" : 1,
                            "state" : 2,
                            "stateStr" : "SECONDARY",
                            "uptime" : 78,
                            "optime" : Timestamp(1449889628, 1),
                            "optimeDate" : ISODate("2015-12-12T03:07:08Z"),
                            "lastHeartbeat" : ISODate("2015-12-12T03:08:26.662Z"),
                            "lastHeartbeatRecv" : ISODate("2015-12-12T03:08:26.639Z"),
                            "pingMs" : 0,
                            "lastHeartbeatMessage" : "could not find member to sync from",
                            "configVersion" : 1
                   },
                   {
                            "_id" : 2,
                            "name" : "127.0.0.1:28003",
                            "health" : 1,
                            "state" : 7,
                            "stateStr" : "ARBITER",
                            "uptime" : 78,
                            "lastHeartbeat" : ISODate("2015-12-12T03:08:26.662Z"),
                            "lastHeartbeatRecv" : ISODate("2015-12-12T03:08:26.628Z"),
                            "pingMs" : 0,
                            "configVersion" : 1
                   }
         ],
         "ok" : 1
}

                

五、测试

从以上配置文件上可以看出 主节点是127.0.0.1:28001节点,在主节点上插入数据

登录上28002节点以后,运行show dbs出现一个错误

2015-12-12T11:17:15.304+0800 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

报错信息为不是主节点,这是因为mongdb为了保证数据的一致性,如果不是通过驱动连接上从节点,是不允许进入这个节点操作的,这时可以利用命令 rs.slaveOK(true),来标示可以进入,这样再查询,则可以查询得到刚才在从节点上插入的数据了。

                

但是对于选举节点,是查询不到这些库和数据的,是因为选举节点不用来存储数据,只是为了选举。

© 著作权归作者所有

二两豆腐
粉丝 22
博文 103
码字总数 87685
作品 0
朝阳
高级程序员
私信 提问
MongoDB4.0搭建分布式集群-笔记

搭建之前先了解一下MongoDB分片群集主要有如下三个组件: Shard:分片服务器,用于存储实际的数据块,实际生产环境中一个shard server 角色可以由几台服务器组成一个Peplica Set 承担,防止主...

Calon
2018/09/13
0
0
MongoDB4.0搭建分布式集群

MongoDB4.0搭建分布式集群 2018年09月15日 11:11:42 Calon Mo 阅读数 3973 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https...

linjin200
09/06
33
0
史上最详细的 MongoDB4.0搭建分布式集群(亲测有效)

史上最详细的 MongoDB4.0搭建分布式集群(亲测有效) 2019年02月13日 16:46:58 一尘在心 阅读数 156更多 分类专栏: 大数据~~MongoDB 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权...

linjin200
09/18
31
0
mongodb副本集加分片集群安全认证使用账号密码登录

mongodb副本集加分片集群安全认证使用账号密码登录 2017年12月05日 20:48:59 大伟爱自由 阅读数 8298更多 分类专栏: mongoDB 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转...

linjin200
09/12
14
0
mongodb 3.4 集群搭建升级版 五台集群

mongodb 3.4 集群搭建升级版 五台集群 纯洁的微笑 2017-09-21 原文 最新版mongodb推荐使用yaml语法来做配置,另外一些旧的配置在最新版本中已经不在生效,所以我们在生产实际搭建mongodb集群...

linjin200
09/12
23
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring Cloud Sleuth 整合 feign 源码分析

org.springframework.cloud.sleuth.instrument.web.client.feign.TraceFeignClient 包括创建span一些参数

xiaomin0322
16分钟前
2
0
Less 延伸

extend 是一个 Less 伪类,它通过使用 :extend 选择器在一个选择器中扩展其他选择器样式。 扩展语法 扩展可以是附加到选择器,也可以是集中放置在规则,看上去像是带有选择器参数的可选伪类,...

凌兮洛
16分钟前
2
0
RedHat 7.0系统中安装mysql 5.7.22

在安装之前,首先要查看的是,你的系统中有没有已经安装过的情况。键入rpm -qa|grep mysql,如果无任何显示,则表示没有安装过相关组件,如果有,则根据显示出来的名字,键入rpm -e --nodeps...

最菜最菜之小菜鸟
22分钟前
2
0
RPA:企业信息孤岛的“克星”

为了降本增效,近来世界范围内掀起一股流程优化的热潮,转型升级成为众多企业时刻挂在嘴边的热词。不过在企业数字化转型的过程中,信息孤岛的出现,往往成为了企业升级的绊脚石。 信息孤岛:...

UiBot
22分钟前
2
0
我的测试

我的测试

daiison
22分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部