MongoDB做集群,版本3.2官网推荐的集群方式Replica Set
准备服务器3台
两个standard节点(这两个节点直接可以互切primary secondary)。
一个arbiter节点,它手中握着一张选票,决定上面两个standard节点中的哪一个可以成为primay。
机器名称和预承担的角色如下:
test39 primary
test41 secondary
test42 arbiter
 
介绍一下涉及到的参数
--dbpath   数据文件路径
--logpath  日志文件路径
--port        端口号,默认是27017.我这里使用的也是这个端口号.
--replSet   复制集的名字,一个replica sets中的每个节点的这个参数都要用一个复制集名字,这里是test.
--replSet test/  这个后面跟的是其他standard节点的ip和端口
--maxConns   最大连接数
--fork       后台运行
--logappend   日志文件循环使用,如果日志文件已满,那么新日志覆盖最久日志。
操作流程:
1. 三台服务上分别启动mongo实例
bin/mongod --port 27017 --dbpath /home/baoshan/cluster/mongodb/data/mongodb --replSet baoshan
2. 添加replica sets配置,随意登录一台mongo实例
>use admin;
>cfg={_id:"baoshan", members:[ {_id:0,host:'test39:27017',priority:2}, {_id:1,host:'test41:27017',priority:1},{_id:2,host:'test42:27017',arbiterOnly:true}] };
>rs.initiate(cfg);
3. 验证是否成功
rs.status()通过这个命令,可以查看各个节点的ip、角色已经是否正常
rs.stepDown()这个命令可以强制primary和standard节点角色互换,从而验证是否能够实现failover功能。
或者primary上执行 use admin;db.shutdownServer();断掉primary看效果。
rs.isMaster()显示当前谁是primary
 
MongoDB replica sets中通过设置priority的值来决定优先权的大小,这个值的范围是0--100,值越大,优先权越高。
 
遇到的问题及解决办法:
baoshan:SECONDARY> show dbs;
2017-04-28T21:43:46.801+0800 E QUERY    [thread1] Error: listDatabases failed:{ "ok" : 0, "errmsg" : "not master and slaveOk=false", "code" : 13435 } :
_getErrorWithCode@src/mongo/shell/utils.js:25:13
Mongo.prototype.getDBs@src/mongo/shell/mongo.js:62:1
shellHelper.show@src/mongo/shell/utils.js:760:19
shellHelper@src/mongo/shell/utils.js:650:15
@(shellhelp2):1:1
 
baoshan:SECONDARY> rs.slaveOk()
baoshan:SECONDARY> show dbs;
admin     0.000GB
local     0.567GB
metadata  0.001GB
service   2.547GB
test      0.094GB
 
如果原来主库中有数据,在刚搭建完成集群后,secondary库的rs.status()会显示STARTUP2状态:
mongodb  replica set 集群,初始化的时候,一般都是copy不同的数据至各个结点,之后启动结点,添加至集群,之后查询状态会发现是  STARTUP2,这是因为集群初始化在同步数据,同步完数据之后,状态就变正常了!
附各状态:
  1. 1. STARTUP:刚加入到复制集中,配置还未加载
  2. 2. STARTUP2:配置已加载完,初始化状态
  3. 3. RECOVERING:正在恢复,不适用读
  4. 4. ARBITER: 仲裁者
  5. 5. DOWN:节点不可到达
  6. 6. UNKNOWN:未获取其他节点状态而不知是什么状态,一般发生在只有两个成员的架构,脑裂
  7. 7. REMOVED:移除复制集
  8. 8. ROLLBACK:数据回滚,在回滚结束时,转移到RECOVERING或SECONDARY状态
  9. 9. FATAL:出错。查看日志grep “replSet FATAL”找出错原因,重新做同步
  10. 10. PRIMARY:主节点
  11. 11. SECONDARY:备份节点
 重新设置replica set时,使用force,强制执行

rs.initiate(ctf)
{
"info" : "try querying local.system.replset to see current configuration",
"ok" : ,
"errmsg" : "already initialized",
"code" :
}
rs.reconfig(ctf)
{
"ok" : ,
"errmsg" : "replSetReconfig should only be run on PRIMARY, but my state is REMOVED; use the \"force\" argument to override",
"code" :
}
rs.reconfig(ctf, force: true)
--23T16::40.837+ E QUERY SyntaxError: Unexpected token :
rs.reconfig({ctf, force: true})
--23T16::48.546+ E QUERY SyntaxError: Unexpected token ,
rs.reconfig(ctf, { force: true})
{ "ok" : }
重要参考官方文档:https://docs.mongodb.com/manual/
参考文档:
Mongodb集群搭建的三种方式:http://blog.csdn.net/luonanqin/article/details/8497860
重新设置repliceset:http://www.jianshu.com/p/c9609ce8a558
 
 

MongoDB Replica Set搭建集群的更多相关文章

  1. MongoDB 3.0 常见集群的搭建(主从复制,副本集,分片....)

      一.mongodb主从复制配置 主从复制是mongodb最常用的复制方式,也是一个简单的数据库同步备份的集群技术,这种方式很灵活.可用于备份,故障恢复,读扩展等. 最基本的设置方式就是建立一个主节 ...

  2. mongodb 搭建集群(分片+副本集)

    mongodb  搭建集群(分片+副本集) 一.搭建结构图: 二.搭建步骤:

  3. 架构(三)MongoDB安装配置以及集群搭建

    一 安装 1.1 下载MongoDB 我个人不太喜欢用wget url, 之前出现过wget下载的包有问题的情况 https://fastdl.mongodb.org/linux/mongodb-li ...

  4. Redis 实战篇之搭建集群

    Redis 集群简介# Redis Cluster 即 Redis 集群,是 Redis 官方在 3.0 版本推出的一套分布式存储方案.完全去中心化,由多个节点组成,所有节点彼此互联.Redis 客户 ...

  5. mongodb replica set搭建

    1/安装mongodb 配置repo: [mongodb-org-3.4]name=MongoDB Repositorybaseurl=https://repo.mongodb.org/yum/red ...

  6. ELK——Elasticsearch 搭建集群经验

    本文内容 背景 ES集群中第一个master节点 ES slave节点 本文总结 Elasticsearch(以下简称ES)搭建集群的经验.以 Elasticsearch-rtf-2.2.1 版本为例 ...

  7. redis 一二事 - 搭建集群缓存服务器

    在如今并发的环境下,对大数据量的查询采用缓存是最好不过的了,本文使用redis搭建集群 (个人喜欢redis,对memcache不感冒) redis是3.0后增加的集群功能,非常强大 集群中应该至少有 ...

  8. Hadoop化繁为简-从安装Linux到搭建集群环境

    简介与环境准备 hadoop的核心是分布式文件系统HDFS以及批处理计算MapReduce.近年,随着大数据.云计算.物联网的兴起,也极大的吸引了我的兴趣,看了网上很多文章,感觉还是云里雾里,很多不必 ...

  9. Linux+.NetCore+Nginx搭建集群

    本篇和大家分享的是Linux+NetCore+Nginx搭建负载集群,对于netcore2.0发布后,我一直在看官网的文档并学习,关注有哪些新增的东西,我,一个从1.0到2.0的跟随者这里只总结一句话 ...

随机推荐

  1. TensorFlowIO操作(三)------图像操作

    图像操作 图像基本概念 在图像数字化表示当中,分为黑白和彩色两种.在数字化表示图片的时候,有三个因素.分别是图片的长.图片的宽.图片的颜色通道数.那么黑白图片的颜色通道数为1,它只需要一个数字就可以表 ...

  2. JavaScript实现计算器功能

    截图 : cal.js var Class = {} ; Class.calculation = function(){ var calculation = {} ; calculation.resu ...

  3. java设计模式5--原型模式(Prototype)

    本文地址:http://www.cnblogs.com/archimedes/p/java-prototype-pattern.html,转载请注明源地址. 原型模式 用原型实例指定创建对象的种类,并 ...

  4. Android -- SurfaceView绘制

    SurfaceView SurfaceView是View的一个特殊子类,它的目的是另外提供一个线程进行绘制操作. 步骤 1.用SurfaceView进行绘制,首先要创建一个类,继承 SurfaceVi ...

  5. Sn.exe(强名称工具)

    Sn.exe(强名称工具) .NET Framework 4.5   强名称工具 (Sn.exe) 有助于使用强名称对程序集进行签名. Sn.exe 提供了用于密钥管理.签名生成和签名验证的选项. 强 ...

  6. (剑指Offer)面试题6:重建二叉树

    题目: 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树. 假设输入的前序遍历和中序遍历结果中都不含重复的数字. 例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7, ...

  7. 推荐超实用的8款jQuery插件

    这里有8款超实用的jQuery插件供大家参考使用,除了jQuery特效的详细使用方法以外,我们还有在线演示和下载及教程,希望对大家有所帮助! 超棒的视差效果jQuery插件 - FractionSli ...

  8. PHP 杂项函数

    PHP 杂项 函数 PHP 杂项函数简介 我们把不属于其他类别的函数归纳到杂项函数类别. 安装 杂项函数是 PHP 核心的组成部分.无需安装即可使用这些函数. Runtime 配置 杂项函数的行为受 ...

  9. POI生成EXCEL文件(字体、样式、单元格合并、计算公式)

    创建一个封装类: package com.jason.excel; import java.io.FileNotFoundException; import java.io.FileOutputStr ...

  10. 讯飞语音唤醒SDK集成流程

    唤醒功能,顾名思义,通过语音,唤醒服务,做我们想做的事情. 效果图(开启应用后说讯飞语音或者讯飞语点唤醒) 源码下载 地址:http://download.csdn.net/detail/q48788 ...