(保姆级)离线安装mongoDB集群
Docker搭建MongoDB集群
副本集模式(Replica Set)
-
是一种互为主从的关系, Replica Set 将数据复制多份保存,不同服务器保存同一份数据,在出现故障时自动切换,实现故障转移。
-
此集群拥有一个主节点和多个从节点,这一点与主从复制模式类似,且主从节点所负责的工作也类似,但是副本集与主从复制的区别在于:当集群中主节点发生故障时,副本集可以自动投票,选举出新的主节点,并引导其余的从节点连接新的主节点,而且这个过程对应用是透明的。
准备:离线环境安装docker
参考:
一 、Docker部署MongoDB集群(Replica Set模式-单台)
mongodb版本信息:MongoDB shell version v5.0.5MongoDB server version: 5.0.5单台的集成了一下shell脚本,多台的是分开的,一步一步的。
(1)镜像下载
docker pull mongo:5.0.5内网打包镜像成tar
docker save -o <导出的文件名.tar> <镜像名称:标签>docker save -o mongo.tar mongo:5.0.5
将tar包放入/opt/docker/下
导入镜像:
docker load -i myimage.tar
查看:
docker images
(2)建立集群网络和集群
#!/bin/bash
for conf in 27018_mongo-master 27019_mongo-slave 27020_mongo-arbiter; do \echo "conf len= ${#conf}, port=${conf:0:5}, name=${conf:6:${#conf}}";if [ ${conf:0:5} == 27018 ]thendocker network create mongo-networkecho "create mongo-network"fidocker run -d --restart=always \-p ${conf:0:5}:27017 \--name ${conf:6:${#conf}} \-v /opt/mongo/${conf:6:${#conf}}/configdb/:/data/configdb \-v /opt/mongo/${conf:6:${#conf}}/db/:/data/db \-v /opt/mongo/${conf:6:${#conf}}/backup:/data/backup \--net=mongo-network \mongo:5.0.5 \mongod --dbpath /data/db --replSet mongoreplset
done
(3)配置集群
设置MongoDB的复制集(Replica Set)的配置信息
1. 进入master容器中的mongo:docker exec -it mongo-master mongo
2. 配置集群:IP为部署数据库的服务器IP,例如IP是10.9.21.12 (防火墙端口要放开)
config = {_id:"mongoreplset", version:1, members:[{_id:0, host:"10.9.21.12:27018", priority:5}, {_id:1, host:"10.9.21.12:27019", priority:2}, {_id:2, host:"10.9.21.12:27020", priority:3}]}rs.initiate(config)如果提示错误,且rs.config()后查看已经有配置,但未实现主从,则可尝试执行下面的代码,重新配置(force -> 非主节点强制请求重新分配主节点。)
[errmsg” : “New config is rejected :: caused by :: replSetReconfig should only be run on a writable PRIMARY. Current state REMOVED;”]rs.reconfig({_id:"mongoreplset", version:1, members:[{_id:0, host:"10.9.21.12:27018", priority:5}, {_id:1, host:"10.9.21.12:27019", priority:2}, {_id:2, host:"10.9.21.12:27020", priority:3}]},{force:true})3. 退出: exit4. 验证集群配置:docker exec -it mongo-master mongo会有如下提示:mongoreplset:PRIMARY> docker exec -it mongo-slave mongo会有如下提示:mongoreplset:SECONDARY>docker exec -it mongo-arbiter mongo会有如下提示:mongoreplset:SECONDARY>
(4)创建数据库用户
1. 进入master容器中的mongo:docker exec -it mongo-master mongo
2. 创建用户:
use admin
db.createUser({user: "root",pwd: "db_root_password",roles: ["root"]})
db.auth("root", "Synjones2021") //测试一下
db.createUser({user: "user01",pwd: "db_user01_password",roles: ["readWriteAnyDatabase"]})
exit
(5)mongodb集群的连接地址
如下:
mongodb://user01:db_user01_password@10.9.21.12:27018,10.9.21.12:27019,10.9.21.12:27020
(6)删除集群
docker ps -adocker stop id1/id2/id3 三个都停止docker rm -f id1/id2/id3 docker network lsdocker network rm network_idrm -rf /opt/mongo/..(建立集群时配置的目录)
(7)备份原数据库文件
1.进入原mongo容器: docker exec -it mongodb bash2.备份原mongo库:mongodump --host 10.9.21.12 --port 27017 -u username -p password -o /data/backup --authenticationDatabase admin3.停掉原mongo容器(如果部署在同一台端口冲突可先停掉): docker stop mongodb4.拷贝备份文件(从容器内拷贝到本机):
【 docker cp <container_id>:/data/db/. /path/to/local/directory 】
/data/db/.表示拷贝/data/db目录及其所有内容,包括子目录和文件
docker cp 70161373fcef:/data/backup/. /opt/mongo/mongo-master/backup(此路径为创建容器时设置的容器、本机共享账户)5. 进入容器内可查看到已经将文件共享进来了ls -lh
6. 进入master容器中:docker exec -it mongo-master bash
7. 加载备份数据:mongorestore --host 10.9.21.12 --port 27018 /data/backup/
8. 退出:exit
二、Docker部署MongoDB集群(Replica Set模式-多台)
假设一共有两台机器:10.9.21.13(主)、10.9.21.11(从)
(0)镜像打包 导入
docker pull mongo:5.0.5内网打包镜像成tar
docker save -o <导出的文件名.tar> <镜像名称:标签>docker save -o mongo.tar mongo:5.0.5
将tar包放入/opt/docker/下,
导入镜像:
docker load -i myimage.tar
查看:
docker images
(1)建立数据库集群网络
假设一共有两台机器:10.9.21.13(主)、10.9.21.11(从),两台机器均要创建 mongo-network
docker network ls
docker network create mongo-network
——————————————————————————
docker network rm network_id //删除
(2)建立集群
假设一共有两台机器:10.9.21.13(主)、10.9.21.11(从)
启动容器,并配好参数(整理为shell脚本 执行脚本)
10.9.21.13(主)
#!/bin/bash
docker run -d --restart=always \
-p 27017:27017 \
--name mongo-master \
-v /opt/mongo/mongo_master/configdb/:/data/configdb \
-v /opt/mongo/mongo_master/db/:/data/db \
-v /opt/mongo/mongo_master/backup:/data/backup \
--net=mongo-network \
mongo:5.0.5 \
mongod --dbpath /data/db --replSet mongoreplset
10.9.21.11(从)
拷贝备份文件进入-v /opt/mongo/mongo-slave/backup(如果需要)
可参考:进入备份文件夹backup:zip -r ttt.zip *跨机器拷贝:scp /opt/x/backup/tt.zip @10.9.21.13:/opt/mongo/mongo_master/backup解压:unzip tt.zip#!/bin/bash
docker run -d --restart=always \
-p 27018:27017 \
--name mongo-slave \
-v /opt/mongo/mongo-slave/configdb/:/data/configdb \
-v /opt/mongo/mongo-slave/db/:/data/db \
-v /opt/mongo/mongo-slave/backup:/data/backup \
--net=mongo-network \
mongo:5.0.5 \
mongod --dbpath /data/db --replSet mongoreplset#!/bin/bash
docker run -d --restart=always \
-p 27019:27017 \
--name mongo-arbiter \
-v /opt/mongo/mongo-arbiter/configdb/:/data/configdb \
-v /opt/mongo/mongo-arbiter/db/:/data/db \
-v /opt/mongo/mongo-arbiter/backup:/data/backup \
--net=mongo-network \
mongo:5.0.5 \
mongod --dbpath /data/db --replSet mongoreplset
(3)配置集群
1. 进入master容器:docker exec -it mongo-master bash
2. 进入mongo:mongo
3. 配置集群:IP为部署数据库的服务器IP
config = {_id:"mongoreplset", version:1, members:[{_id:0, host:"10.9.21.13:27017", priority:5}, {_id:1, host:"10.9.21.11:27018", priority:2}, {_id:2, host:"10.9.21.11:27019", priority:3}]}
rs.initiate(config)
4. 退出mongo:exit
5. 加载旧库的备份数据(如果需要,将3.1备份的数据拷贝到主机相应的挂载目录):mongorestore --host <mongo主Ip> --port 27017 /data/backup/
6. 退出容器: exit
7. 验证集群:10.9.21.13(主) docker exec -it mongo-master mongo会有如下提示:mongoreplset:PRIMARY> 10.9.21.11(从) docker exec -it mongo-slave mongo会有如下提示:mongoreplset:SECONDARY>10.9.21.11(从) docker exec -it mongo-arbiter mongo会有如下提示:mongoreplset:SECONDARY>
(4)导入备份数据
1. 进入master容器中:docker exec -it mongo-master bash
2. 进入容器内能看到共享文件夹内的备份文件cd /data/backup ls -lh
3. 加载备份数据:mongorestore --host 10.9.21.13 --port 27018 /data/backup/
(5)链接查看
use admindb.auth("username", "password") //测试一下链接:
mongodb://user01:db_user01_password@10.9.21.12:27018,10.9.21.12:27019,10.9.21.12:27020
相关文章:
(保姆级)离线安装mongoDB集群
Docker搭建MongoDB集群 副本集模式(Replica Set) 是一种互为主从的关系, Replica Set 将数据复制多份保存,不同服务器保存同一份数据,在出现故障时自动切换,实现故障转移。 此集群拥有一个主节点和多个从…...
面试笔记——MySQL(主从同步原理、分库分表)
主从同步原理 主从同步结构:主库负责写数据,从库负责读数据,如图—— MySQL主从复制的核心就是二进制日志(BINLOG),它记录了所有的 DDL(数据定义语言)语句和 DML(数据操…...
面试题2.0
目录 css 动画 深拷贝和浅拷贝 ES6新特性 事件循环 vue-router原理 flex布局 session和local storage分别是用来干嘛的? http状态码 原型链 虚拟dom vuex的五个属性 vue路由跳转的四种方式 vue生命周期 link和import的区别 GET 与 POST 的区别 fle…...
【剑指offer】53. 最小的k个数(java选手)(优先队列+快排+快速选择)
题目链接 题目链接 力扣题目链接 题目描述 输入 n个整数,找出其中最小的 k 个数。 注意: 输出数组内元素请按从小到大顺序排序; 数据范围 1≤k≤n≤1000 样例 输入:[1,2,3,4,5,6,7,8] , k4 输出:[1,2,3,4] 题目分析 排序算法…...
带有GUI界面的电机故障诊断(MSCNN-BILSTM-ATTENTION模型,TensorFlow框架,有中文注释,带有六种结果可视化)
本次创作最主要是在MSCNN-BILSTM-ATTENTION模型(可轻松替换为其它模型)基础上,搭建GUI测试界面,方便对你想要测试的数据的进行测试,同时进行了全面的结果可视化:1.训练集和测试集的准确率曲线,2…...
【技术栈】Spring Cache 简化 Redis 缓存使用
SueWakeup 个人主页:SueWakeup 系列专栏:学习技术栈 个性签名:保留赤子之心也许是种幸运吧 本文封面由 凯楠📸 友情提供 目录 本栏传送门 1. Spring Cache 介绍 2. Spring Cache 常用注解 注:手机端浏览本文章…...
解决wrap_socket() got an unexpected keyword argument ‘ciphers‘
看报错本以为是一个简单的传参问题,没想到查到盘丝洞。 # 报错信息 wrap_socket() got an unexpected keyword argument ciphers# 报错代码段 _exception_handler() def connect(self):u"""连接MySQL数据库"""self.config_connect_a…...
【力扣hot100】128.最长连续序列
给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。 请你设计并实现时间复杂度为 O(n) 的算法解决此问题。 示例 1: 输入:nums [100,4,200,1,3,2] 输出:4 解…...
css的text-shadow详解
CSS的text-shadow属性用于为文本添加阴影效果,以增强文本的立体感和印刷品质感。该属性可以接受多个值,每个值通过空格分隔,以定义阴影的各个方面。以下是text-shadow属性的详细介绍: 阴影颜色 (Color): 这是阴影的颜色值。它可以…...
Qt 利用共享内存实现一次只能启动一个程序(单实例运行)
Qt 利用共享内存实现一次只能启动一个程序 文章目录 Qt 利用共享内存实现一次只能启动一个程序摘要利用共享内存实现一次只能启动一个程序示例代码 关键字: Qt、 unique、 单一、 QSharedMemory、 共享内存 摘要 今天接着在公司搞我的屎山代码,按照…...
【生活知识-茶叶】
生活知识-茶叶 茶 茶 茶叶分类代表茶名功效绿茶龙井碧螺春 毛峰清热解毒、降脂减肥、提神醒脑、改善肝功能、减轻肝脏负担乌龙茶铁观音武夷岩茶冻顶乌龙茶清心明目、提神醒脑、促进新陈代谢、维护肝脏健康白茶白毫银针白牡丹贡眉清热降火、抗氧化、保护心血管、提高免疫力黄茶…...
[AIGC] 在Spring Boot中指定请求体格式
在使用Spring Boot开发Web应用的时候,我们经常会遇到需要接收并处理HTTP请求的情况。一个HTTP请求通常包括一个请求行、若干请求头和一个请求体。请求体在POST和PUT请求中特别重要,因为它通常用于向服务器传递数据。 文章目录 创建并使用一个Java Bean指…...
4核16G服务器租用优惠价格,26.52元1个月,半年149元
阿里云4核16G服务器优惠价格26.52元1个月、79.56元3个月、149.00元半年,配置为阿里云服务器ECS经济型e实例ecs.e-c1m4.xlarge,4核16G、按固定带宽 10Mbs、100GB ESSD Entry系统盘,活动链接 aliyunfuwuqi.com/go/aliyun 活动链接打开如下图&a…...
2024 Mazing 3 中文版新功能介绍Windows and macOS
iMazing 3中文版(ios设备管理软件)是一款管理苹果设备的软件, Windows 平台上的一款帮助用户管理 IOS 手机的应用程序。iMazing中文版与苹果设备连接后,可以轻松传输文件,浏览保存信息等,软件功能非常强大,界面简洁明晰…...
npm设置淘宝镜像
使用npm安装依赖时很慢,可以设置淘宝镜像,2024年1月更换了新域名。 cmd在终端中做以下操作: 检测现在的镜像地址 npm config get registry如果不是淘宝最新的镜像地址,更换为 // 清空缓存 npm cache clean --force // 切换新源…...
现代卷积神经网络
深度卷积神经网络(AlexNet) 经典机器学习的流水线: ①获取一个有趣的数据集; ②根据光学、几何学,手动对特征数据集进行预处理; ③通过标准的特征提取算法,如SIFT(尺度不变特征变…...
【wubuntu】披着Win11皮肤主题的Ubuntu系统
wubuntu - 一款外观类似于 Windows 的 Linux 操作系统,没有任何硬件限制。以下是官方的描述 Wubuntu is an operating system based on Ubuntu LTS that has a similar appearance to Windows using the open-source themes. Wubuntu also comes with a set of adva…...
Kubernetes自动化配置部署
在新建工程中,使用k8s的devops服务,自动化部署项目 1、在搭建好k8s的集群中,确认已开启devops服务; 2、新建Maven项目之后,创建dockerfile、deploy和Jenkins文件 例如: Dockerfile FROM bairong.k8s.m…...
2024年奥莱利科技趋势报告解析
2024年O’Reilly技术趋势报告解读 概述 在快速发展的技术领域,跟上最新趋势对行业内的任何人来说都至关重要。2024年O’Reilly技术趋势报告在此方面提供了关键的指导,全面概述了最重要的技术进步和模式。该年度报告基于O’Reilly著名在线学习平台280万…...
算法打卡Day14
今日任务: 1)104.二叉树的最大深度 2)559.n叉树的最大深度 3)111.二叉树的最小深度 4)222.完全二叉树的节点个数 104.二叉树的最大深度 题目链接:104. 二叉树的最大深度 - 力扣(LeetCode&#…...
SpringBoot-17-MyBatis动态SQL标签之常用标签
文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...
零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?
一、核心优势:专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发,是一款收费低廉但功能全面的Windows NAS工具,主打“无学习成本部署” 。与其他NAS软件相比,其优势在于: 无需硬件改造:将任意W…...
SciencePlots——绘制论文中的图片
文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了:一行…...
在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module
1、为什么要修改 CONNECT 报文? 多租户隔离:自动为接入设备追加租户前缀,后端按 ClientID 拆分队列。零代码鉴权:将入站用户名替换为 OAuth Access-Token,后端 Broker 统一校验。灰度发布:根据 IP/地理位写…...
【论文笔记】若干矿井粉尘检测算法概述
总的来说,传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度,通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...
Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理
引言 Bitmap(位图)是Android应用内存占用的“头号杀手”。一张1080P(1920x1080)的图片以ARGB_8888格式加载时,内存占用高达8MB(192010804字节)。据统计,超过60%的应用OOM崩溃与Bitm…...
Java多线程实现之Thread类深度解析
Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...
JS设计模式(4):观察者模式
JS设计模式(4):观察者模式 一、引入 在开发中,我们经常会遇到这样的场景:一个对象的状态变化需要自动通知其他对象,比如: 电商平台中,商品库存变化时需要通知所有订阅该商品的用户;新闻网站中࿰…...
GruntJS-前端自动化任务运行器从入门到实战
Grunt 完全指南:从入门到实战 一、Grunt 是什么? Grunt是一个基于 Node.js 的前端自动化任务运行器,主要用于自动化执行项目开发中重复性高的任务,例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...
(一)单例模式
一、前言 单例模式属于六大创建型模式,即在软件设计过程中,主要关注创建对象的结果,并不关心创建对象的过程及细节。创建型设计模式将类对象的实例化过程进行抽象化接口设计,从而隐藏了类对象的实例是如何被创建的,封装了软件系统使用的具体对象类型。 六大创建型模式包括…...
