一 安装

1.1 下载MongoDB

我个人不太喜欢用wget url, 之前出现过wget下载的包有问题的情况

https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.4.7.tgz

1.2 上传服务器并解压

tar -zxvf mongodb-linux-x86_64-3.4.7.tgz 

1.3 移动到/data/program/software/mongodb

mv mongodb-linux-x86_64-3.4.7/ /data/program/software/mongodb

1.4 进入到mongodb目录下

mkdir db
mkdir logs

1.5 进入到bin目录下

新建配置文件:touch mongodb.conf

dbpath=/data/program/software/mongodb/db
logpath=/data/program/software/mongodb/logs/mongodb.log
port=27017
fork=true
nohttpinterface=true

1.6 启动

分别在三台机器上启动

/data/program/software/mongodb/bin/mongod --replSet repset -f /data/program/software/mongodb/bin/mongodb.conf

1.7 查看是否启动成功

ps -ef |grep mongodb

1.8 建立集群

1.8.1 登录客户端

选择以上任意一台服务器登录客户端

/data/program/software/mongodb/bin/mongo

1.8.2 切换到admin数据库

use admin

1.8.3 建立集群

定义副本集配置变量,这里的_id:"repset"和上面命理参数--replSet repset保持一致

config={_id:"repset", members:[{_id:0,host:"132.232.47.139"},{_id:1,host:"45.40.199.46"},{_id:2,host:"132.232.40.31"}]}

输入以上变量后输入下面内容说明没问题

rs.initiate(config)

执行上面语句,如果输出下面内容说明没问题

1.8.5 查看集群状态

rs.status()
{
"set" : "repset",
"date" : ISODate("2018-08-05T12:20:02.096Z"),
"myState" : 1,
"term" : NumberLong(1),
"heartbeatIntervalMillis" : NumberLong(2000),
"optimes" : {
"lastCommittedOpTime" : {
"ts" : Timestamp(1533471594, 1),
"t" : NumberLong(1)
},
"appliedOpTime" : {
"ts" : Timestamp(1533471594, 1),
"t" : NumberLong(1)
},
"durableOpTime" : {
"ts" : Timestamp(1533471594, 1),
"t" : NumberLong(1)
}
},
"members" : [
{
"_id" : 0,
"name" : "132.232.47.139:27017",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"uptime" : 4360,
"optime" : {
"ts" : Timestamp(1533471594, 1),
"t" : NumberLong(1)
},
"optimeDate" : ISODate("2018-08-05T12:19:54Z"),
"infoMessage" : "could not find member to sync from",
"electionTime" : Timestamp(1533471513, 1),
"electionDate" : ISODate("2018-08-05T12:18:33Z"),
"configVersion" : 1,
"self" : true
},
{
"_id" : 1,
"name" : "45.40.199.46:27017",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 100,
"optime" : {
"ts" : Timestamp(1533471594, 1),
"t" : NumberLong(1)
},
"optimeDurable" : {
"ts" : Timestamp(1533471594, 1),
"t" : NumberLong(1)
},
"optimeDate" : ISODate("2018-08-05T12:19:54Z"),
"optimeDurableDate" : ISODate("2018-08-05T12:19:54Z"),
"lastHeartbeat" : ISODate("2018-08-05T12:20:01.211Z"),
"lastHeartbeatRecv" : ISODate("2018-08-05T12:20:01.767Z"),
"pingMs" : NumberLong(0),
"syncingTo" : "132.232.47.139:27017",
"configVersion" : 1
},
{
"_id" : 2,
"name" : "132.232.40.31:27017",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 100,
"optime" : {
"ts" : Timestamp(1533471594, 1),
"t" : NumberLong(1)
},
"optimeDurable" : {
"ts" : Timestamp(1533471594, 1),
"t" : NumberLong(1)
},
"optimeDate" : ISODate("2018-08-05T12:19:54Z"),
"optimeDurableDate" : ISODate("2018-08-05T12:19:54Z"),
"lastHeartbeat" : ISODate("2018-08-05T12:20:01.211Z"),
"lastHeartbeatRecv" : ISODate("2018-08-05T12:20:01.769Z"),
"pingMs" : NumberLong(0),
"syncingTo" : "132.232.47.139:27017",
"configVersion" : 1
}
],
"ok" : 1
}

1.8.6 测试集群功能

a 主节点服务器登录客户端

./mongo

b 连接test数据库

use test

c 往testdb表中插入数据

db.testdb.insert({"test1":"testval1"})

d 连接到副本节点客户端

./mongo 45.40.199.46:27017

e 使用test数据库

use test

f 查询表格

show tables

如果出现以下报错

mongodb默认是从主节点读写数据,副本节点上不允许读,设置副本节点可读

g 设置读权限

db.getMongo().setSlaveOk()

h 查询在主节点上插入的数据

db.testdb.find()

i 测试集群恢复功能

1 将主节点服务停掉后在登录其他节点客户端查看集群状态
{
"set" : "repset",
"date" : ISODate("2018-08-05T13:15:05.136Z"),
"myState" : 1,
"term" : NumberLong(2),
"heartbeatIntervalMillis" : NumberLong(2000),
"optimes" : {
"lastCommittedOpTime" : {
"ts" : Timestamp(1533474896, 1),
"t" : NumberLong(2)
},
"appliedOpTime" : {
"ts" : Timestamp(1533474896, 1),
"t" : NumberLong(2)
},
"durableOpTime" : {
"ts" : Timestamp(1533474896, 1),
"t" : NumberLong(2)
}
},
"members" : [
{
"_id" : 0,
"name" : "132.232.47.139:27017",
"health" : 0,
"state" : 8,
"stateStr" : "(not reachable/healthy)",
"uptime" : 0,
"optime" : {
"ts" : Timestamp(0, 0),
"t" : NumberLong(-1)
},
"optimeDurable" : {
"ts" : Timestamp(0, 0),
"t" : NumberLong(-1)
},
"optimeDate" : ISODate("1970-01-01T00:00:00Z"),
"optimeDurableDate" : ISODate("1970-01-01T00:00:00Z"),
"lastHeartbeat" : ISODate("2018-08-05T13:15:03.341Z"),
"lastHeartbeatRecv" : ISODate("2018-08-05T13:12:24.585Z"),
"pingMs" : NumberLong(0),
"lastHeartbeatMessage" : "Connection refused",
"configVersion" : -1
},
{
"_id" : 1,
"name" : "45.40.199.46:27017",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"uptime" : 7653,
"optime" : {
"ts" : Timestamp(1533474896, 1),
"t" : NumberLong(2)
},
"optimeDate" : ISODate("2018-08-05T13:14:56Z"),
"electionTime" : Timestamp(1533474755, 1),
"electionDate" : ISODate("2018-08-05T13:12:35Z"),
"configVersion" : 1,
"self" : true
},
{
"_id" : 2,
"name" : "132.232.40.31:27017",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 3401,
"optime" : {
"ts" : Timestamp(1533474896, 1),
"t" : NumberLong(2)
},
"optimeDurable" : {
"ts" : Timestamp(1533474896, 1),
"t" : NumberLong(2)
},
"optimeDate" : ISODate("2018-08-05T13:14:56Z"),
"optimeDurableDate" : ISODate("2018-08-05T13:14:56Z"),
"lastHeartbeat" : ISODate("2018-08-05T13:15:03.282Z"),
"lastHeartbeatRecv" : ISODate("2018-08-05T13:15:03.165Z"),
"pingMs" : NumberLong(0),
"syncingTo" : "45.40.199.46:27017",
"configVersion" : 1
}
],
"ok" : 1
}

结论:_id=1的服务现在变成了主节点,_id=0的服务现在不可用了

2 再次将原来的132.232.47.139这台机器启动起来
{
"set" : "repset",
"date" : ISODate("2018-08-05T13:19:08.073Z"),
"myState" : 1,
"term" : NumberLong(2),
"heartbeatIntervalMillis" : NumberLong(2000),
"optimes" : {
"lastCommittedOpTime" : {
"ts" : Timestamp(1533475146, 1),
"t" : NumberLong(2)
},
"appliedOpTime" : {
"ts" : Timestamp(1533475146, 1),
"t" : NumberLong(2)
},
"durableOpTime" : {
"ts" : Timestamp(1533475146, 1),
"t" : NumberLong(2)
}
},
"members" : [
{
"_id" : 0,
"name" : "132.232.47.139:27017",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 4,
"optime" : {
"ts" : Timestamp(1533474744, 1),
"t" : NumberLong(1)
},
"optimeDurable" : {
"ts" : Timestamp(1533474744, 1),
"t" : NumberLong(1)
},
"optimeDate" : ISODate("2018-08-05T13:12:24Z"),
"optimeDurableDate" : ISODate("2018-08-05T13:12:24Z"),
"lastHeartbeat" : ISODate("2018-08-05T13:19:07.545Z"),
"lastHeartbeatRecv" : ISODate("2018-08-05T13:19:03.326Z"),
"pingMs" : NumberLong(0),
"configVersion" : 1
},
{
"_id" : 1,
"name" : "45.40.199.46:27017",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"uptime" : 7896,
"optime" : {
"ts" : Timestamp(1533475146, 1),
"t" : NumberLong(2)
},
"optimeDate" : ISODate("2018-08-05T13:19:06Z"),
"electionTime" : Timestamp(1533474755, 1),
"electionDate" : ISODate("2018-08-05T13:12:35Z"),
"configVersion" : 1,
"self" : true
},
{
"_id" : 2,
"name" : "132.232.40.31:27017",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 3644,
"optime" : {
"ts" : Timestamp(1533475146, 1),
"t" : NumberLong(2)
},
"optimeDurable" : {
"ts" : Timestamp(1533475146, 1),
"t" : NumberLong(2)
},
"optimeDate" : ISODate("2018-08-05T13:19:06Z"),
"optimeDurableDate" : ISODate("2018-08-05T13:19:06Z"),
"lastHeartbeat" : ISODate("2018-08-05T13:19:07.360Z"),
"lastHeartbeatRecv" : ISODate("2018-08-05T13:19:07.255Z"),
"pingMs" : NumberLong(0),
"syncingTo" : "45.40.199.46:27017",
"configVersion" : 1
}
],
"ok" : 1
}

结论:_id=1的这个服务还是主节点,_id=0的服务变成了副本节点

架构(三)MongoDB安装配置以及集群搭建的更多相关文章

  1. Linux中安装配置spark集群

    一. Spark简介 Spark是一个通用的并行计算框架,由UCBerkeley的AMP实验室开发.Spark基于map reduce 算法模式实现的分布式计算,拥有Hadoop MapReduce所 ...

  2. [转帖]kafka入门:简介、使用场景、设计原理、主要配置及集群搭建

    kafka入门:简介.使用场景.设计原理.主要配置及集群搭建 http://www.aboutyun.com/thread-9341-1-1.html 还没看完 感觉挺好的. 问题导读: 1.zook ...

  3. Linux07 /redis的配置、五大数据类型、发布订阅、持久化、主从复制、哨兵配置、集群搭建

    Linux07 /redis的配置.五大数据类型.发布订阅.持久化.主从复制.哨兵配置.集群搭建 目录 Linux07 /redis的配置.五大数据类型.发布订阅.持久化.主从复制.哨兵配置.集群搭建 ...

  4. MongoDB windows基础配置及集群搭建

    由于公司业务的发展MSSQL已处于瓶颈.因为没钱买牛逼服务器只能靠软件来实现最大优化了.原来的系统架构如下图:

  5. Linux中安装配置hadoop集群

    一. 简介 参考了网上许多教程,最终把hadoop在ubuntu14.04中安装配置成功.下面就把详细的安装步骤叙述一下.我所使用的环境:两台ubuntu 14.04 64位的台式机,hadoop选择 ...

  6. MongoDB(六)-- 集群搭建

    一.集群介绍 sharding通过将数据集分布于多个也称作分片(shard)的节点上来降低单节点的访问压力.每个分片都是一个独立的数据库,所有的分片组合起来构成一个逻辑上的完整意义的数据库.因此,分片 ...

  7. 架构师养成记--35.redis集群搭建

    前记:redis哨兵经验之谈.哨兵做主从切换可能要花费一两秒,这一两秒可能会丢失很多数据.解决方法之一是在java代码中做控制,try catch 到 链接断开的异常就sleep 一两秒钟再conti ...

  8. MongoDB——基本使用及集群搭建

    文章目录 什么是MongoDb? 基本概念 与关系型数据库的比较 Mongo的高效性 文件存储 基本使用 启动/连接服务 基础操作命令 高可用集群搭建 概念 环境准备 实践 应用场景 总结 什么是Mo ...

  9. helm安装redis+Sentinel集群搭建

    一.redis集群特点 数据 在多个Redis节点之间自动分片 sentinel特点: 它的主要功能有以下几点 不时地监控redis是否按照预期良好地运行; 如果发现某个redis节点运行出现状况,能 ...

随机推荐

  1. SpringMVC中注解@RequestBody和@ResponseBody的使用区别

    首先上源码 在面试时经常会问到我们如何使用SpringMVC将Http请求转换为java对象,或者又是问如何将结果转换为java的呢? SpringMVC在接收到请求之后HandlerMapping像 ...

  2. 毕设之iframe跳转子页面问题

    我的Django项目中的index.html分为三个层次,head.body.footer.其中body细分为left和right两部分,right的地图是使用iframe嵌入的map.html页面, ...

  3. Learning to Promote Saliency Detectors

    Learning to Promote Saliency Detectors 原本放在了思否上, 但是公式支持不好, csdn广告太多, 在博客园/掘金上发一下 https://github.com/ ...

  4. EasyPR源码剖析(9):字符识别

    在上一篇文章的介绍中,我们已经通过相应的字符分割方法,将车牌区域进行分割,得到7个分割字符图块,接下来要做的就是将字符图块放入训练好的神经网络模型,通过模型来预测每个图块所表示的具体字符.神经网络的介 ...

  5. 印度视觉设计师Rishab平面设计作品,简直太美了!

    来自印度的视觉设计师Rishab Jindal(@iamrishabjindal) 你别以为仅仅是视觉上吸引你眼球. 其实融入和宗教和z哲学. 你慢慢品味一下. 这张有点意思 有一种末日丧尸围城的氛围 ...

  6. 在Jenkins上配置批处理删除远程共享目录7天以上的文件

    net use * /del /yes NET USE X: \\10.29.48.12\shares\Test password /user:DOMAIN1\account set AutoPath ...

  7. testXSS <img src="aa" onerror="javascript:alert('XSS');"/>

    adsa  </p><img src="aa" onerror="javascript:alert('XSS');"/><p> ...

  8. web安全之机器学习入门——3.2 决策树与随机森林

    目录 简介 决策树简单用法 决策树检测P0P3爆破 决策树检测FTP爆破 随机森林检测FTP爆破 简介 决策树和随机森林算法是最常见的分类算法: 决策树,判断的逻辑很多时候和人的思维非常接近. 随机森 ...

  9. Python_格式化字符

    %% 百分号标记 #就是输出一个%%c 字符及其ASCII码%s 字符串 %r 是不管是什么打印出来%d 有符号整数(十进制)%u 无符号整数(十进制)%o 无符号整数(八进制)%x 无符号整数(十六 ...

  10. Java 初学UDP传输

    不谈理论,先举简单例子. 发送端代码: public class UDPDemo { public static void main(String[] args) throws Exception { ...