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

MongoDB 单机和集群环境部署教程

目录

    • 一、MongoDB 单机环境部署
      • 1. 环境准备
      • 2. 安装 MongoDB
        • 2.1 在 Ubuntu 上安装 MongoDB
        • 2.2 在 CentOS 上安装 MongoDB
        • 2.3 启动 MongoDB 服务
        • 2.4 验证 MongoDB 安装
        • 2.5 MongoDB 基本安全设置
      • 3. 单机部署注意事项
    • 二、MongoDB 集群环境部署
      • 1. 环境准备
      • 2. MongoDB Replica Set 部署
        • 2.1 配置每个节点的 MongoDB 实例
        • 2.2 配置 Replica Set
      • 3. 集群部署注意事项
    • 三、MongoDB 使用案例
      • 1. Java 示例:使用 MongoDB Java Driver
        • 1.1 添加 Maven 依赖
        • 1.2 编写 Java 代码
      • 2. Python 示例:使用 `pymongo` 连接 MongoDB
        • 2.1 安装 `pymongo`
        • 2.2 编写 Python 代码
    • 总结
      • 部署过程中的注意事项

一、MongoDB 单机环境部署

1. 环境准备

  • 操作系统:Linux(推荐 Ubuntu 20.04 或 CentOS 7),也可在 Windows 上安装 MongoDB。
  • MongoDB 版本:MongoDB 5.0(推荐使用最新稳定版本)。
  • 硬件要求:至少 2 GB 内存和 20 GB 的硬盘空间。

2. 安装 MongoDB

2.1 在 Ubuntu 上安装 MongoDB
  1. 导入 MongoDB 公共 GPG 密钥

    wget -qO - https://www.mongodb.org/static/pgp/server-5.0.asc | sudo apt-key add -
    
  2. 创建 MongoDB 源列表文件

    echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/5.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-5.0.list
    
  3. 更新本地包数据库并安装 MongoDB

    sudo apt update
    sudo apt install -y mongodb-org
    
2.2 在 CentOS 上安装 MongoDB
  1. 创建 MongoDB 的 YUM 源文件

    echo "[mongodb-org-5.0]
    name=MongoDB Repository
    baseurl=https://repo.mongodb.org/yum/redhat/\$releasever/mongodb-org/5.0/x86_64/
    gpgcheck=1
    enabled=1
    gpgkey=https://www.mongodb.org/static/pgp/server-5.0.asc" | sudo tee /etc/yum.repos.d/mongodb-org-5.0.repo
    
  2. 安装 MongoDB

    sudo yum install -y mongodb-org
    
2.3 启动 MongoDB 服务
sudo systemctl start mongod
sudo systemctl enable mongod
2.4 验证 MongoDB 安装

检查 MongoDB 服务状态:

sudo systemctl status mongod
2.5 MongoDB 基本安全设置
  1. 设置管理员用户

    登录 MongoDB shell:

    mongo
    

    切换到 admin 数据库,并创建管理员用户:

    use admin
    db.createUser({user: "admin",pwd: "adminpassword",roles: [ { role: "root", db: "admin" } ]}
    )
    
  2. 启用认证

    编辑 MongoDB 配置文件 /etc/mongod.conf,启用认证:

    security:authorization: "enabled"
    

    重启 MongoDB 服务:

    sudo systemctl restart mongod
    

3. 单机部署注意事项

  • 安全性:启用用户认证,并限制外部访问 IP。
  • 备份:定期备份数据库,防止数据丢失。
  • 性能优化:根据使用场景调整内存和缓存设置,如 wiredTigerCacheSizeGB
  • 日志管理:配置日志以便于监控和调试。

二、MongoDB 集群环境部署

1. 环境准备

  • 多台服务器:至少 3 台,用于配置 MongoDB Replica Set。
  • 操作系统:Linux(推荐 Ubuntu 20.04 或 CentOS 7)。
  • MongoDB 版本:MongoDB 5.0。

2. MongoDB Replica Set 部署

2.1 配置每个节点的 MongoDB 实例

按照单机环境的安装步骤,在每个节点上安装 MongoDB。

2.2 配置 Replica Set
  1. 编辑 MongoDB 配置文件

    在每台服务器上编辑 /etc/mongod.conf,配置 Replica Set:

    replication:replSetName: "rs0"
    
  2. 启动 MongoDB 服务

    sudo systemctl restart mongod
    
  3. 初始化 Replica Set

    在主节点上启动 MongoDB shell:

    mongo
    

    初始化 Replica Set:

    rs.initiate({_id: "rs0",members: [{ _id: 0, host: "192.168.1.1:27017" },{ _id: 1, host: "192.168.1.2:27017" },{ _id: 2, host: "192.168.1.3:27017" }]
    })
    
  4. 检查 Replica Set 状态

    rs.status()
    

3. 集群部署注意事项

  • 网络配置:确保所有节点之间的网络连接稳定,且防火墙允许相应端口通信。
  • 节点配置一致性:确保每个节点的配置文件一致,特别是 replSetNamebindIp
  • 安全性:启用用户认证,并使用 SSL 进行加密通信。
  • 故障恢复:配置仲裁节点(arbiter)以防止脑裂现象,并定期监控节点状态。

三、MongoDB 使用案例

1. Java 示例:使用 MongoDB Java Driver

1.1 添加 Maven 依赖

pom.xml 中添加 MongoDB Java Driver 依赖:

<dependencies><dependency><groupId>org.mongodb</groupId><artifactId>mongodb-driver-sync</artifactId><version>4.4.0</version></dependency>
</dependencies>
1.2 编写 Java 代码
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.MongoCollection;
import org.bson.Document;public class MongoDBExample {public static void main(String[] args) {MongoClient mongoClient = MongoClients.create("mongodb://admin:adminpassword@localhost:27017");MongoDatabase database = mongoClient.getDatabase("testdb");MongoCollection<Document> collection = database.getCollection("testcollection");Document doc = new Document("name", "John Doe").append("email", "john.doe@example.com").append("age", 29);collection.insertOne(doc);Document myDoc = collection.find().first();System.out.println(myDoc.toJson());mongoClient.close();}
}

2. Python 示例:使用 pymongo 连接 MongoDB

2.1 安装 pymongo
pip install pymongo
2.2 编写 Python 代码
from pymongo import MongoClientdef query_database():client = MongoClient("mongodb://admin:adminpassword@localhost:27017/")db = client["testdb"]collection = db["testcollection"]doc = {"name": "John Doe", "email": "john.doe@example.com", "age": 29}collection.insert_one(doc)result = collection.find_one()print(result)client.close()if __name__ == "__main__":query_database()

总结

通过以上步骤,我们完成了 MongoDB 的单机和集群环境部署,并实现了 Java 和 Python 的简单连接示例。MongoDB 作为一款 NoSQL 数据库,具备高可扩展性和灵活的数据模型,适用于多种应用场景。

部署过程中的注意事项

  • 安全性:启用用户认证、IP 限制和 SSL 加密,确保数据安全。
  • 性能优化:根据需求调整缓存、索引等配置,提高性能。
  • 备份和恢复:定期备份数据库,并测试恢复过程,防止数据丢失。
  • 监控和日志管理:配置监控工具和日志系统,及时发现和解决问题,保障 MongoDB 的稳定运行。

相关文章:

MongoDB 单机和集群环境部署教程

目录 一、MongoDB 单机环境部署1. 环境准备2. 安装 MongoDB2.1 在 Ubuntu 上安装 MongoDB2.2 在 CentOS 上安装 MongoDB2.3 启动 MongoDB 服务2.4 验证 MongoDB 安装2.5 MongoDB 基本安全设置 3. 单机部署注意事项 二、MongoDB 集群环境部署1. 环境准备2. MongoDB Replica Set …...

【学习笔记】Day 20

一、进度概述 1、机器学习常识12-18&#xff0c;以及相关代码复现 二、详情 12、SVM&#xff08;support vector machines&#xff0c;支持向量机&#xff09; 实际上&#xff0c;支持向量机是一种二分类模型&#xff0c;它将实例的特征向量映射为空间中的一些点&#xff0c;…...

StringBuffer与StringBuilder 2024-8-21 22-13

目录 一、StringBuffer二、StringBuilder三、总结 一、StringBuffer StringBuffer是一个可变的字符序列&#xff0c;它的存在是为了解决频繁操作字符串时产生大量临时对象的问题。 构造方法&#xff1a; StringBuffer()&#xff1a;创建一个空的字符串缓冲区&#xff0c;初始容…...

会声会影剪辑视频收费吗,会声会影最新破解版

会声会影2024&#xff1a;引领视频创作新时代的创新之旅** 在数字时代的浪潮中&#xff0c;视频创作已成为连接世界、表达创意的重要方式。随着技术的不断进步&#xff0c;一款名为“会声会影2024”的视频编辑软件横空出世&#xff0c;它不仅继承了前代产品的优秀传统&#xf…...

在Windows11强制开启copilot

在 Windows 11 上启用自带的基于 GPT-4 的 Copilot 功能。以下是具体步骤&#xff1a; 更新系统&#xff1a; 确保你的 Windows 11 系统已经更新到最新版本&#xff08;23H2 或更高版本&#xff09;。你可以在“设置” > “Windows 更新”中检查并安装最新更新。 更改区域和…...

基于Java的开源CMS有哪些推荐,各自特点是什么

最强大、最易用的CMS&#xff0c;向大家做一个简要介绍。 01 Alfresco Alfresco是一个开源的企业网站内容管理系统&#xff0c;它提供了文档管理、多人协作、记录管理、知识管理网页内容和图像管理等功能。它使用Spring、 Hibernate、 Lucene 和JSF等最新java技术构建了模…...

IPC进程通信以及网络通信

一、IPC 进程间通信方式 共享内存 //最高效的进程间通信方式 不需要把用户的东西再复制到内核 他们与内核进行绑定 共享内存&#xff1a; 1、是一块&#xff0c;内核预留的空间 2、最高效的通信方式 //避免了用户空间到内核空间的数据拷贝 IPC通信方式 ---操作流程类似的…...

【脏数据 bug 解决】ValueError: mean must have 1 elements if it is an iterable, got 3

问题描述&#xff1a; 在训练模型的过程中&#xff0c;出现 clip_image_processor 无法处理数据的问题&#xff0c;说明数据集中很可能出现了脏数据。本文使用的数据为 LAION-Aesthetics-V2-6.5plus&#xff0c;从 https://dagshub.com/DagsHub-Datasets/LAION-Aesthetics-V2-…...

【Vue3】集成 Ant Design Vue

【Vue3】集成 Ant Design Vue 背景简介开发环境开发步骤及源码总结 背景 随着年龄的增长&#xff0c;很多曾经烂熟于心的技术原理已被岁月摩擦得愈发模糊起来&#xff0c;技术出身的人总是很难放下一些执念&#xff0c;遂将这些知识整理成文&#xff0c;以纪念曾经努力学习奋斗…...

如何处理前端项目中的SEO优化:从SPA到SSR与SSG

如何处理前端项目中的SEO优化&#xff1a;从SPA到SSR与SSG 在前端开发的日常工作中&#xff0c;你可能经常会遇到这样的情况&#xff1a;辛辛苦苦写了一个功能丰富、界面炫酷的单页应用&#xff08;SPA&#xff09;&#xff0c;但上线后发现搜索引擎的表现却不尽如人意。页面内…...

【UE5】Groom毛发系统的基本使用——给小白人添加头发

目录 效果 步骤 一、准备 二、使用3DsMax制作毛发 三、在UE中给小白人安装毛发 四、修改毛发材质 效果 步骤 一、准备 1. 新建一个第三人称模板工程 2. 在项目设置中&#xff0c;勾选“支持计算蒙皮缓存” 3. 在插件面板中&#xff0c;启用“Groom”和“Alembic Gro…...

DataWorks函数

文章目录 0、MaxCompute预置的函数分类1、日期函数2、数学函数3、算术运算符4、窗口函数5、聚合函数6、字符串函数7、复杂类型函数8、加密函数9、其他函数 0、MaxCompute预置的函数分类 函数类型说明日期函数支持处理DATE、DATETIME、TIMESTAMP等日期类型数据&#xff0c;实现…...

设计模式学习优质网站分享:refactoring.guru

地址 英文版地址&#xff1a;https://refactoring.guru/design-patterns 中文版地址&#xff1a;https://refactoringguru.cn/design-patterns 介绍 这个网站是专门学习 设计模式 和 软件重构 的网站 整体来说并不花哨&#xff0c;但我觉得他最大的优点就是&#xff1a; 概…...

JVM-Java的四种引用

引用分析 无论是通过引用计数算法判断对象的引用数量&#xff0c;还是通过可达性分析算法判断对象是否可达&#xff0c;判定对象是否可被回收都与引用有关&#xff0c;Java 提供了四种强度不同的引用类型 强引用&#xff1a; 被强引用关联的对象不会被回收&#xff0c;只有所…...

探索《黑神话:悟空》品质保障的背后:ISO体系认证

《黑神话&#xff1a;悟空》横空出世 8月20日上午10点&#xff0c;国产首款大型3A游戏《黑神话&#xff1a;悟空》正式上线。游戏一经上线便吸引了无数国内外用户的关注&#xff0c;不仅仅是因为其高超的游戏制作技术&#xff0c;极高的画面精度&#xff0c;精良的的视觉和战斗…...

ArcGIS Pro 实现人口分布栅格TIFF数据的网格提取与可视化

这里在分享一个人口1km精度栅格数据&#xff0c;LandScan是由美国能源部橡树岭国家实验室&#xff08;ORNL&#xff09;提供的全球人口分布数据集&#xff0c;具有最高分辨率的全球人口分布数据&#xff0c;是全球人口数据发布的社会标准&#xff0c;是全球最为准确、可靠&…...

select的缺点;poll ;poll的缺点;epoll

1.select的缺点&#xff1a; 1.select监听的文件描述符集合是一个数组&#xff0c;有上限&#xff08;1024个&#xff09; 2.select监听的文件描述符集合在应用层&#xff0c;内核层监听事件后需要传递给用户层带来资源开销 3.select需要用户手动查找产生事件的文件…...

keli5_报错 Cannot Load Device Description问题

1原因 之前创建的keli5的项目软件版本与当前的软件版本不同 使其算法要重新选择 2解决方法 2-1 点击图中的魔术棒 2-2 在这个界面中进入 Settings选项&#xff08;ST-Link Debugger 旁边&#xff09; 2-3 点击Flash Download 选项进入图中界面 在点击天加 2-4选择fla…...

算法的学习笔记—把二叉树打印成多行(牛客JZ78)

&#x1f600;前言 在算法面试中&#xff0c;二叉树的层序遍历是一个经典的题目。而这道题的要求是进一步将二叉树的每一层结点值打印成多行&#xff0c;即同一层结点从左至右输出&#xff0c;最终结果存放到一个二维数组中返回。接下来&#xff0c;我们将通过代码实例详细解析…...

FreeRTOS 时间管理

延时函数介绍 函数 描述 vTaskDelay() 相对延时 xTaskDelayUntil() 绝对延时 相对延时&#xff1a;指每次延时都是从执行函数vTaskDelay()开始&#xff0c;直到延时指定的时间结束 绝对延时&#xff1a;指将整个任务的运行周期看成一个整体&#xff0c;适用于需要按…...

[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解

突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 ​安全措施依赖问题​ GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...

Leetcode 3576. Transform Array to All Equal Elements

Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接&#xff1a;3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到&#xf…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容

基于 ​UniApp + WebSocket​实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配​微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

如何为服务器生成TLS证书

TLS&#xff08;Transport Layer Security&#xff09;证书是确保网络通信安全的重要手段&#xff0c;它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书&#xff0c;可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...

SAP学习笔记 - 开发26 - 前端Fiori开发 OData V2 和 V4 的差异 (Deepseek整理)

上一章用到了V2 的概念&#xff0c;其实 Fiori当中还有 V4&#xff0c;咱们这一章来总结一下 V2 和 V4。 SAP学习笔记 - 开发25 - 前端Fiori开发 Remote OData Service(使用远端Odata服务)&#xff0c;代理中间件&#xff08;ui5-middleware-simpleproxy&#xff09;-CSDN博客…...

管理学院权限管理系统开发总结

文章目录 &#x1f393; 管理学院权限管理系统开发总结 - 现代化Web应用实践之路&#x1f4dd; 项目概述&#x1f3d7;️ 技术架构设计后端技术栈前端技术栈 &#x1f4a1; 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 &#x1f5c4;️ 数据库设…...

Go语言多线程问题

打印零与奇偶数&#xff08;leetcode 1116&#xff09; 方法1&#xff1a;使用互斥锁和条件变量 package mainimport ("fmt""sync" )type ZeroEvenOdd struct {n intzeroMutex sync.MutexevenMutex sync.MutexoddMutex sync.Mutexcurrent int…...

aurora与pcie的数据高速传输

设备&#xff1a;zynq7100&#xff1b; 开发环境&#xff1a;window&#xff1b; vivado版本&#xff1a;2021.1&#xff1b; 引言 之前在前面两章已经介绍了aurora读写DDR,xdma读写ddr实验。这次我们做一个大工程&#xff0c;pc通过pcie传输给fpga&#xff0c;fpga再通过aur…...

以太网PHY布局布线指南

1. 简介 对于以太网布局布线遵循以下准则很重要&#xff0c;因为这将有助于减少信号发射&#xff0c;最大程度地减少噪声&#xff0c;确保器件作用&#xff0c;最大程度地减少泄漏并提高信号质量。 2. PHY设计准则 2.1 DRC错误检查 首先检查DRC规则是否设置正确&#xff0c;然…...

构建Docker镜像的Dockerfile文件详解

文章目录 前言Dockerfile 案例docker build1. 基本构建2. 指定 Dockerfile 路径3. 设置构建时变量4. 不使用缓存5. 删除中间容器6. 拉取最新基础镜像7. 静默输出完整示例 docker runDockerFile 入门syntax指定构造器FROM基础镜像RUN命令注释COPY复制ENV设置环境变量EXPOSE暴露端…...