今天学习了搭建 MongDB 复制环境,实验环境是在虚拟机上同一系统,并搭建三节点 Replica Set,
根据文档上的描述,mongodb 复制配置简单,并且能够自动 failover,这些高级特性以后再实验,这里仅
描述配置过程:

一 环境信息
虚拟机:         Red Hat Enterprise Linux Server release 6.2
主机名:       redhatB.example.com
MongoDB 版本:v2.2.1

  端口 数据目录
 主结点  27018  /mongodb/data01
 从节点一  27019  /mongodb/data02
 从节点二  27020  /mongodb/data03

二 搭建步骤
--2.1 创建数据目录

 [mongo@redhatB mongodb]$ mkdir -p /mongodb/data01
[mongo@redhatB mongodb]$ mkdir -p /mongodb/data02
[mongo@redhatB mongodb]$ mkdir -p /mongodb/data03

备注:三个目录分别为三个节点数据目录,并设置好目录权限。

--2.2 创建配置文件
--2.2.1 主节点配置文件

 touch /mongodb/data01/mongodb_27018.conf, 写入以下:

fork = true
port = 27018
dbpath = /mongodb/data01
logpath = /mongodb/data01/mongo.log
logappend = true
replSet = rs0

--2.2.2 从节点一配置

 touch /mongodb/data02/mongodb_27019.conf, 写入以下:

fork = true
port = 27019
dbpath = /mongodb/data02
logpath = /mongodb/data02/mongo.log
logappend = true
replSet = rs0

--2.2.3 从节点二配置

 touch /mongodb/data03/mongodb_27020.conf, 写入以下:

fork = true
port = 27020
dbpath = /mongodb/data03
logpath = /mongodb/data03/mongo.log
logappend = true
replSet = rs0

--2.3 启动主从节点

 mongod -f /mongodb/data01/mongodb_27018.conf
mongod -f /mongodb/data02/mongodb_27019.conf
mongod -f /mongodb/data03/mongodb_27020.conf

--2.4 初始化 Replica Sets
--2.4.1 登陆结点一初始化 

 [mongo@redhatB mongodb]$ mongo 127.0.0.1:27018
MongoDB shell version: 2.2.1
connecting to: 127.0.0.1:27018/test

> rs.inirs.initiate();
{
        "info2" : "no configuration explicitly specified -- making one",
        "me" : "redhatB.example.com:27018",
        "info" : "Config now saved locally.  Should come online in about a minute.",
        "ok" : 1
}

备注:使用的是默认配置。

--2.5 查看 Replica Sets 配置

 > rs.conf();
{
        "_id" : "rs0",
        "version" : 1,
        "members" : [
                {
                        "_id" : 0,
                        "host" : "redhatB.example.com:27018"
                }
        ]
}

备注:只能看到一个节点信息;

--2.6 增加从节点

 rs0:PRIMARY> rs.add("redhatB.example.com:27019");
{ "ok" : 1 }
rs0:PRIMARY> rs.add("redhatB.example.com:27020");
{ "ok" : 1 }
rs0:PRIMARY>

--2.7 再次查看 Replica Sets 配置

 rs0:PRIMARY> rs.conf();
{
        "_id" : "rs0",
        "version" : 3,
        "members" : [
                {
                        "_id" : 0,
                        "host" : "redhatB.example.com:27018"
                },
                {
                        "_id" : 1,
                        "host" : "redhatB.example.com:27019"
                },
                {
                        "_id" : 2,
                        "host" : "redhatB.example.com:27020"
                }
        ]
}

备注:这时已经能看到三个节点信息。

--2.8 查看 Replica Sets 状态

 rs0:PRIMARY> rs.status();
{
        "set" : "rs0",
        "date" : ISODate("2012-11-22T08:43:21Z"),
        "myState" : 1,
        "members" : [
                {
                        "_id" : 0,
                        "name" : "redhatB.example.com:27018",
                        "health" : 1,
                        "state" : 1,
                        "stateStr" : "PRIMARY",
                        "uptime" : 2445,
                        "optime" : Timestamp(1353573735000, 1),
                        "optimeDate" : ISODate("2012-11-22T08:42:15Z"),
                        "self" : true
                },
                {
                        "_id" : 1,
                        "name" : "redhatB.example.com:27019",
                        "health" : 1,
                        "state" : 2,
                        "stateStr" : "SECONDARY",
                        "uptime" : 74,
                        "optime" : Timestamp(1353573735000, 1),
                        "optimeDate" : ISODate("2012-11-22T08:42:15Z"),
                        "lastHeartbeat" : ISODate("2012-11-22T08:43:21Z"),
                        "pingMs" : 0
                },
                {
                        "_id" : 2,
                        "name" : "redhatB.example.com:27020",
                        "health" : 1,
                        "state" : 2,
                        "stateStr" : "SECONDARY",
                        "uptime" : 66,
                        "optime" : Timestamp(1353573735000, 1),
                        "optimeDate" : ISODate("2012-11-22T08:42:15Z"),
                        "lastHeartbeat" : ISODate("2012-11-22T08:43:19Z"),
                        "pingMs" : 0
                }
        ],
        "ok" : 1
}

备注:rs.status() 命令可以显示节点状态具体信息。
  
  
三 测试
--3.1 登陆主节点

 [mongo@redhatB mongodb]$ mongo 127.0.0.1:27018
MongoDB shell version: 2.2.1
connecting to: 127.0.0.1:27018/test

rs0:PRIMARY> db.test_1.save({id:1});

rs0:PRIMARY> db.test_1.find();
{ "_id" : ObjectId("50ade66efabbde9e747577b1"), "id" : 1 }

备注:主节点可以读写;

--3.2 登陆从节点一

 [mongo@redhatB mongodb]$ mongo 127.0.0.1:27019
MongoDB shell version: 2.2.1
connecting to: 127.0.0.1:27019/test
rs0:SECONDARY> show dbs;show dbs;
local   0.125GB
test    0.0625GB
rs0:SECONDARY> show collections;
Thu Nov 22 16:48:15 uncaught exception: error: { "$err" : "not master and slaveOk=false", "code" : 13435 }
rs0:SECONDARY>

备注:从节点不可读写,但能看到主库创建的集合,从库需要使用 rs.slaveOk() 命令开启只读。
 
--3.3 开启从库只读模式

 [mongo@redhatB mongodb]$ mongo 127.0.0.1:27019
MongoDB shell version: 2.2.1
connecting to: 127.0.0.1:27019/test

rs0:SECONDARY> rs.slaveOk();

rs0:SECONDARY> show collections;
system.indexes
test_1

rs0:SECONDARY> db.test_1.find();
{ "_id" : ObjectId("50ade66efabbde9e747577b1"), "id" : 1 }

rs0:SECONDARY> db.test_1.save({id:2});db.
not master

备注:这时从库可读了(不可写),同理设置从库二。 到了这里,三节点 Replica Sets 环境已经全部
           搭建好了,步骤比较简单。

MongoDB:搭建三节点 Replica Set 环境的更多相关文章

  1. 使用express, create-react-app, mongodb搭建react模拟数据开发环境

    提要 最近刚刚完成了一个vue的项目,其中涉及的用户数有6000多个以及其他数据也比较多,为了在前端能够真实的进行数据模拟,所有把全量数据拷贝下来放到了api.json中.这样导致整个api.json ...

  2. OceanBase三节点部署&&扩容

    OceanBase三节点部署&&扩容 环境信息搭建三节点(1-1-1)创建资源池和租户查看数据分布 环境信息 IP OB目录 端口 192.168.43.89 /data/observ ...

  3. MongoDB之Replica Sets环境搭建

    最近学习MongoDB,这两天在搭建复制集的时候碰到了不少问题,也踩了好多坑,现在在这里记录下来,以供自己和他人参考 (因为本人是初学者,所以遇到的问题也会比较初级,所以本文也比较适合初学者查阅) 背 ...

  4. 三节点搭建openstack-Mitaka版本

    前言: 现在的云计算平台已经非常火,也非常的稳定了.像阿里云平台,百度云平台等等,今天咱们基于openstack来搭建一个云平台 注意: 本次平台搭建为三节点搭建(没有外部存储节点,所有存储为本地存储 ...

  5. 第三章 Spring.Net 环境准备和搭建

    在前面一章我们介绍了依赖注入,控制反转的概念.接下来我们来真正动手搭建一下Spring.Net的环境,看一下Spring.Net 中的控制反转和依赖注入是什么样子. 3.1  Spring.Net 下 ...

  6. 【运维技术】kafka三实例集群环境搭建及测试使用

    kafka三实例集群环境搭建及测试使用 单机搭建分为两部分:1. 软件安装启动 2. 软件配置 软件安装启动: # 切换到目录 cd /app # 获取kafka最新安装包,这边使用的是镜像地址,可以 ...

  7. 用“MEAN”技术栈开发web应用(三)用mongodb搭建数据库

    上一篇介绍了如何用express搭建起服务端MVC的开发架构,本篇我们来详细介绍一下这个Model层,也就是数据库访问层.包含如何使用mongodb搭建数据库,以及如何使用mongoose来访问数据. ...

  8. Intellij Idea系列之Tomcat环境的搭建(三)

    Intellij Idea系列之Tomcat环境的搭建(三) 一. 编写背景 Intellij Idea在刚上手的时候很多人吐槽,"god, 这么难用的IDE有谁用呀?",的确,I ...

  9. odoo开发环境搭建(三):安装odoo依赖的python包

    odoo开发环境搭建(三):安装odoo依赖的python包 http://www.cnblogs.com/jlzhou/p/5940815.html

随机推荐

  1. HBase 基本操作

    如何添加列族 很简单,跟rdbms一样 直接用alter,但是alter之前必须先disable这个表 ---->disable 'test'                          ...

  2. 解决chrome浏览器us-yahoo.com搜索劫持

    一直用着greenchrome浏览器,结果有次之后,地址栏的默认搜索引擎用的bing,但是仍然会重定向到us-yahoo.com进行搜索,初起时以为是greenchrome插件作者的返利,类似2345 ...

  3. LINUX下目标文件的BSS段、数据段、代码段

    http://blog.chinaunix.net/uid-27018250-id-3867588.html bss 未初始化的全局数据 data 已经初始化的全局数据 text 代码段,机器指令 r ...

  4. python(14)- 简单练习:登录账户失败三次,账户自动锁定

    题目需求:   1.输入用户名密码   2.认证成功后显示欢迎信息   3.输错三次后锁定 #读取注册用户的信息,用户名,密码,输错次数,写入字典中 user={} with open("D ...

  5. JavaScript的string方法(demo)

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  6. pyquery模块

    pyquery 这个模块基本是仿JQuery的形式,也支持CSS选择器语法,因此对于爬虫来说,避免了正则表达式的滥用. 创建对象 from pyquery import PyQuery as pq d ...

  7. WPF 后台Render线程崩溃, Exception from HRESULT: 0x88980406

    近期遇到一个问题.窗口在Loaded同一时候Resize会出现黑屏或者直接崩溃, 调查发现是WPF后端的Render线程渲染UI到DirectX时崩溃. 硬件环境:WES7 + .Net4.0 关于W ...

  8. [Phoenix] 一、快速入门

    Phoenix是一个开源的HBASE SQL层.Phoeinx可以用标准的JDBC API替代HBASE client API来创建表,插入和查询HBASE中的数据. Phoenix作为应用层和HBA ...

  9. if __name__ == "__main__": 怎么理解?

    参考:https://www.cnblogs.com/Neeo/p/9504779.html 总结: 1.防止模块间调用时,执行被调用模块实例化执行,换句话说,就是不要执行调用模块原来实例化的内容 2 ...

  10. Hadoop实战-Flume之Source interceptor(十一)(2017-05-16 22:40)

    a1.sources = r1 a1.sinks = k1 a1.channels = c1 # Describe/configure the source a1.sources.r1.type = ...