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节点的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

(0)

相关推荐

  • Mongodb增加、移除Arbiter节点实例

    增加Arbiter 增加配置文件mongod1,mongod2,mongod3分别为shard1,shard2,shard3三个set集合的arbiter. 复制代码 代码如下: replSet=shard1 replSet=shard2 replSet=shard3 启动mongod实例. 连接Primary. 复制代码 代码如下: rs.addArb("192.168.1.50:10001″) rs.addArb("192.168.1.50:10002″) rs.addArb(&q

  • 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:4

  • MongoDB添加secondary节点的2种方法详解

    前言 前段时间维护的一个事业群的其中一条业务线的开发找到运维,提出来了一个MongoDB的优化问题,那段时间MongoDB正在从op管理移交给db进行维护,整个部门都对MongoDB的运维经验缺乏,MongoDB的优化更是一个未知的挑战.当op找到我,核心系统的公共服务平台用来进行短信服务的MongoDB集群想进行一次优化,我当仁不能让的承担了这项我都觉得可能搞不定的任务. 开发找到我提出了两点儿问题,并寻求运维团队解决这个问题,不过最终在我的理性的思考和他感性的思维碰撞下,最终我还是以胜利者的

  • JavaScript动态添加style节点的方法

    本文实例讲述了JavaScript动态添加style节点的方法.分享给大家供大家参考.具体如下: var css = 'h1 { background: red; }', head = document.getElementsByTagName('head')[0], style = document.createElement('style'); style.type = 'text/css'; if(style.styleSheet){ style.styleSheet.cssText =

  • bootstrap treeview 扩展addNode方法动态添加子节点的方法

    bootstrap-treeview是一款效果非常酷的基于bootstrap的jQuery多级列表树插件.该jQuery插件基于Twitter Bootstrap,以简单和优雅的方式来显示一些继承树结构,如视图树.列表树等等. 本文只是详细说明对bootstrap-treeview添加子节点的扩展方法(addNode),如了解bootstrap-treeview所有用法请看官方API 官方api  https://www.npmjs.com/package/bootstrap-treeview 

  • PyQt5中向单元格添加控件的方法示例

    1.简介 pyqt 列表 单元格中 不仅可以添加数据,还可以添加控件. 我们尝试添加下拉列表.一个按钮试试. setItem:将文本放到单元格中 setCellWidget:将控件放到单元格中 setStyleSheet:设置控件的样式(Qt StyleSheet) 2.功能实现 # -*- coding: utf-8 -*- ''' [简介] PyQT5中 单元格里面放控件 ''' import sys from PyQt5.QtWidgets import (QWidget, QTableW

  • VC++实现添加文件关联的方法示例

    本文实例讲述了VC++实现添加文件关联的方法.分享给大家供大家参考,具体如下: // 检测文件关联情况 // strExt: 要检测的扩展名(例如: ".txt") // strAppKey: ExeName扩展名在注册表中的键值(例如: "txtfile") // 返回TRUE: 表示已关联,FALSE: 表示未关联 BOOL CheckFileRelation(const char *strExt, const char *strAppKey) { int nR

  • JS实现访问DOM对象指定节点的方法示例

    本文实例讲述了JS实现访问DOM对象指定节点的方法.分享给大家供大家参考,具体如下: 一 介绍 使用getElementById()方法来访问指定id的节点,并用nodeName属性.nodeType属性和nodeValue属性来显示出该节点名称.节点类型和节点值. 1.nodeName属性 该属性用来获取某一个节点的名称. [sName=]obj.nodeName sName:字符串变量用来存储节点的名称. 2.nodeType属性 该属性用来获取某一个节点的类型. [sType=]obj.n

  • JS简单实现动态添加HTML标记的方法示例

    本文实例讲述了JS简单实现动态添加HTML标记的方法.分享给大家供大家参考,具体如下: 一 介绍 动态添加一个HTML标记可以使用createElement()方法来实现. CreateElement()方法可以根据一个指定的类型来创建一个HTML标记. 语法: sElement=document.createElement(sName) sElement:用来接收该方法返回的一个对象. sName:用来设置HTML标记的类型和基本属性. 二 应用 动态添加一个文本框 本示例通过单击"动态添加文

  • JS简单添加元素新节点的方法示例

    本文实例讲述了JS简单添加元素新节点的方法.分享给大家供大家参考,具体如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>www.jb51.net - JS添加新节点的几种方法</title> </head> <body> <div id="d">

  • jQuery插件zTree实现删除树节点的方法示例

    本文实例讲述了jQuery插件zTree实现删除树节点的方法.分享给大家供大家参考,具体如下: 1.实现代码: <!DOCTYPE html> <html> <head> <title>zTree实现基本树</title> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <link rel="

随机推荐