今天学习了搭建 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. Odoo超售订单

    当 交付给客户的货物多于订购的数量时,就形成'超售'状态: 对于超售的部分,需要进行开票处理,以及根据情况修改交货     发生超售的前提是,产品开票策略为 '按订购数量开票'     同时需要 允许 ...

  2. Java中HashMap遍历的两种方法(转)

    第一种: Map map = new HashMap(); Iterator iter = map.entrySet().iterator(); while (iter.hasNext()) { Ma ...

  3. android RecycleView复杂多条目的布局

    用RecycleView来实现布局形式.默认仅仅能指定一种布局格式.可是实际中我们的布局常常会用到多种类型的布局方式.怎样实现呢? 今天来说下经常使用的2钟方式. 第一种: 通过自己定义addHead ...

  4. mysql 数据类型+约束+关联

    1.什么是存储引擎存储引擎就是表的类型,针对不同的存储引擎,mysql会有不同的处理逻辑 2.存储引擎介绍InnoDB| DEFAULT | Supports transactions, row-le ...

  5. Java RESTful 框架

    [转载] 最好的8个 Java RESTful 框架 - 2015 Top 8 Java RESTful Micro Frameworks – Pros/Cons - 2017 Restlet - f ...

  6. SICP 习题 (1.38)解题总结

    SICP 习题1.38 紧跟着习题1.37的方向,要求我们用习题1.37中定义的cont-frac过程计算数学家欧拉大师在论文De Fractionibus Continuis 中提到的e-2的连分式 ...

  7. 使用UIWebView载入本地或远程server上的网页

    大家都知道,使用UIWebView载入本地或远程server上的网页,sdk提供了三个载入接口: - (void)loadRequest:(NSURLRequest *)request; - (voi ...

  8. 【BZOJ3566】[SHOI2014]概率充电器 期望+树形DP

    [BZOJ3566][SHOI2014]概率充电器 Description 著名的电子产品品牌 SHOI 刚刚发布了引领世界潮流的下一代电子产品——概率充电器:“采用全新纳米级加工技术,实现元件与导线 ...

  9. STL之队列的运用

    卡片游戏:非常好地介绍了队列的特点和应用 桌上有一叠牌,从第一张牌開始从上往下依次编号1~n.当至少还剩两张牌时进行例如以下操作:把第一张牌扔掉,然后把新的第一张牌放到整叠牌的最后. 输入n,输出每次 ...

  10. C++ xml 解析器

    C++的xml解析器有很多,这个知乎回答里有一个列表:https://www.zhihu.com/question/32046606 下面使用其中的RapidXml试试. 官方地址: https:// ...