mongodb添加arbiter节点的方法示例

 更新时间:2017年02月23日 09:33:17   作者:OracleBlog  
这篇文章主要给大家分享了关于利用mongodb添加arbiter节点的方法示例,文中给出了详细的示例代码,相信对大家具有一定的参考价值,需要的朋友们下面来一起看看吧。

前言

在创建mongodb的replica set的时候,只是做成了1主2从,没有做成1主1从1仲裁。这我们将一个几点从replica set中删除,再以仲裁节点的身份加入到replica set中:

1.初始状态:

shard1ReplSet:PRIMARY> rs.status();rs.status();
{
  "set" : "shard1ReplSet",
  "date" : ISODate("2017-02-21T07:48:03.058Z"),
  "myState" : 1,
  "term" : NumberLong(1),
  "heartbeatIntervalMillis" : NumberLong(2000),
  "optimes" : {
    "lastCommittedOpTime" : {
      "ts" : Timestamp(0, 0),
      "t" : NumberLong(-1)
    },
    "appliedOpTime" : {
      "ts" : Timestamp(1487663274, 1),
      "t" : NumberLong(1)
    },
    "durableOpTime" : {
      "ts" : Timestamp(1487587982, 1),
      "t" : NumberLong(-1)
    }
  },
  "members" : [
    {
      "_id" : 0,
      "name" : "10.13.0.130:22001",
      "health" : 1,
      "state" : 1,
      "stateStr" : "PRIMARY",
      "uptime" : 76672,
      "optime" : {
        "ts" : Timestamp(1487663274, 1),
        "t" : NumberLong(1)
      },
      "optimeDate" : ISODate("2017-02-21T07:47:54Z"),
      "electionTime" : Timestamp(1487587993, 1),
      "electionDate" : ISODate("2017-02-20T10:53:13Z"),
      "configVersion" : 1,
      "self" : true
    },
    {
      "_id" : 1,
      "name" : "10.13.0.131:22001",
      "health" : 1,
      "state" : 2,
      "stateStr" : "SECONDARY",
      "uptime" : 75300,
      "optime" : {
        "ts" : Timestamp(1487663274, 1),
        "t" : NumberLong(1)
      },
      "optimeDurable" : {
        "ts" : Timestamp(1487587982, 1),
        "t" : NumberLong(-1)
      },
      "optimeDate" : ISODate("2017-02-21T07:47:54Z"),
      "optimeDurableDate" : ISODate("2017-02-20T10:53:02Z"),
      "lastHeartbeat" : ISODate("2017-02-21T07:48:02.150Z"),
      "lastHeartbeatRecv" : ISODate("2017-02-21T07:48:02.215Z"),
      "pingMs" : NumberLong(0),
      "syncingTo" : "10.13.0.132:22001",
      "configVersion" : 1
    },
    {
      "_id" : 2,
      "name" : "10.13.0.132:22001",
      "health" : 1,
      "state" : 2,
      "stateStr" : "SECONDARY",
      "uptime" : 75300,
      "optime" : {
        "ts" : Timestamp(1487663274, 1),
        "t" : NumberLong(1)
      },
      "optimeDurable" : {
        "ts" : Timestamp(1487587982, 1),
        "t" : NumberLong(-1)
      },
      "optimeDate" : ISODate("2017-02-21T07:47:54Z"),
      "optimeDurableDate" : ISODate("2017-02-20T10:53:02Z"),
      "lastHeartbeat" : ISODate("2017-02-21T07:48:02.889Z"),
      "lastHeartbeatRecv" : ISODate("2017-02-21T07:48:01.503Z"),
      "pingMs" : NumberLong(0),
      "syncingTo" : "10.13.0.130:22001",
      "configVersion" : 1
    }
  ],
  "ok" : 1
}
shard1ReplSet:PRIMARY> 
shard1ReplSet:PRIMARY> 
shard1ReplSet:PRIMARY> 
shard1ReplSet:PRIMARY> 

2.删除节点:

shard1ReplSet:PRIMARY> rs.remove("10.13.0.132:22001"); rs.remove("10.13.0.132:22001"); 
{ "ok" : 1 }
shard1ReplSet:PRIMARY> rs.status();rs.status();
{
  "set" : "shard1ReplSet",
  "date" : ISODate("2017-02-21T07:50:52.934Z"),
  "myState" : 1,
  "term" : NumberLong(1),
  "heartbeatIntervalMillis" : NumberLong(2000),
  "optimes" : {
    "lastCommittedOpTime" : {
      "ts" : Timestamp(0, 0),
      "t" : NumberLong(-1)
    },
    "appliedOpTime" : {
      "ts" : Timestamp(1487663447, 1),
      "t" : NumberLong(1)
    },
    "durableOpTime" : {
      "ts" : Timestamp(1487587982, 1),
      "t" : NumberLong(-1)
    }
  },
  "members" : [
    {
      "_id" : 0,
      "name" : "10.13.0.130:22001",
      "health" : 1,
      "state" : 1,
      "stateStr" : "PRIMARY",
      "uptime" : 76841,
      "optime" : {
        "ts" : Timestamp(1487663447, 1),
        "t" : NumberLong(1)
      },
      "optimeDate" : ISODate("2017-02-21T07:50:47Z"),
      "electionTime" : Timestamp(1487587993, 1),
      "electionDate" : ISODate("2017-02-20T10:53:13Z"),
      "configVersion" : 2,
      "self" : true
    },
    {
      "_id" : 1,
      "name" : "10.13.0.131:22001",
      "health" : 1,
      "state" : 2,
      "stateStr" : "SECONDARY",
      "uptime" : 75470,
      "optime" : {
        "ts" : Timestamp(1487663447, 1),
        "t" : NumberLong(1)
      },
      "optimeDurable" : {
        "ts" : Timestamp(1487587982, 1),
        "t" : NumberLong(-1)
      },
      "optimeDate" : ISODate("2017-02-21T07:50:47Z"),
      "optimeDurableDate" : ISODate("2017-02-20T10:53:02Z"),
      "lastHeartbeat" : ISODate("2017-02-21T07:50:51.182Z"),
      "lastHeartbeatRecv" : ISODate("2017-02-21T07:50:52.212Z"),
      "pingMs" : NumberLong(0),
      "configVersion" : 2
    }
  ],
  "ok" : 1
}
shard1ReplSet:PRIMARY> 
shard1ReplSet:PRIMARY> 
shard1ReplSet:PRIMARY> 

3.添加成arbiter节点:

shard1ReplSet:PRIMARY> rs.addArb("10.13.0.132:22001");rs.addArb("10.13.0.132:22001");
{ "ok" : 1 }
shard1ReplSet:PRIMARY> 
shard1ReplSet:PRIMARY> rs.status();rs.status();
{
  "set" : "shard1ReplSet",
  "date" : ISODate("2017-02-21T07:54:05.161Z"),
  "myState" : 1,
  "term" : NumberLong(1),
  "heartbeatIntervalMillis" : NumberLong(2000),
  "optimes" : {
    "lastCommittedOpTime" : {
      "ts" : Timestamp(0, 0),
      "t" : NumberLong(-1)
    },
    "appliedOpTime" : {
      "ts" : Timestamp(1487663637, 1),
      "t" : NumberLong(1)
    },
    "durableOpTime" : {
      "ts" : Timestamp(1487587982, 1),
      "t" : NumberLong(-1)
    }
  },
  "members" : [
    {
      "_id" : 0,
      "name" : "10.13.0.130:22001",
      "health" : 1,
      "state" : 1,
      "stateStr" : "PRIMARY",
      "uptime" : 77034,
      "optime" : {
        "ts" : Timestamp(1487663637, 1),
        "t" : NumberLong(1)
      },
      "optimeDate" : ISODate("2017-02-21T07:53:57Z"),
      "electionTime" : Timestamp(1487587993, 1),
      "electionDate" : ISODate("2017-02-20T10:53:13Z"),
      "configVersion" : 3,
      "self" : true
    },
    {
      "_id" : 1,
      "name" : "10.13.0.131:22001",
      "health" : 1,
      "state" : 2,
      "stateStr" : "SECONDARY",
      "uptime" : 75662,
      "optime" : {
        "ts" : Timestamp(1487663637, 1),
        "t" : NumberLong(1)
      },
      "optimeDurable" : {
        "ts" : Timestamp(1487587982, 1),
        "t" : NumberLong(-1)
      },
      "optimeDate" : ISODate("2017-02-21T07:53:57Z"),
      "optimeDurableDate" : ISODate("2017-02-20T10:53:02Z"),
      "lastHeartbeat" : ISODate("2017-02-21T07:54:03.210Z"),
      "lastHeartbeatRecv" : ISODate("2017-02-21T07:54:02.211Z"),
      "pingMs" : NumberLong(0),
      "configVersion" : 3
    },
    {
      "_id" : 2,
      "name" : "10.13.0.132:22001",
      "health" : 1,
      "state" : 7,
      "stateStr" : "ARBITER",
      "uptime" : 5,
      "lastHeartbeat" : ISODate("2017-02-21T07:54:03.214Z"),
      "lastHeartbeatRecv" : ISODate("2017-02-21T07:54:02.274Z"),
      "pingMs" : NumberLong(0),
      "configVersion" : 3
    }
  ],
  "ok" : 1
}
shard1ReplSet:PRIMARY> 

注1: mongodb 3.4之后,虽然要求config server为replica set,但是不支持arbiter。

添加的时候,会报错:

cfgReplSet:PRIMARY> rs.addArb("10.13.0.132:21000");rs.addArb("10.13.0.132:21000");
{
  "ok" : 0,
  "errmsg" : "Arbiters are not allowed in replica set configurations being used for config servers",
  "code" : 103,
  "codeName" : "NewReplicaSetConfigurationIncompatible"
}
cfgReplSet:PRIMARY> 

注2:rs.reconfig()也可以进行操作,效果类似re.remove+rs.addArb,详见:mongodb官方文档- Remove Members from Replica Set

总结

以上就是关于mongodb添加arbiter节点的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

相关文章

  • MongoDB系列教程(八):GridFS存储详解

    MongoDB系列教程(八):GridFS存储详解

    这篇文章主要介绍了MongoDB系列教程(八):GridFS存储详解,本文讲解了什么是GridFS、GridFS的实现原理等内容,需要的朋友可以参考下
    2015-05-05
  • Mongodb数据库两种启动方法小结

    Mongodb数据库两种启动方法小结

    MongoDB是一种开源的服务器端NoSQL数据库管理系统,它提供了一种灵活的框架,可以快速地存储、处理和管理大量的数据,这篇文章主要给大家介绍了关于Mongodb数据库两种启动方法的相关资料,需要的朋友可以参考下
    2023-12-12
  • MongoDB索引类型汇总分享

    MongoDB索引类型汇总分享

    这篇文章主要介绍了MongoDB索引类型汇总,单字段索引、复合索引、多键索引、文本索引、2dsphere索引等多种索引类型,需要的朋友可以参考一下
    2022-04-04
  • mongoDB在windows下安装与配置方案

    mongoDB在windows下安装与配置方案

    本文详细介绍了在windows系统下安装与配置mongoDB的详细过程,非常的全面,有需要的小伙伴自己参考下吧
    2014-12-12
  • MongoDB和mysql的区别对比分析

    MongoDB和mysql的区别对比分析

    MongoDB 是一个基于分布式文件存储的数据库,而MySQL 是一款安全、跨平台、高效的,并与 PHP、Java 等主流编程语言紧密结合的数据库系统,本文重点给大家介绍MongoDB和mysql的区别,需要的朋友可以参考下
    2023-01-01
  • Ubuntu 14.04  安装 MongoDB 及 PHP MongoDB Driver详细介绍

    Ubuntu 14.04 安装 MongoDB 及 PHP MongoDB Driver详细介绍

    这篇文章主要介绍了Ubuntu 14.04 安装 MongoDB 及 PHP MongoDB Driver详细介绍的相关资料,需要的朋友可以参考下
    2016-10-10
  • MongoDB学习笔记—Linux下搭建MongoDB环境

    MongoDB学习笔记—Linux下搭建MongoDB环境

    本篇文章主要介绍了Linux下搭建MongoDB环境,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-11-11
  • mongose 模糊检索实现方法示例详解

    mongose 模糊检索实现方法示例详解

    这篇文章主要为大家介绍了mongose 模糊检索实现方法示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-08-08
  • MongoDB 模式设计详解

    MongoDB 模式设计详解

    这篇文章主要介绍了MongoDB 模式设计详解的相关资料,需要的朋友可以参考下
    2022-12-12
  • mongodb清除连接和日志的正确方法分享

    mongodb清除连接和日志的正确方法分享

    这篇文章主要给大家介绍了关于mongodb清除连接和日志的正确方法,文中通过示例代码介绍的非常详细,对大家学习或者使用mongodb具有一定的参考学习价值,需要的朋友可以参考下
    2021-09-09

最新评论