分享下,最近做的一主一从一仲裁的示例,如有需要,大家可以扩展成一主两从一仲裁。

大家可以看到  我的集群名字沿用了默认的neunnm,如果是其他的话   大家注意修改。

需要辅助文件hosts.conf放置在与脚本相同的路径下。

[root@server mongodb]# cat hosts.conf
127.0.0.1 27017
127.0.0.1 28017
127.0.0.1 29017

示例,大家可以安心的用#或者空行。

下面是replset的脚本,在mongodb中可以调用外部json文件执行脚本,也可以用--eval参数来带一定的json串。

[root@ntp-server mongodb]# cat replset_config.sh
#!/bin/bash

for i in `seq 1 2`    //如果一主2从1仲裁的话,此处可以写成for i in `seq 1 3`即可
do
HOST=`cat hosts.conf | grep -v ^# | grep -v ^$ | sed -n ${i}p | awk '{print $1}'`
PORT=`cat hosts.conf | grep -v ^# | grep -v ^$ | sed -n ${i}p | awk '{print $2}'`

NUM=`expr ${i} - 1`
INTO="{_id: ${NUM}, host: '${HOST}:${PORT}'},"
if [ -z "${MOUT}" ]; then
    MOUT="config={_id: 'neunnm', members:["     //此处可以修改集群名字(_id: 'neunnm')。
fi
MOUT=${MOUT}${INTO}
done

HOST3=`cat hosts.conf | grep -v ^# | grep -v ^$ | sed -n 3p | awk '{print $1}'` //一主2从1仲裁的话  此处3p改成4p
PORT3=`cat hosts.conf | grep -v ^# | grep -v ^$ | sed -n 3p | awk '{print $2}'` //一主2从1仲裁的话  此处3p改成4p
INTO3="{_id: 2, host: '${HOST3}:${PORT3}', arbiterOnly:true}]}" //一主2从1仲裁的话 此处_id: 2改成_id: 3
MCONFIG=${MOUT}${INTO3}

mongo --host=127.0.0.1:27017 --eval "$MCONFIG"   //查看配置是否ok
mongo --host=127.0.0.1:27017 --eval "$MCONFIG;rs.initiate(config)"    //初始化集群
sleep 10s
mongo --host=127.0.0.1:27017 --eval "rs.status()"  //可以查看集群状态

查看集群状态如下:

neunnm:PRIMARY> rs.status()
{
    "set" : "neunnm",
    "date" : ISODate("2016-03-22T06:26:46.867Z"),
    "myState" : 1,
    "term" : NumberLong(1),
    "heartbeatIntervalMillis" : NumberLong(2000),
    "members" : [
        {
            "_id" : 0,
            "name" : "127.0.0.1:27017",
            "health" : 1,
            "state" : 1,
            "stateStr" : "PRIMARY",
            "uptime" : 5328,
            "optime" : {
                "ts" : Timestamp(1458627964, 2),
                "t" : NumberLong(1)
            },
            "optimeDate" : ISODate("2016-03-22T06:26:04Z"),
            "infoMessage" : "could not find member to sync from",
            "electionTime" : Timestamp(1458627964, 1),
            "electionDate" : ISODate("2016-03-22T06:26:04Z"),
            "configVersion" : 1,
            "self" : true
        },
        {
            "_id" : 1,
            "name" : "127.0.0.1:28017",
            "health" : 1,
            "state" : 2,
            "stateStr" : "SECONDARY",
            "uptime" : 57,
            "optime" : {
                "ts" : Timestamp(1458627964, 2),
                "t" : NumberLong(1)
            },
            "optimeDate" : ISODate("2016-03-22T06:26:04Z"),
            "lastHeartbeat" : ISODate("2016-03-22T06:26:46.198Z"),
            "lastHeartbeatRecv" : ISODate("2016-03-22T06:26:45.361Z"),
            "pingMs" : NumberLong(0),
            "syncingTo" : "127.0.0.1:27017",
            "configVersion" : 1
        },
        {
            "_id" : 2,
            "name" : "127.0.0.1:29017",
            "health" : 1,
            "state" : 7,
            "stateStr" : "ARBITER",
            "uptime" : 57,
            "lastHeartbeat" : ISODate("2016-03-22T06:26:46.198Z"),
            "lastHeartbeatRecv" : ISODate("2016-03-22T06:26:45.314Z"),
            "pingMs" : NumberLong(0),
            "configVersion" : 1
        }
    ],
    "ok" : 1
}

Mongodb 副本集分片(二)---mongodb副本集部署脚本详解的更多相关文章

  1. t持久化与集群部署开发详解

    Quartz.net持久化与集群部署开发详解 序言 我前边有几篇文章有介绍过quartz的基本使用语法与类库.但是他的执行计划都是被写在本地的xml文件中.无法做集群部署,我让它看起来脆弱不堪,那是我 ...

  2. JavaScript正则表达式详解(二)JavaScript中正则表达式函数详解

    二.JavaScript中正则表达式函数详解(exec, test, match, replace, search, split) 1.使用正则表达式的方法去匹配查找字符串 1.1. exec方法详解 ...

  3. Faster RCNN原理分析(二):Region Proposal Networks详解

    Faster RCNN原理分析(二):Region Proposal Networks详解 http://lib.csdn.net/article/deeplearning/61641 0814: A ...

  4. “全栈2019”Java第六十二章:接口与常量详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  5. “全栈2019”Java第五十二章:继承与初始化详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  6. 2017.3.31 spring mvc教程(二)核心流程及配置详解

    学习的博客:http://elf8848.iteye.com/blog/875830/ 我项目中所用的版本:4.2.0.博客的时间比较早,11年的,学习的是Spring3 MVC.不知道版本上有没有变 ...

  7. MongoDB复制集原理、环境配置及基本测试详解

    一.MongoDB复制集概述 MongoDB复制集实现了冗余备份和故障转移两大功能,这样能保证数据库的高可用性.在生产环境,复制集至少包括三个节点,其中一个必须为主节点,一个从节点,一个仲裁节点.其中 ...

  8. 2、Redis 底层原理:Cluster 集群部署与详解

    Redis 简介 Redis 提供数据缓存服务,内部数据都存在内存中,所以访问速度非常快. 早期,Redis 单应用服务亦能满足企业的需求.之后,业务量的上升,单机的读写能力满足不了业务的需求,技术上 ...

  9. kafka之二:Kafka 设计与原理详解

    一.Kafka简介 本文综合了我之前写的kafka相关文章,可作为一个全面了解学习kafka的培训学习资料. 转载请注明出处 : 本文链接 1.1 背景历史 当今社会各种应用系统诸如商业.社交.搜索. ...

随机推荐

  1. 65279 !!!BOM

    java.lang.NumberFormatException: For input string: "1".莫名其妙的String的第一个字符,是个空格样的东西,但绝对不是空格, ...

  2. LLVM与Clang的概述及关系

    LLVM是构架编译器(compiler)的框架系统,以C++编写而成,用于优化以任意程序语言编写的程序的编译时间(compile-time).链接时间(link-time).运行时间(run-time ...

  3. cf 710 E Generate a String

    题意: 开始你有数字$0$,你可以用代价$x$将该数字加$1$或减$1$(当$x > 0$时),或用代价$y$将该数字变为$2x$,那么问得到数字$n$所需的最少代价是多少. 数据范围$1 \l ...

  4. 为现有图像处理程序添加读写exif的功能

    为现有图像处理程序添加读取exif的功能 exif是图片的重要参数,在使用过程中很关键的一点是exif的数据能够和图片一起存在.exif的相关功能在操作系统中就集成了,在csharp中也似乎有了实现. ...

  5. ASP.NET Core 使用 AutoFac 注入 DbContext

    DI 1.0 -- 通过 RegisterInstance 注入 一开始,并不是很懂 AutoFac 的用法,又因为要使用特定的构造器和参数来初始化 DbContext,所以我想到的办法就是使用 Re ...

  6. Mac环境下JDK安装方法

    1.版本 MAC OS 10.10.3 JDK:jdk1.8.0_40 jdk下载mac版本的:http://www.oracle.com/technetwork/java/javase/downlo ...

  7. tinkphp登录验证码的使用

    登录和验证(控制器) <?php namespace Come\Controller; use Think\Controller; class RenController extends Con ...

  8. docker私有库UI和添加私有库到本机能够push和pull

    $ docker run -p 8080:8080 -e REG1=http://104.236.246.10:5000/v1/ atcol/docker-registry-ui$ docker ru ...

  9. python之socket

    一.初识socket      socket 是网络连接端点,每个socket都被绑定到一个特定的IP地址和端口.IP地址是一个由4个数组成的序列,这4个数均是范围 0~255中的值(例如,     ...

  10. [OC] 理解Bitcode:一种中间代码

    Tip:参考资料 理解Bitcode:一种中间代码 (内容从该博客摘录的.本随笔摘录些简要内容.) App Distribution Guide – App Thinning (iOS, watchO ...