一、基本概念

1、副本集:一个副本集就是一组MongoDB实例组成的集群,由一个主(Primary)服务器和多个备份(Secondary)服务器构成

2、主节点(master):主节点接收所有写入操作。主节点将对其数据集所做的所有更改记录到其 oplog。

3、副节点(secondary):复制主节点的 oplog 并将操作应用到其数据集,如果主节点不可用,一个合格的副节点将被选为新的主节点。

4、仲裁节点(arbiter):负载选举,当主节点不可用,它将从副节点中选一个作为主节点。

二、部署副本集

1、下载monodb镜像,我这里版本为:3.2.11

docker pull registry.cn-hangzhou.aliyuncs.com/boshen-ns/mongodb:3.2.11
docker tag docker pull registry.cn-hangzhou.aliyuncs.com/boshen-ns/mongodb:3.2.11 mongodb:3.2.11

2、创建三个mongodb的数据目录:

mkdir -p /home/mongodb-cluster/data/master
mkdir -p /home/mongodb-cluster/data/secondary
mkdir -p /home/mongodb-cluster/data/arbiter

3、编写docker-compose.yml

version: '2.1'
services:
master:
image: mongodb:3.2.
container_name: master
restart: always
ports:
- :
volumes:
- ./data/master:/data/db
command: mongod --dbpath /data/db --replSet testSet --oplogSize
secondary:
image: mongodb:3.2.
container_name: secondary
restart: always
ports:
- :
volumes:
- ./data/secondary:/data/db
command: mongod --dbpath /data/db --replSet testSet --oplogSize
arbiter:
image: mongodb:3.2.
container_name: arbiter
restart: always
ports:
- :
volumes:
- ./data/arbiter:/data/db
command: mongod --replSet testSet --smallfiles --oplogSize

4、启动

docker-compse up -d

5、配置副本集

1)进入容器内部:

docker exec -it master mongo

2)在mongo shell里面执行:rs.initiate()

3)继续执行:rs.add('172.16.1.11:27018')  表示将secondary添加进副本集

4)继续执行:rs.add('172.16.1.11:27019',true)   其中true表示这个节点是仲裁节点

5)查看配置

testSet:PRIMARY> rs.conf()
{
"_id" : "testSet",
"version" : 77284,
"protocolVersion" : NumberLong(1),
"members" : [
{
"_id" : 0,
"host" : "172.16.1.11:27017",
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : 1,
"tags" : { },
"slaveDelay" : NumberLong(0),
"votes" : 1
},
{
"_id" : 1,
"host" : "172.16.1.11:27018",
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : 1,
"tags" : { },
"slaveDelay" : NumberLong(0),
"votes" : 1
},
{
"_id" : 2,
"host" : "172.16.1.11:27019",
"arbiterOnly" : true,
"buildIndexes" : true,
"hidden" : false,
"priority" : 1,
"tags" : { },
"slaveDelay" : NumberLong(0),
"votes" : 1
}
],
"settings" : {
"chainingAllowed" : true,
"heartbeatIntervalMillis" : 2000,
"heartbeatTimeoutSecs" : 10,
"electionTimeoutMillis" : 10000,
"getLastErrorModes" : { },
"getLastErrorDefaults" : {
"w" : 1,
"wtimeout" : 0
},
"replicaSetId" : ObjectId("5c6fb85fb21aeac107319862")
}
}

6)查看状态

testSet:PRIMARY> rs.status()
{
"set" : "testSet",
"date" : ISODate("2019-02-26T02:12:48.124Z"),
"myState" : 1,
"term" : NumberLong(2),
"heartbeatIntervalMillis" : NumberLong(2000),
"members" : [
{
"_id" : 0,
"name" : "172.16.1.11:27017",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 268,
"optime" : {
"ts" : Timestamp(1551147003, 4),
"t" : NumberLong(2)
},
"optimeDate" : ISODate("2019-02-26T02:10:03Z"),
"lastHeartbeat" : ISODate("2019-02-26T02:12:46.189Z"),
"lastHeartbeatRecv" : ISODate("2019-02-26T02:12:46.188Z"),
"pingMs" : NumberLong(0),
"syncingTo" : "172.16.1.11:27018",
"configVersion" : 77284
},
{
"_id" : 1,
"name" : "172.16.1.11:27018",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"uptime" : 938,
"optime" : {
"ts" : Timestamp(1551147003, 4),
"t" : NumberLong(2)
},
"optimeDate" : ISODate("2019-02-26T02:10:03Z"),
"electionTime" : Timestamp(1551146242, 1),
"electionDate" : ISODate("2019-02-26T01:57:22Z"),
"configVersion" : 77284,
"self" : true
},
{
"_id" : 2,
"name" : "172.16.1.11:27019",
"health" : 1,
"state" : 7,
"stateStr" : "ARBITER",
"uptime" : 270,
"lastHeartbeat" : ISODate("2019-02-26T02:12:46.189Z"),
"lastHeartbeatRecv" : ISODate("2019-02-26T02:12:48.118Z"),
"pingMs" : NumberLong(0),
"configVersion" : 77284
}
],
"ok" : 1
}

如果想要修改副本集的配置,可以采用以下方法:

conf=rs.conf()
conf.members[0].host="172.16.1.11:27017"
rs.reconfig(conf,{"force":true})

三、验证mongdb可用性:

由上测试可知:副节点只能读,不能写

二、windows客户端连接mongodb

1、登录mongo shell,创建一个admin用户

testSet:PRIMARY> db.createUser({user:"admin",pwd:"admin",roles:[{"role":"userAdminAnyDatabase","db":"admin"},{"role":"readWrite","db":"testdb"}]})
Successfully added user: {
"user" : "admin",
"roles" : [
{
"role" : "userAdminAnyDatabase",
"db" : "admin"
},
{
"role" : "readWrite",
"db" : "testdb"
}
]
}

2、安装 robomongo-1.0.0-windows-x86_64-89f24ea.exe

3、填写连接信息

docker-compose搭建mongoDB副本集(1主+1副+1仲裁)的更多相关文章

  1. Docker下搭建mongodb副本集

    背景 有需求需要对mongodb做一个容灾备份.根据官网,发现mongodb最新版本(4.0)已经抛弃了主从模式而采用副本集进行容灾.副本集的优势在于:"有自动故障转移和恢复特性,其任意节点 ...

  2. 在centos7上搭建mongodb副本集

    1.安装副本集介绍 副本集(Replica Set)是一组MongoDB实例组成的集群,由一个主(Primary)服务器和多个备份(Secondary)服务器构成.通过Replication,将数据的 ...

  3. Docker Compose 搭建 Redis Cluster 集群环境

    在前文<Docker 搭建 Redis Cluster 集群环境>中我已经教过大家如何搭建了,本文使用 Docker Compose 再带大家搭建一遍,其目的主要是为了让大家感受 Dock ...

  4. MongoDB副本集(一主两从)读写分离、故障转移功能环境部署记录

    Mongodb是一种非关系数据库(NoSQL),非关系型数据库的产生就是为了解决大数据量.高扩展性.高性能.灵活数据模型.高可用性.MongoDB官方已经不建议使用主从模式了,替代方案是采用副本集的模 ...

  5. mongodb 副本集的主的选举

    primary的选举依赖于各个实例的优先权重,默认权重都是1 复本集的主挑选权重最高的,权重一样的无法控制谁为主 设置各个实例的优先权重,挑选自己想要的实例为主,只有primary可以更改权重配置 c ...

  6. docker中部署mongodb副本集

    1.基本信息如下 服务器地址 192.168.73.129 副本集名称 rs 容器节点及端口映射         m0 37017:27017         m1 47017:27017       ...

  7. MongoDB副本集搭建及备份恢复

    一.MongoDB副本集(repl set)介绍 早起版本使用master-slave,一主一从和MySQL类似,但slave在此架构中为只读,当主库宕机后,从库不能自动切换为主: 目前已经淘汰了ma ...

  8. MongoDB 副本集搭建

    搭建mongodb副本集 [root@ mongodb]# cd /u02 [root@ u02]# mkdir -p mongodb/data_2777 [root@ u02]# mkdir -p ...

  9. linux上安装MongoDB副本集(带keyfile安全认证以及用户权限)

    搭建前准备 MongoDB版本:4.0 主要参考搭建MongoDB副本集网站:https://www.jianshu.com/p/f021f1f3c60b 安装之前最好先确定一下几点: 防火墙关闭 M ...

随机推荐

  1. 《女神异闻录 5》的 UI 设计

    转自:https://www.zhihu.com/question/50995871?sort=created <女神异闻录5>是近两年最为火热的JRPG游戏之一,它的出色不仅在于剧情暗讽 ...

  2. css实现垂直居中的方法整理

    1.表格布局法.(利用表格的显示模式)需要用到一些冗余的 HTML 元素,因此这里不多介绍. 2.行内块法.也不作讨论,因为在我看来这种方法 hack 的味道很浓. 如果你有兴趣,可以去看看 Chri ...

  3. ubuntu vsftp

    转自:https://www.cnblogs.com/java-synchronized/p/6935711.html 12点多了,擦!做个码农真不容易呀! 系统:Ubuntu16.04 安装:FTP ...

  4. html背景图星际导航图练习

    html <body>         <div class="box1">            <div></div>      ...

  5. JAVA获取系统信息以及系统时间

    在做测试的时候,经常需要获取系统信息,并且用获取到的系统时间给生成的报告取名字. 以下代码实在TestNG展示的,没有Test NG的话需要些一个main方法. import java.net.Ine ...

  6. 解决Windows 10 1803 April 2018 Updatete不能网络共享的问题

    Windows 10升级到1803后便不能网络共享了,现在我用的是Widnows 10 1809 Oct 2018 Update依然存在这个问题. 为了能够共享文件和文件夹需要去windows ser ...

  7. 秦殇 xbm buffer

    秦殇的图片是封装在lib文件中的, 而且格式为xbm, xbm具体的结构

  8. AltiumDesigner 查找相似对象

    同类器件的集体选中.集体选中的方法是:先选中一个标识符,右击在选项表中选择Find Similar Objects,然后就会出现一个对话框,在这个对话框中,有一些any项,根据自己的需要把一些any改 ...

  9. Eclipse Android 模拟器启动过慢

    打开AVD Manager窗口,在模拟器配置页面,选择Intel Atom (x86)选项.笔记本的CPU处理器是Intel 酷睿. 可以发现模拟器的启动速度明显变快.

  10. [leetcode]236. Lowest Common Ancestor of a Binary Tree二叉树最近公共祖先

      Given a binary tree, find the lowest common ancestor (LCA) of two given nodes in the tree. Accordi ...