docker-compose搭建mongoDB副本集(1主+1副+1仲裁)
一、基本概念
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仲裁)的更多相关文章
- Docker下搭建mongodb副本集
背景 有需求需要对mongodb做一个容灾备份.根据官网,发现mongodb最新版本(4.0)已经抛弃了主从模式而采用副本集进行容灾.副本集的优势在于:"有自动故障转移和恢复特性,其任意节点 ...
- 在centos7上搭建mongodb副本集
1.安装副本集介绍 副本集(Replica Set)是一组MongoDB实例组成的集群,由一个主(Primary)服务器和多个备份(Secondary)服务器构成.通过Replication,将数据的 ...
- Docker Compose 搭建 Redis Cluster 集群环境
在前文<Docker 搭建 Redis Cluster 集群环境>中我已经教过大家如何搭建了,本文使用 Docker Compose 再带大家搭建一遍,其目的主要是为了让大家感受 Dock ...
- MongoDB副本集(一主两从)读写分离、故障转移功能环境部署记录
Mongodb是一种非关系数据库(NoSQL),非关系型数据库的产生就是为了解决大数据量.高扩展性.高性能.灵活数据模型.高可用性.MongoDB官方已经不建议使用主从模式了,替代方案是采用副本集的模 ...
- mongodb 副本集的主的选举
primary的选举依赖于各个实例的优先权重,默认权重都是1 复本集的主挑选权重最高的,权重一样的无法控制谁为主 设置各个实例的优先权重,挑选自己想要的实例为主,只有primary可以更改权重配置 c ...
- docker中部署mongodb副本集
1.基本信息如下 服务器地址 192.168.73.129 副本集名称 rs 容器节点及端口映射 m0 37017:27017 m1 47017:27017 ...
- MongoDB副本集搭建及备份恢复
一.MongoDB副本集(repl set)介绍 早起版本使用master-slave,一主一从和MySQL类似,但slave在此架构中为只读,当主库宕机后,从库不能自动切换为主: 目前已经淘汰了ma ...
- MongoDB 副本集搭建
搭建mongodb副本集 [root@ mongodb]# cd /u02 [root@ u02]# mkdir -p mongodb/data_2777 [root@ u02]# mkdir -p ...
- linux上安装MongoDB副本集(带keyfile安全认证以及用户权限)
搭建前准备 MongoDB版本:4.0 主要参考搭建MongoDB副本集网站:https://www.jianshu.com/p/f021f1f3c60b 安装之前最好先确定一下几点: 防火墙关闭 M ...
随机推荐
- 《女神异闻录 5》的 UI 设计
转自:https://www.zhihu.com/question/50995871?sort=created <女神异闻录5>是近两年最为火热的JRPG游戏之一,它的出色不仅在于剧情暗讽 ...
- css实现垂直居中的方法整理
1.表格布局法.(利用表格的显示模式)需要用到一些冗余的 HTML 元素,因此这里不多介绍. 2.行内块法.也不作讨论,因为在我看来这种方法 hack 的味道很浓. 如果你有兴趣,可以去看看 Chri ...
- ubuntu vsftp
转自:https://www.cnblogs.com/java-synchronized/p/6935711.html 12点多了,擦!做个码农真不容易呀! 系统:Ubuntu16.04 安装:FTP ...
- html背景图星际导航图练习
html <body> <div class="box1"> <div></div> ...
- JAVA获取系统信息以及系统时间
在做测试的时候,经常需要获取系统信息,并且用获取到的系统时间给生成的报告取名字. 以下代码实在TestNG展示的,没有Test NG的话需要些一个main方法. import java.net.Ine ...
- 解决Windows 10 1803 April 2018 Updatete不能网络共享的问题
Windows 10升级到1803后便不能网络共享了,现在我用的是Widnows 10 1809 Oct 2018 Update依然存在这个问题. 为了能够共享文件和文件夹需要去windows ser ...
- 秦殇 xbm buffer
秦殇的图片是封装在lib文件中的, 而且格式为xbm, xbm具体的结构
- AltiumDesigner 查找相似对象
同类器件的集体选中.集体选中的方法是:先选中一个标识符,右击在选项表中选择Find Similar Objects,然后就会出现一个对话框,在这个对话框中,有一些any项,根据自己的需要把一些any改 ...
- Eclipse Android 模拟器启动过慢
打开AVD Manager窗口,在模拟器配置页面,选择Intel Atom (x86)选项.笔记本的CPU处理器是Intel 酷睿. 可以发现模拟器的启动速度明显变快.
- [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 ...