Docker安装MongoDB并做副本集群

mongodb cluster

1. 创建外挂目录并授权

mkdir -p /home/mongo1/db /home/mongo1/log
mkdir -p /home/mongo2/db /home/mongo2/log
mkdir -p /home/mongo3/db /home/mongo3/log
chmod 755 

2. 拉取最新mongodb

 docker pull mongo

3. 创建副本集结点

docker run -itd --name=mongo1 -p 27001:27017 --restart=always \
-v /home/mongo1/db:/data/db \
-v /home/mongo1/log:/data/log \
mongo --replSet "rs" --bind_ip_all

docker run -itd --name=mongo2 -p 27002:27017 --restart=always \
-v /home/mongo2/db:/data/db \
-v /home/mongo2/log:/data/log \
mongo --replSet "rs" --bind_ip_all

docker run -itd --name=mongo3 -p 27003:27017 --restart=always \
-v /home/mongo3/db:/data/db \
-v /home/mongo3/log:/data/log \
mongo --replSet "rs" --bind_ip_all

4. 追加参数 限制内存(根据物理内存而定,防止mongo)

docker container update -m 3000M --memory-swap -1 mongo1 
docker container update -m 1000M --memory-swap -1 mongo2
docker container update -m 1000M --memory-swap -1 mongo3

5. 查看内部地址

docker inspect mongo1 | grep IPAddress 

6. 登录数据库

docker exec -it mongo1 /bin/bash
mongosh

7. 副本集初始化

host为数据库所在的地址,可以用主机名替换,如在

rs.initiate( {
   _id : "rs",
   members: [
      {"_id": 0, "host": "192.168.0.104:27001" },
      {"_id": 1, "host": "192.168.0.104:27002" },
      {"_id": 2, "host": "192.168.0.104:27003" }
    ]
})

8. 重新初始化

conf = rs.conf()
conf.members[0].host="host1:27001";
conf.members[1].host="host2:27002";
conf.members[2].host="host3:27003";
rs.reconfig(conf);

9. 设置复本集数据库的主优先集,priority值越大 优先选为主

cfg=rs.conf()
cfg.members[0].priority=2
rs.reconfig(cfg)

10. 增加、删除节点

#增加节点
rs.add({"_id":3,"host":"192.168.0.104:27011"})
rs.add({"_id":3,"host":"192.168.0.104:27004"})
#删除节点
rs.remove("192.168.0.104:27001")

11. 创建数据库并授权

use admin
db.auth('admin','123456')
use testdb
db.createUser({user:'root',pwd:'123456',roles:[{role:'dbAdmin',db:'testdb'}]});
db.grantRolesToUser("root",[{role:"readWrite",db:"testdb"}])

12.查看结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/363300.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

代码随想录算法刷题训练营day21

代码随想录算法刷题训练营day21:LeetCode(501)二叉搜索树中的众数、LeetCode(530)二叉搜索树的最小绝对差 LeetCode(501)二叉搜索树中的众数 题目 代码 import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map;/*…

一些大语言模型(LLM)相关的开源项目

一些大语言模型(LLM)相关的开源项目 更多文章访问: https://www.cyisme.top 因为站内限制问题,有些图片无法显示,导致阅读体验较差,可以访问原文:《一些大语言模型(LLM)相关的开源项…

Linux逻辑卷(LV)扩容

Linux逻辑卷(LV)扩容 1、准备物理磁盘(分区和不分区都行),可以使用lsblk命令查看新增的磁盘,如下图sde就是我们新增磁盘,容量为600G。 2、将新磁盘变成物理卷(PV) pvcr…

疾控中心污水采样器的招标参数有哪些

技术指标 1 采样程序:可以预先编制 10 种采样程序,一键式启动; 2 采样方式:平行采样、 定时定量采样、定流定量采样、 定时比例采样、液位比例采样、即时定量采样等; 3 采样记录:可保存 10000 条采样记录…

dockerpipwork相关测试过程

pipework可以减轻docker实施过程中的工作量,在网上也找了几篇类似的文章,按照相应配置,结果并不相同 如下测试过程记录下: docker run -it --rm --name c1 busybox docker run -it --rm --name c2 busyboxpipework br1 c1 192…

Springboot集成Javamelody

JavaMelody的目标是监视QA和生产环境中的Java或Java EE应用服务器。它不是模拟用户请求的工具,而是根据用户对应用程序的使用情况来衡量和计算应用程序实际操作的统计信息的工具。JavaMelody主要基于请求统计和演化图。 它允许改进QA和生产中的应用程序&#xff0c…

Servlet服务器端的小程序

Servlet 概述 Servlet applet 运行在服务器端的小程序,Servlet 就是一个接口,定义了 Java 类被浏览器访问到的规则(Tomcat能识别),我们自定义一个类,实现 Servlet 接口,复写接口中的方法。 访问流程 快速入门 创建…

Uniapp登录页面获取头像、昵称的最新方法的简单使用

前言 写小程序写到登录页面的时候,发现官方文档中原来的wx.getUserInfo和wx.getUserProfile不太能用了,学习了相对比较新的方法,这种方法的文档链接如下: https://developers.weixin.qq.com/miniprogram/dev/framework/open-abil…

搜维尔科技:第九届元宇宙数字人大赛,参赛小组报名确认公告!

各位参赛选手大家好,近期已收到新增报名信息如下表,请各位参赛选手确认,如果信息有误或信息不完整请电话联系赛务组工作人员进行更正 随着元宇宙时代的来临,数字人设计成为了创新前沿领域之一。为了提高大学生元宇宙虚拟人角色策划…

1.31学习总结

1.31 1.线段树 2.Bad Hair Day S(单调栈) 3.01迷宫(BFS连通块问题剪枝)(连通性问题的并查集解法) 4.健康的荷斯坦奶牛 Healthy Holsteins(DFS) 线段树与树状数组 线段树和树状数组的功能相似,但…

校园二手交易小程序|基于微信小程序的闲置物品交易平台设计与实现(源码+数据库+文档)

校园二手交易小程序目录 目录 基于微信小程序的闲置物品交易平台设计与实现 一、前言 二、系统功能设计 三、系统实现 1、用户信息管理 2、商品信息管理 3、公告信息管理 4、论坛信息管理 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 七、最新计算机毕…

RabbitMQ 死信队列应用

1. 概念 死信队列(Dead Letter Queue)是在消息队列系统中的一种特殊队列,用于存储无法被消费的消息。消息可能会因为多种原因变成“死信”,例如消息过期、消息被拒绝、消息队列长度超过限制等。当消息变成“死信”时,…

(申请积分专用)我的世界(MC)整合包开服教程,Pokehaan Craft 2整合包服务器搭建教程

Minecraft整合包服务器搭建教程,宝可梦/神奇宝贝整合包(Pokehaan Craft 2)开服教程。 其他整合包也可以参考此教程。要看这个整合包的游戏截图可以翻到文章最底下。 什么是整合包 Minecraft的整合包是一种包含了多个模组(mod&a…

面向对象设计的七大设计原则

在我们探讨如何创建健壮且可维护的面向对象系统时,有一些原则可以为我们提供指导。这些原则可以帮助我们理解如何最好地组织我们的类和对象,以实现高效、模块化和可扩展的设计。在本篇文章中,我们将探讨这些原则,以及如何在我们的…

Pyth 预言机: 它们如何影响Hover?

所有链上借贷市场都使用一种称为“oracle(预言机)”的服务,为dApp提供代币定价。Oracle是一个数据系统,将链下信息(例如KuCoin上的BTC/USDT价格)传递到链上合约。从那里,应用程序可以支付一小笔…

MAVEN(1)

分模块开发与设计 分模块开发意义 将原始模块按照功能拆分成若干个子模块,方便模块间相互调用,接口共享 步骤示例 这里以之前开发的SpringMVC_ssm中的domain模块为例 第一步、创建Maven模块 父项改为none,文件存储位置需要做出相应调整 …

MySQL基础(三)-学习笔记

一.innodb引擎: 1). 表空间:表空间是InnoDB存储引擎逻辑结构的最高层,启用了参数 innodb_file_per_table(在 8.0版本中默认开启) ,则每张表都会有一个表空间(xxx.ibd),一个mysql实例可以对应多个…

Revisiting image pyramid structure for high resolution salient object detection

accv2022的技术,在我测评的数据集上确实要明显好于basnet,rembg等一众方法。 1.Introduction 使用LR数据集训练的方法通过调整输入尺寸可以在HR图像上产生不错的结果。本文主要关注仅使用LR数据集进行训练以产生高质量的HR预测。HR的有效感受野ERFs和LR…

QT学习日记 | 信号与槽

目录 前言 一、初始信号与槽 1、信号与槽的本质 2、信号与槽的使用 3、内置信号、内置槽函数与自定义信号、自定义槽函数 (1)文档查询 (2)自定义信号与内置槽函数的使用 4、信号与槽函数关联关系 5、带参数的信号与槽函数…

计算机毕业设计 | springboot 多功能商城 购物网站(附源码)

1, 概述 国家大力推进信息化建设的大背景下,城市网络基础设施和信息化应用水平得到了极大的提高和提高。特别是在经济发达的沿海地区,商业和服务业也比较发达,公众接受新事物的能力和消费水平也比较高。开展商贸流通产业的信息化…