当前位置: 首页 > news >正文

MongoDB Shard 集群 Docker 部署

MongoDB Shard Docker 部署

部署环境

主机地址主机配置主机系统
Mongodb1/192.168.31.1352CPU 4GBDebian12
Mongodb2/192.168.31.1092CPU 4GBDebian12
Mongodb3/192.168.31.1652CPU 4GBDebian12

镜像版本

mongodb/mongodb-community-server:5.0.27-ubuntu2004

部署集群

部署 Config Server 集群

分别在三台上启动 Config Server 容器

# mongodb1
docker run -d --name configsvr1 \--log-opt max-size=100m --log-opt max-file=3 --restart=unless-stopped \-v configsvr1_data:/data/configdb \-p 27019:27019 \mongodb/mongodb-community-server:5.0.27-ubuntu2004 \mongod --configsvr --replSet configReplSet --bind_ip_all
# mongodb2
docker run -d --name configsvr2 \--log-opt max-size=100m --log-opt max-file=3 --restart=unless-stopped \-v configsvr2_data:/data/configdb \-p 27019:27019 \mongodb/mongodb-community-server:5.0.27-ubuntu2004 \mongod --configsvr --replSet configReplSet --bind_ip_all
# mongodb3
docker run -d --name configsvr3 \--log-opt max-size=100m --log-opt max-file=3 --restart=unless-stopped \-v configsvr3_data:/data/configdb \-p 27019:27019 \mongodb/mongodb-community-server:5.0.27-ubuntu2004 \mongod --configsvr --replSet configReplSet --bind_ip_all

初始化 Config Server 复制集

  1. 登录 configsvr1 容器
docker exec -it configsvr1 mongo --port 27019
  1. 执行初始化脚本
rs.initiate({_id: "configReplSet",configsvr: true,members: [{ _id: 0, host: "192.168.31.135:27019" },{ _id: 1, host: "192.168.31.109:27019" },{ _id: 2, host: "192.168.31.165:27019" }]
})
  1. 验证状态
rs.status()

部署 Shard Server 集群

在 mongo1 上部署容器

docker run -d --name shard1_node1 \--log-opt max-size=100m --log-opt max-file=3 --restart=unless-stopped \-v shard1_node1_data:/data/db \-p 27018:27018 \mongodb/mongodb-community-server:5.0.27-ubuntu2004 \mongod --shardsvr --replSet shard1ReplSet --bind_ip_alldocker run -d --name shard2_node1 \--log-opt max-size=100m --log-opt max-file=3 --restart=unless-stopped \-v shard2_node1_data:/data/db \-p 27017:27018 \mongodb/mongodb-community-server:5.0.27-ubuntu2004 \mongod --shardsvr --replSet shard2ReplSet --bind_ip_alldocker run -d --name shard3_node1 \--log-opt max-size=100m --log-opt max-file=3 --restart=unless-stopped \-v shard3_node1_data:/data/db \-p 27016:27018 \mongodb/mongodb-community-server:5.0.27-ubuntu2004 \mongod --shardsvr --replSet shard3ReplSet --bind_ip_all

在 mongo2 上部署容器

docker run -d --name shard1_node2 \--log-opt max-size=100m --log-opt max-file=3 --restart=unless-stopped \-v shard1_node2_data:/data/db \-p 27018:27018 \mongodb/mongodb-community-server:5.0.27-ubuntu2004 \mongod --shardsvr --replSet shard1ReplSet --bind_ip_alldocker run -d --name shard2_node2 \--log-opt max-size=100m --log-opt max-file=3 --restart=unless-stopped \-v shard2_node2_data:/data/db \-p 27017:27018 \mongodb/mongodb-community-server:5.0.27-ubuntu2004 \mongod --shardsvr --replSet shard2ReplSet --bind_ip_alldocker run -d --name shard3_node2 \--log-opt max-size=100m --log-opt max-file=3 --restart=unless-stopped \-v shard3_node2_data:/data/db \-p 27016:27018 \mongodb/mongodb-community-server:5.0.27-ubuntu2004 \mongod --shardsvr --replSet shard3ReplSet --bind_ip_all

在 mongo3 上部署容器

docker run -d --name shard1_node3 \--log-opt max-size=100m --log-opt max-file=3 --restart=unless-stopped \-v shard1_node3_data:/data/db \-p 27018:27018 \mongodb/mongodb-community-server:5.0.27-ubuntu2004 \mongod --shardsvr --replSet shard1ReplSet --bind_ip_alldocker run -d --name shard2_node3 \--log-opt max-size=100m --log-opt max-file=3 --restart=unless-stopped \-v shard2_node3_data:/data/db \-p 27017:27018 \mongodb/mongodb-community-server:5.0.27-ubuntu2004 \mongod --shardsvr --replSet shard2ReplSet --bind_ip_alldocker run -d --name shard3_node3 \--log-opt max-size=100m --log-opt max-file=3 --restart=unless-stopped \-v shard3_node3_data:/data/db \-p 27016:27018 \mongodb/mongodb-community-server:5.0.27-ubuntu2004 \mongod --shardsvr --replSet shard3ReplSet --bind_ip_all

将 shard1 shard2 shard3 容器初始化并验证

docker exec -it shard1_node1 mongo --port 27018
rs.initiate({_id: "shard1ReplSet",members: [{ _id: 0, host: "192.168.31.135:27018" },{ _id: 1, host: "192.168.31.109:27018" },{ _id: 2, host: "192.168.31.165:27018" }]
})rs.status()
docker exec -it shard2_node1 mongo --port 27018
rs.initiate({_id: "shard2ReplSet",members: [{ _id: 0, host: "192.168.31.135:27017" },{ _id: 1, host: "192.168.31.109:27017" },{ _id: 2, host: "192.168.31.165:27017" }]
})rs.status()
docker exec -it shard3_node1 mongo --port 27018
rs.initiate({_id: "shard3ReplSet",members: [{ _id: 0, host: "192.168.31.135:27016" },{ _id: 1, host: "192.168.31.109:27016" },{ _id: 2, host: "192.168.31.165:27016" }]
})rs.status()

部署 Mongos 路由器

docker run -d --name mongos -p 27015:27017 \--log-opt max-size=100m --log-opt max-file=3 --restart=unless-stopped \mongodb/mongodb-community-server:5.0.27-ubuntu2004 mongos --bind_ip_all --configdb configReplSet/192.168.31.135:27019,192.168.31.109:27019,192.168.31.165:27019

关联 Shard 集群至 Config 集群

docker exec -it mongos mongo
sh.addShard("shard1ReplSet/192.168.31.135:27018,192.168.31.109:27018,192.168.31.165:27018")
sh.addShard("shard2ReplSet/192.168.31.135:27017,192.168.31.109:27017,192.168.31.165:27017")
sh.addShard("shard3ReplSet/192.168.31.135:27016,192.168.31.109:27016,192.168.31.165:27016")

数据库手动指定分片

使能分片数据库

sh.enableSharding("metadata")

指定分片集合

# sh.shardCollection("mydatabase.mycollection", { myfield: 1 })
sh.shardCollection("metadata.file-10-million", { key: 1 })

查看分片分布

# db.collection.getShardDistribution()
db['file-10-million'].getShardDistribution()

相关文章:

MongoDB Shard 集群 Docker 部署

MongoDB Shard Docker 部署 部署环境 主机地址主机配置主机系统Mongodb1/192.168.31.1352CPU 4GBDebian12Mongodb2/192.168.31.1092CPU 4GBDebian12Mongodb3/192.168.31.1652CPU 4GBDebian12 镜像版本 mongodb/mongodb-community-server:5.0.27-ubuntu2004 部署集群 部署…...

MacOS 开发 — Packages 程序 macOS新版本 演示选项卡无法显示

MacOS 开发 — Packages 程序 macOS新版本 演示选项卡无法显示 问题描述 : 之前写过 Packages 的使用以及如何打包macOS程序。最近更新了新的macOS系统,发现Packages的演示选项卡无法显示,我尝试从新安转了Packages 也是没作用,…...

Hive的分区表分桶表

1.分区表: 是Hive中的一种表类型,通过将表中的数据划分为多个子集(分区),每个分区对应表中的某个特定的列值,可以提高查询性能和管理数据的效率。分区表的每个分区存储在单独的目录中,分区的定义…...

PostgreSQL17索引优化之支持并行创建BRIN索引

PostgreSQL17索引优化之支持并行创建BRIN索引 最近连续写了几篇关于PostgreSQL17优化器改进的文章,其实感觉还是挺有压力的。对于原理性的知识点,一方面是对这些新功能也不熟悉,为了尽可能对于知识点表述或总结做到准确,因此需要…...

在Vue中,子组件向父组件传递数据

在Vue中,子组件向父组件传递数据通常通过两种方式实现:事件和回调函数。这两种方式允许子组件与其父组件进行通信,传递数据或触发特定的行为。 1. 通过事件传递数据 子组件可以通过触发自定义事件,并将数据作为事件的参数来向父组…...

数据结构(顺序表)

谈起顺序表,那我们就不得不先来了解一下它的上级概念---线性表 线性表 线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表是⼀种在实际中⼴泛使⽤的数据结构,常⻅的线性表:顺序表、链表、栈、队列…...

MySQL之基本查询(上)-表的增删查改

目录 Create(创建) 案例建表 插入 单行数据 指定列插入 单行数据 全列插入 多行数据 全列插入 插入是否更新 插入时更新 替换 Retrieve(读取) 建表插入 select列 全列查询 指定列查询 查询字段为表达式 为查询结果指定别名 结果去重 where条件 比较运算符 逻辑运…...

RocketMQ源码学习笔记:Producer发送消息流程

这是本人学习的总结,主要学习资料如下 马士兵教育rocketMq官方文档 目录 1、Overview2、验证消息3、查找路由4、选择消息发送队列4.1、选择队列的策略4.2、源码阅读4.2.1、轮询规避4.2.2、故障延迟规避4.2.2.1、计算规避时间4.2.2.2、选择队列 4.2.3、ThreadLocal的…...

kotlin flow collect collectLatest 区别

在 Kotlin 协程库中,collect 和 collectLatest 都是用于收集 Flow 中发射的数据的方法,但它们在处理数据和响应新数据的方式上有所不同。 collect collect 是一个挂起函数,用于收集 Flow 中发射的所有数据。它会按顺序处理每一个发射的数据…...

ELK集群搭建

ELK集群搭建 文章目录 ELK集群搭建1.环境准备2.Elasticsearch环境搭建1.创建es账户并设置密码2.选择对应版本进行下载3.编辑配置文件4.设置JVM堆大小 #7.0默认为4G5.创建es数据及日志存储目录6.修改安装目录和存储目录权限 3.系统优化1.增加最大文件打开数2.增加最大进程数3.增…...

zookeeper+kafka消息队列集群部署

一.消息队列 1、什么是消息队列 消息(Message)是指在应用间传送的数据。消息可以非常简单,比如只包含文本字符串,也可以更复杂,可能包含嵌入对象。 消息队列(MessageQueue)是一种在软件系统中用…...

LLM_入门指南(零基础搭建大模型)

本文主要介绍大模型的prompt,并且给出实战教程。即使零基础也可以实现大模型的搭建。 内容:初级阶段的修炼心法,帮助凝聚和提升内力,为后续修炼打下基础。 1、prompt 1.1含义和作用 prompt就是提示工程的意思。在大型语言模型中…...

Element Plus 与 Vue 3:构建现代化 Web 应用的完美搭档

引言 Element Plus是基于Vue 3的组件库,它继承了Element UI的优秀基因,为Vue 3应用提供了丰富的界面组件。Element Plus不仅拥有与Element UI相同的高质量组件,还针对Vue 3进行了优化和更新,确保了与Vue 3的无缝集成。 环境准备…...

线程间通信与变量修改感知:几种常用方法

线程间通信与变量修改感知:几种常用方法 1. 使用volatile关键字2. 使用synchronized关键字3. 使用wait/notify/notifyAll机制4. 使用轮询(Polling) 💖The Begin💖点点关注,收藏不迷路💖 在Java…...

前后端通信 —— HTTP/HTTPS

目录 一、HTTP/HTTPS 简介 1、HTTP 2、HTTPS 二、HTTP 工作过程 三、HTTP 消息 1、HTTP消息结构 2、HTTP消息示例 四、HTTP 方法(常用) 1、GET 2、POST 3、PUT 4、DELETE 5、GET与POST对比 五、HTTP 状态码(常用) …...

人工智能 (AI) 应用:一个高精度ASD 诊断和照护支持系统

自闭症谱系障碍(ASD)是一种多方面的神经发育状况,影响全球大约1/100的儿童,而在中国,这一比例高达1.8%(引用自《中国0~6岁儿童孤独症谱系障碍筛查患病现状》),男童为2.6%…...

C# 1.方法

方法组成: 1.修饰符:public一般定义共有的 2.方法返回值:void 无返回值; 非void,可以写成其他类型例如int,float,string,string[]等 3.方法名:Add 大驼峰命名法,每一个首字符大写。…...

【C++进阶学习】第七弹——AVL树——树形结构存储数据的经典模块

二叉搜索树:【C进阶学习】第五弹——二叉搜索树——二叉树进阶及set和map的铺垫-CSDN博客 目录 一、AVL树的概念 二、AVL树的原理与实现 AVL树的节点 AVL树的插入 AVL树的旋转 AVL树的打印 AVL树的检查 三、实现AVL树的完整代码 四、总结 前言&#xff1a…...

px,em,rem之间的关系换算

px,em,rem之间的换算 px&#xff1a;普通大小 em&#xff1a;相对单位&#xff0c;相对于父元素的字体大小 rem&#xff1a;相对单位&#xff0c;相对于根元素&#xff08;html&#xff09;的字体大小 <!DOCTYPE html> <html lang"en"> <head>…...

HTTP——POST请求详情

POST请求 【传输实体文本】向指定资源提交数据进行处理请求&#xff08;例如提交表单或者上传文件&#xff09;。数据被包含在POST请求体中。POST 请求可能会导致新的资源的建立或已有资源的修改。 场景&#xff1a; 1. 提交用户注册信息。 2. 提交修改的用户信息。 常见的…...

LingBot-Depth应用案例:智能机器人视觉感知的深度修复实战

LingBot-Depth应用案例&#xff1a;智能机器人视觉感知的深度修复实战 1. 引言&#xff1a;当机器人遇到"视觉障碍" 想象一下&#xff0c;你家的扫地机器人正在客厅工作&#xff0c;突然在玻璃茶几前停了下来——因为它"看"不到透明的玻璃表面。或者一个…...

video-object-removal错误排查手册:常见问题与解决方法汇总

video-object-removal错误排查手册&#xff1a;常见问题与解决方法汇总 【免费下载链接】video-object-removal Just draw a bounding box and you can remove the object you want to remove. 项目地址: https://gitcode.com/gh_mirrors/vi/video-object-removal video…...

Agent落地方法论入门到精通(非常详细),帮你避坑收藏这篇就够了!

涉及到智能体应用的开发时&#xff0c;agent相关知识不可能绕过&#xff0c;不管是基于langchain还是autogen&#xff0c;都要系统性了解agent&#xff0c;才能对agent开发有全面充分的理解。 Agent 到底是什么 如果从工程角度定义&#xff1a; Agent 以大模型为核心决策器&a…...

SpringAI与DeepSeek集成:兼容OpenAI API的流式对话实践

1. 环境准备与基础配置 在开始集成SpringAI与DeepSeek之前&#xff0c;我们需要确保开发环境满足以下要求&#xff1a; JDK 17或更高版本&#xff1a;Spring Boot 3.x系列需要JDK 17作为最低版本支持Spring Boot 3.4.2&#xff1a;这是当前推荐的稳定版本Maven或Gradle&#xf…...

终极HunterPie指南:如何将《怪物猎人:世界》游戏体验提升到全新高度

终极HunterPie指南&#xff1a;如何将《怪物猎人&#xff1a;世界》游戏体验提升到全新高度 【免费下载链接】HunterPie-legacy A complete, modern and clean overlay with Discord Rich Presence integration for Monster Hunter: World. 项目地址: https://gitcode.com/gh…...

别再乱找数据集了!搞多模态大模型,这13个任务最常用的65个基准数据集我都帮你整理好了(附官网链接)

多模态大模型实战指南&#xff1a;65个核心数据集与13大任务全景解析 刚接触多模态大模型的研究者常会陷入"数据迷雾"——面对海量公开数据集却不知从何选起。我曾见过团队花费三周时间盲目测试不同视觉问答数据集&#xff0c;最终发现选用的基准与研究方向根本不匹…...

CCleaner Business 杀毒软件/电脑清理软件 下载安装

链接: https://pan.baidu.com/s/1KPHdTrkV5ElociuavFFrEA 提取码: j9c9此软件为免费开源软件&#xff0c;请勿利用于商业领域&#xff01;&#xff01;&#xff01;...

QMCDecode终极解决方案:突破QQ音乐加密格式限制的完全指南

QMCDecode终极解决方案&#xff1a;突破QQ音乐加密格式限制的完全指南 【免费下载链接】QMCDecode QQ音乐QMC格式转换为普通格式(qmcflac转flac&#xff0c;qmc0,qmc3转mp3, mflac,mflac0等转flac)&#xff0c;仅支持macOS&#xff0c;可自动识别到QQ音乐下载目录&#xff0c;默…...

Pine Script交易策略开发实战指南:从零基础到自动化交易的完整路径

Pine Script交易策略开发实战指南&#xff1a;从零基础到自动化交易的完整路径 【免费下载链接】awesome-pinescript A Comprehensive Collection of Everything Related to Tradingview Pine Script. 项目地址: https://gitcode.com/gh_mirrors/aw/awesome-pinescript …...

AutoCAD二次开发避坑指南:手把手教你选对.NET、VS和CAD版本(2025版)

AutoCAD二次开发避坑指南&#xff1a;手把手教你选对.NET、VS和CAD版本&#xff08;2025版&#xff09; 刚接触AutoCAD二次开发时&#xff0c;最让人头疼的莫过于版本匹配问题。我曾在一个旧项目改造中&#xff0c;因为没注意Visual Studio版本与AutoCAD 2023的兼容性&#xff…...