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
-
导入 MongoDB 公共 GPG 密钥:
wget -qO - https://www.mongodb.org/static/pgp/server-5.0.asc | sudo apt-key add -
-
创建 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
-
更新本地包数据库并安装 MongoDB:
sudo apt update sudo apt install -y mongodb-org
2.2 在 CentOS 上安装 MongoDB
-
创建 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
-
安装 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 基本安全设置
-
设置管理员用户:
登录 MongoDB shell:
mongo
切换到
admin
数据库,并创建管理员用户:use admin db.createUser({user: "admin",pwd: "adminpassword",roles: [ { role: "root", db: "admin" } ]} )
-
启用认证:
编辑 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
-
编辑 MongoDB 配置文件:
在每台服务器上编辑
/etc/mongod.conf
,配置 Replica Set:replication:replSetName: "rs0"
-
启动 MongoDB 服务:
sudo systemctl restart mongod
-
初始化 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" }] })
-
检查 Replica Set 状态:
rs.status()
3. 集群部署注意事项
- 网络配置:确保所有节点之间的网络连接稳定,且防火墙允许相应端口通信。
- 节点配置一致性:确保每个节点的配置文件一致,特别是
replSetName
和bindIp
。 - 安全性:启用用户认证,并使用 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 的稳定运行。
相关文章:
![](https://www.ngui.cc/images/no-images.jpg)
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,以及相关代码复现 二、详情 12、SVM(support vector machines,支持向量机) 实际上,支持向量机是一种二分类模型,它将实例的特征向量映射为空间中的一些点,…...
![](https://www.ngui.cc/images/no-images.jpg)
StringBuffer与StringBuilder 2024-8-21 22-13
目录 一、StringBuffer二、StringBuilder三、总结 一、StringBuffer StringBuffer是一个可变的字符序列,它的存在是为了解决频繁操作字符串时产生大量临时对象的问题。 构造方法: StringBuffer():创建一个空的字符串缓冲区,初始容…...
![](https://i-blog.csdnimg.cn/direct/8947f2ecdfec4628af25ab50c1a0822a.png)
会声会影剪辑视频收费吗,会声会影最新破解版
会声会影2024:引领视频创作新时代的创新之旅** 在数字时代的浪潮中,视频创作已成为连接世界、表达创意的重要方式。随着技术的不断进步,一款名为“会声会影2024”的视频编辑软件横空出世,它不仅继承了前代产品的优秀传统…...
![](https://i-blog.csdnimg.cn/direct/aafa009508ca4088a1da258c56494e77.jpeg#pic_center)
在Windows11强制开启copilot
在 Windows 11 上启用自带的基于 GPT-4 的 Copilot 功能。以下是具体步骤: 更新系统: 确保你的 Windows 11 系统已经更新到最新版本(23H2 或更高版本)。你可以在“设置” > “Windows 更新”中检查并安装最新更新。 更改区域和…...
![](https://www.ngui.cc/images/no-images.jpg)
基于Java的开源CMS有哪些推荐,各自特点是什么
最强大、最易用的CMS,向大家做一个简要介绍。 01 Alfresco Alfresco是一个开源的企业网站内容管理系统,它提供了文档管理、多人协作、记录管理、知识管理网页内容和图像管理等功能。它使用Spring、 Hibernate、 Lucene 和JSF等最新java技术构建了模…...
![](https://i-blog.csdnimg.cn/direct/4319ffc5941d428f94a6c11e094d2660.png)
IPC进程通信以及网络通信
一、IPC 进程间通信方式 共享内存 //最高效的进程间通信方式 不需要把用户的东西再复制到内核 他们与内核进行绑定 共享内存: 1、是一块,内核预留的空间 2、最高效的通信方式 //避免了用户空间到内核空间的数据拷贝 IPC通信方式 ---操作流程类似的…...
![](https://i-blog.csdnimg.cn/direct/fff5499261c74e108f20f02979ade3a2.png)
【脏数据 bug 解决】ValueError: mean must have 1 elements if it is an iterable, got 3
问题描述: 在训练模型的过程中,出现 clip_image_processor 无法处理数据的问题,说明数据集中很可能出现了脏数据。本文使用的数据为 LAION-Aesthetics-V2-6.5plus,从 https://dagshub.com/DagsHub-Datasets/LAION-Aesthetics-V2-…...
![](https://i-blog.csdnimg.cn/direct/f92e670ca050441985b3b2246862ca9a.png)
【Vue3】集成 Ant Design Vue
【Vue3】集成 Ant Design Vue 背景简介开发环境开发步骤及源码总结 背景 随着年龄的增长,很多曾经烂熟于心的技术原理已被岁月摩擦得愈发模糊起来,技术出身的人总是很难放下一些执念,遂将这些知识整理成文,以纪念曾经努力学习奋斗…...
![](https://www.ngui.cc/images/no-images.jpg)
如何处理前端项目中的SEO优化:从SPA到SSR与SSG
如何处理前端项目中的SEO优化:从SPA到SSR与SSG 在前端开发的日常工作中,你可能经常会遇到这样的情况:辛辛苦苦写了一个功能丰富、界面炫酷的单页应用(SPA),但上线后发现搜索引擎的表现却不尽如人意。页面内…...
![](https://i-blog.csdnimg.cn/direct/e65c0f34d09b40ce987ff8ccdc68a330.png)
【UE5】Groom毛发系统的基本使用——给小白人添加头发
目录 效果 步骤 一、准备 二、使用3DsMax制作毛发 三、在UE中给小白人安装毛发 四、修改毛发材质 效果 步骤 一、准备 1. 新建一个第三人称模板工程 2. 在项目设置中,勾选“支持计算蒙皮缓存” 3. 在插件面板中,启用“Groom”和“Alembic Gro…...
![](https://www.ngui.cc/images/no-images.jpg)
DataWorks函数
文章目录 0、MaxCompute预置的函数分类1、日期函数2、数学函数3、算术运算符4、窗口函数5、聚合函数6、字符串函数7、复杂类型函数8、加密函数9、其他函数 0、MaxCompute预置的函数分类 函数类型说明日期函数支持处理DATE、DATETIME、TIMESTAMP等日期类型数据,实现…...
![](https://i-blog.csdnimg.cn/direct/a31cbc4348504b258d1b83f711de2a82.png)
设计模式学习优质网站分享:refactoring.guru
地址 英文版地址:https://refactoring.guru/design-patterns 中文版地址:https://refactoringguru.cn/design-patterns 介绍 这个网站是专门学习 设计模式 和 软件重构 的网站 整体来说并不花哨,但我觉得他最大的优点就是: 概…...
![](https://www.ngui.cc/images/no-images.jpg)
JVM-Java的四种引用
引用分析 无论是通过引用计数算法判断对象的引用数量,还是通过可达性分析算法判断对象是否可达,判定对象是否可被回收都与引用有关,Java 提供了四种强度不同的引用类型 强引用: 被强引用关联的对象不会被回收,只有所…...
![](https://i-blog.csdnimg.cn/direct/5767683d3bea4bde84a0e8500ded2377.jpeg)
探索《黑神话:悟空》品质保障的背后:ISO体系认证
《黑神话:悟空》横空出世 8月20日上午10点,国产首款大型3A游戏《黑神话:悟空》正式上线。游戏一经上线便吸引了无数国内外用户的关注,不仅仅是因为其高超的游戏制作技术,极高的画面精度,精良的的视觉和战斗…...
![](https://i-blog.csdnimg.cn/direct/a7dae709ca4e4e4494585bc24b4c1bab.png)
ArcGIS Pro 实现人口分布栅格TIFF数据的网格提取与可视化
这里在分享一个人口1km精度栅格数据,LandScan是由美国能源部橡树岭国家实验室(ORNL)提供的全球人口分布数据集,具有最高分辨率的全球人口分布数据,是全球人口数据发布的社会标准,是全球最为准确、可靠&…...
![](https://www.ngui.cc/images/no-images.jpg)
select的缺点;poll ;poll的缺点;epoll
1.select的缺点: 1.select监听的文件描述符集合是一个数组,有上限(1024个) 2.select监听的文件描述符集合在应用层,内核层监听事件后需要传递给用户层带来资源开销 3.select需要用户手动查找产生事件的文件…...
![](https://i-blog.csdnimg.cn/direct/a9b7485e14e64e6cbd718e52e4ce5c92.png)
keli5_报错 Cannot Load Device Description问题
1原因 之前创建的keli5的项目软件版本与当前的软件版本不同 使其算法要重新选择 2解决方法 2-1 点击图中的魔术棒 2-2 在这个界面中进入 Settings选项(ST-Link Debugger 旁边) 2-3 点击Flash Download 选项进入图中界面 在点击天加 2-4选择fla…...
![](https://img-blog.csdnimg.cn/img_convert/bf71ac921597a3d8eb88e6eb0a11dae7.gif)
算法的学习笔记—把二叉树打印成多行(牛客JZ78)
😀前言 在算法面试中,二叉树的层序遍历是一个经典的题目。而这道题的要求是进一步将二叉树的每一层结点值打印成多行,即同一层结点从左至右输出,最终结果存放到一个二维数组中返回。接下来,我们将通过代码实例详细解析…...
![](https://i-blog.csdnimg.cn/direct/39122efd3b8d437282233be109a18ed5.png)
FreeRTOS 时间管理
延时函数介绍 函数 描述 vTaskDelay() 相对延时 xTaskDelayUntil() 绝对延时 相对延时:指每次延时都是从执行函数vTaskDelay()开始,直到延时指定的时间结束 绝对延时:指将整个任务的运行周期看成一个整体,适用于需要按…...
![](https://www.ngui.cc/images/no-images.jpg)
F. Valuable Cards D. Smithing Skill
D题 F题 F题: 因为是连续的且都要选,我们直接从左到右去取每个区间到不合法的情况即可,可以在n1的位置添加一个x来结束区间判断。因为是要乘积为x,那么我们只需要放x的因子进去,不然会超时,同时也可以用v…...
![](https://i-blog.csdnimg.cn/direct/d719126837d54f13a8908a9b692a3a93.png)
【电子通识】IPC-A-600中对验收标准的定义
在文章【电子通识】IPC-A-610标准对产品的四种验收条件都是什么意思?中我们讲到IPC-A-610标准(电子组件的可接受性)对于产品的四种验收条件。本文中我们同理讲一讲IPC-A-600中对验收标准的定义。 IPC-A-600文件中的多数示意图和照片同时表示每…...
![](https://i-blog.csdnimg.cn/direct/7f726c4e3d634975814c87e2c544340f.png)
MyBatis(初阶)
1.什么是MyBtis MyBatis是持久层框架,⽤于简化JDBC的开发。 2.准备工作 2.1 创建⼯程 数据库: 2.2 配置数据库连接字符串 以application.yml⽂件为例: 2.3 写持久层代码 Data public class UserInfo {private Integer id;private String username;private Stri…...
![](https://img-blog.csdnimg.cn/img_convert/168bd700f4b9df5e938ad244249a31f0.png)
KDP数据平台:以实战案例验证技术领先力
本文由智领云 LeetTools 工具自动生成 申请试用: https://www.leettools.com/feedback/ 在当今快速发展的技术环境中,数据平台的选择对企业的数字化转型和业务发展至关重要。智领云开源KDP(Kubernetes Data Platform)在数据处理和…...
![](https://i-blog.csdnimg.cn/direct/4a070d73c6cc4f0dadd7009fd74647a7.png)
[Linux] 什么是 Shell?
一、什么是 shell ? shell在英语中的意思就是外壳,所以我们习惯称shell程序为壳程序。那为什么又会被叫做壳程序呢?那是因为shell程序是在内核上面的,属于操作系统的外壳部分,因此我们就称之为壳程序(shell)。 在 Linux 中&#…...
![](https://img-blog.csdnimg.cn/img_convert/80223e4ca111a0b515d3bd82927a8a4d.png)
大模型学习应用 2:快速上手大模型基于langchain实现RAG检索应用
快速上手大模型基于langchain实现RAG检索应用 - 项目作业 目录 准备工作镜像选择算力选择安装包数据说明提示参考链接 Task1 申请 api 后,使用 langchain 导入大模型,并打印出大模型信息Task2 使用 langchian 加载数据,并把数据打印出来Task…...
![](https://i-blog.csdnimg.cn/direct/0f0eb589e85f482892f320ebe9da790d.png)
python环境安装之后,cmd输入python回车会打开微软商店
坑爹!python环境安装之后,cmd输入python回车会打开微软商店 最近发现,安装python环境成功之后,可能会出现cmd输入python验证是否安装成功老会打开微软商店! 解决,打开系统环境配置,找到刚安装…...
![](https://i-blog.csdnimg.cn/direct/efdce504c6bf4797b21ae62db8726754.png)
USB Type-C如何取9V、12V、15V、20V电压-PD快充协议芯片ECP5701
相信大家在生活中也发现了,现在越来越多的设备都改用这种type-C接口的母座进行取电了。 因为欧盟决议 :自2024年起部分消费电子产品必须提供单一的USB-C充电接口。 那么这种type-C接口相比之前的Micro-B接口有着一个很大的优势就是可以有更高的电压&…...
![](https://www.ngui.cc/images/no-images.jpg)
Go 语言 Map 17
Go 语言提供了一个强大的 Map 结构体,用于存储键值对。Map 可以用来存储数据,快速查找和修改数据。下面是 Go 语言 Map 的使用教程。 什么是 Map? Map 是一个键值对的集合,它可以存储任意类型的键和值。Map 中的每个键都是唯一的…...
![](https://www.ngui.cc/images/no-images.jpg)
移植bash到openharmony
1.交叉工具链 下载地址: http://ci.openharmony.cn/workbench/cicd/dailybuild/dailylist 进入ohos-sdk-full,下载一个sdk版本,这里下载的版本是version-Master_Version-OpenHarmony_5.0.0.35-20240805_020232-ohos-sdk-full.tar.gz。 解…...
![](https://img-blog.csdnimg.cn/img_convert/4baf3533dcaf12eaaa244a13b433a622.png)
html table网站/seo网络优化软件
注解解释Controller组合注解(组合了Component注解),应用在MVC层(控制层),DispatcherServlet会自动扫描注解了此注解的类,然后将web请求映射到注解了RequestMapping的方法上。Service组合注解(组合了Component注解),应用在service层(业务逻辑层…...
![](https://img-blog.csdnimg.cn/img_convert/0b1331709591d260c1c78e86d0c51c18.png)
网站开发类毕业论文/ip切换工具
输出解释CPU 以及CPU0。。。的每行的每个参数意思(以第一行为例)为:参数 解释 /proc//statusSize (total pages) 任务虚拟地址空间的大小 VmSize/4Resident(pages) 应用程序正在使用的物理内存的大小 VmRSS/4Shared(pages) 共享页数 0Trs(pages) 程序所拥有的可执行…...
![](https://img-blog.csdnimg.cn/c9435fcc61e94b779e19eb810976b4b9.png)
eclipse网页制作教程/seo推广排名软件
目录 安装WiringPi 失败的过程: 选择的方法: 安装步骤: 找不到wiringPi.h文件解决方法 失败过程: 解决方法: 安装WiringPi 失败的过程: 通过分别使用sudo apt-get install wiringPi 和 wget https…...
![](/images/no-images.jpg)
广州市政府网站建设与管理规范/会计培训
1、Fork、Watch、Star 是什么意思? fork的意思是从别人的代码库中复制一份到你自己的代码库,与普通的复制不同,fork包含了原有库中的所有提交记录, fork后这个代码库是完全独立的,属于你自己,你可以在自己的…...
![](/images/no-images.jpg)
定西做网站/广州seo技术优化网站seo
基于LabVIEW的S7300PLC与PC机的串口通信2011 仪 表 技 术 与 传 感 器 20115 Instrument Technique and Sensor No5LabV IEW S7- 300 PLC PC刘小丽, 张晓光(, 221116): 根据工业系统设计需求, 采用图形化编程语言 LabVI W 设计了 S7 - 300 PLC和 PC机间的串 通信介绍了使用 396…...
![](https://img-blog.csdnimg.cn/img_convert/dd64aaac2cf0c99649f6cb58680c818b.png)
微信公众号怎么做网站的/app代理推广平台
据报道指出小米已有三款平板电脑在测试中,这是它时隔三年之后再次推出平板电脑。小米如此做,柏铭科技认为应该是它受到华为平板的衰退让联想平板出货量倍增的影响,希望在平板电脑市场分羹。小米和华为都是在智能手机市场取得成功之后…...