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

MongoDB文档--基本安装-linux安装(mongodb环境搭建)-docker安装(挂载数据卷)-以及详细版本对比

阿丹:

        前面了解了mongodb的一些基本概念。本节文章对安装mongodb进行讲解以及汇总。

官网教程如下: 

安装 MongoDB - MongoDB-CN-Manual

 版本特性

下面是各个版本的选择请在安装以及选择版本的时候参考一下:

MongoDB 2.x 版本:

这个版本引入了聚合管道(Aggregation Pipeline)功能,这是MongoDB中一种利用数据管道原理实现数据聚合操作的功能,类似于SQL中的GROUP BY和HAVING子句。此外,2.x版本还增加了分片集群(Sharded Cluster)和可插拔存储引擎(Pluggable Storage Engines)等重要特性。

MongoDB 3.2版本:

这个版本对分片集群(Sharded Cluster)进行了改进,使得配置分片集群更加简单和灵活。此外,3.2版本还增加了部分索引(Partial Indexes)、文档校验(Document Validation)和聚合管道(Aggregation Pipeline)等特性。

MongoDB 3.4版本:

这个版本在数据复制(Replication)和故障恢复(Fault Tolerance)方面进行了改进,使得系统更加可靠和可用。此外,3.4版本还增加了地理空间索引(Geospatial Indexing)、二进制数据(Binary Data)和用户自定义函数(User-Defined Functions)等特性。

MongoDB 4.0版本:

这个版本引入了MongoDB 4.0,这个版本主要聚焦于可扩展性(Scalability)、性能(Performance)和可靠性(Reliability)。它引入了多文档事务(Multi-Document Transactions)、聚合管道(Aggregation Pipeline)和ACID保证(ACID Guarantees)等新特性。

MongoDB 4.2版本:

这个版本在查询和聚合方面有了很大的提升,新增了文本搜索(Text Search)、地理位置查询(Geo-Spacial Query)和固定集合(Fixed View)等特性。同时,4.2版本还增强了聚合管道(Aggregation Pipeline),使其支持更多的操作和操作符。

 简而言之:
不需要事务,建议选择3.4
需要简单事务,建议选择4.0
需要分布式事务或其他必要功能,建议选择4.2
学习用途,建议选择最新版本

根据官方公告,MongoDB 7.0.0-rc10 (release candidate)版本主要引入了以下新特性和改进:

目前最新: 

  1. 引入了新的数据修复工具,可提高数据可用性和一致性。
  2. 改进了副本集的故障恢复,提供了更快的故障转移和数据恢复。
  3. 增强了聚合管道,支持更多的操作和操作符。
  4. 引入了新的地理空间查询和索引功能,可以更轻松地执行地理空间查询。
  5. 改进了性能和可扩展性,提供了更高的吞吐量和更好的持久性保证。

此外,还修复了一些已知的漏洞和错误,提高了系统的稳定性和安全性。总体来说,MongoDB 7.0.0-rc10 引入了许多新特性和改进,有助于提高数据可用性、一致性和性能

本文章分为两个部分:

        普通linux安装-并配置mongodb的环境变量

        docker安装-挂载数据卷到外部

 

普通linux安装

官方网页 (官方下载网址)

Install MongoDB Community Kubernetes Operator | MongoDB

1、在官网下载对应选择版本的tgz包。

 

我这里因为是学习需要所以选择了最新版本。 

 注意打包的格式一定是tgz

2、将文件上传到linux系统中

使用服务器连接工具完成即可。要注意自己的存储路径。

 

 3、解压mongdb安装包

首先进入压缩包所在目录

解压目标文件,linux中解压文件代码如下

cd /压缩包存在路径
tar -zxvf 目标压缩文件.tgz

解压完成后我们就会获得一个mongodb的文件夹。这个时候可以把之前的压缩包删除掉就可以了。

 

该文件夹中包含了bin等文件夹。 

 4、创建mongodb必要的目录

4/1、在/usr/local目录中创建mongodb文件夹

cd /usr/local
mkdir mongodb

注意在哪里创建文件夹要根据自己给mongodb存放在哪里了。

4/2、在mongodb下创建data目录和logs目录,以及日志文件mongodb.log

cd mongodb #进入文件夹
mkdir data
mkdir logs
touch /usr/local/mongodb/logs/mongodb.log

 5、移动mongodb安装目录

将解压后的文件中的所有文件全部移动到咱们自己进行创建的文件夹中去方便管理:

linux语法注意:/*是所有子文件 移动文件使用mv语法

mv mongodb-linux-x86_64-rhel70-7.0.0-rc10/* /usr/local/mongodb

注意:

1、在当前的文件夹下面,也就是说按照文章的路径来说就是需要到/usr/local路径下面

2、后面的路径是要移动到的目标路径

6、设置mongodb的环境变量

如果不做环境配置每次启动的时候就要写很多启动参数。

配置环境变量的启动:

vim /etc/profile

在文件中添加一下配置

export MONGODB_HOME=/usr/local/mongodb
export PATH=$MONGODB_HOME/bin:$PATH

在书写配置文件的时候一定要注意配置文件中的规范,不要出现多余空格,以及需要注意环境变量中的路径。

注意!!!!:

在修改完环境变量以后一定要进行重启或者使用下面代码重新加载修改过的配置文件

source /etc/profile

 使用上述代码将会重新加载 /etc/profile 文件并应用最新的环境变量设置,而无需关闭和重新打开终端。

 或者将终端关闭重新打开也可以重新加载环境

7、添加mongodb配置文件

添加对应配置文件,使用代码编辑配置文件。

vim /etc/mongodb.conf

添加一下常用配置:

#指定数据库路径
dbpath=/usr/local/mongodb/data
#指定MongoDB日志文件
logpath=/usr/local/mongodb/logs/mongodb.log
# 使用追加的方式写日志
logappend=true
#端口号
port=27017 
#方便外网访问,外网所有ip都可以访问,不要写成固定的linux的ip
bind_ip=0.0.0.0
fork=true # 以守护进程的方式运行MongoDB,创建服务器进程
#auth=true #启用用户验证
#bind_ip=0.0.0.0 #绑定服务IP,若绑定127.0.0.1,则只能本机访问,不指定则默认本地所有IP

8、启动和关闭MongoDB

赋予mongoDB文件夹权限

sudo chmod -R 777 /usr/local/mongodb

进入 bin 目录

cd /usr/local/mongodb/bin

启动 MongoDB(-conf 使用配置文件方式启动)

mongod -f /etc/mongodb.conf

关闭 MongoDB(-conf 使用配置文件方式关闭 )

mongod --shutdown -f /etc/mongodb.conf

查看是否运行

#查看进程
ps -ef | grep mongod

 使用可视化工具进行连接测试

注意!!!:

在连接前要确定线上的安全组是否放行端口号,以及在linux上的防火墙端口号是否已经开放。

下面是关闭防火墙的一些指令。

在Linux中,关闭防火墙的指令取决于您使用的具体发行版。大多数发行版都使用了防火墙工具,如iptables或firewalld。以下是几个常见发行版的关闭防火墙指令:在Ubuntu或Debian上,可以使用以下命令关闭防火墙:
sudo ufw disable
在CentOS或RHEL上,可以使用以下命令关闭防火墙:
sudo systemctl stop firewalld
或者sudo iptables -P INPUT ACCEPT
sudo iptables -P output ACCEPT
sudo iptables -P forward ACCEPT
sudo iptables -t nat -P PREROUTING ACCEPT
sudo iptables -t nat -P POSTrouting ACCEPT
sudo iptables -t mangle -P PREROUTING ACCEPT
sudo iptables -t mangle -P POSTrouting ACCEPT
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT DROP
sudo iptables -t nat -P PRERouting DROP
sudo iptables -t nat -P postrouting DROP
sudo iptables -t mangle -P PREROUTING DROP
sudo iptables -t mangle -P POSTrouting DROP
这些命令将关闭iptables防火墙,但是请注意,这些命令可能会对系统造成安全风险

 

 docker安装mongodb并挂载数据卷-版本按照4.2为例

1、拉取mongodb4.2版本镜像

docker pull mongo:4.2

  

2、查看是否有Mongo镜像

docker images

3、创建目录和配置文件

创建目录:

mkdir -p /root/mongo/data
mkdir -p /root/mongo/conf
mkdir -p /root/mongo/log

创建文件:

cd /root/mongo/conf
vim mongodb.conf
#端口
port=27017
#数据库文件存放目录
dbpath=/root/mongo/data
#日志文件存放路径
logpath=/root/mongo/log
#使用追加方式写日志
logappend=true
#以守护线程的方式运行,创建服务器进程
fork=true
#最大同时连接数
maxConns=100
#不启用验证
#noauth=true
#每次写入会记录一条操作日志
journal=true
#存储引擎有mmapv1、wiredTiger、mongorocks
storageEngine=wiredTiger
#访问IP
bind_ip=0.0.0.0
#用户验证
#auth=true

注意上面路径以及连接配置的路径可自定义,根据自己的需求来进行配置已经安排。

4、运行mongo容器(外挂载配置文件和数据)挂载数据卷

docker run -d \
--name mongodb  \
-p 27017:27017 \
-v /root/mongo/data:/data/db \
-v /root/mongo/conf:/data/conf \
-v /root/mongo/log:/data/log \
-e MONGO_INITDB_ROOT_USERNAME=admin \
-e MONGO_INITDB_ROOT_PASSWORD=123456 \
--privileged=true \
--restart always \
mongo:4.2

这段代码是用于在Docker中运行一个名为"mongodb"的容器,并将其映射到本地主机的27017端口。容器的数据、配置和日志目录都被指定到了本地的/root/mongo/data、/data/conf和/data/log目录下。

同时,该容器还设置了两个环境变量:MONGO_INITDB_ROOT_USERNAME和MONGO_INITDB_ROOT_password,分别设置为"admin"和"123456"。这些环境变量可以在容器内部使用,用于MongoDB的初始化数据库设置。

另外,该容器还使用了特权模式(--privileged=true),这可以让容器拥有更多的系统权限。最后,使用了--restart always选项,这意味着容器将始终在退出后自动重启。

综上所述,这段代码的功能是在Docker中运行一个名为"mongodb"的MongoDB容器,并将其映射到本地主机的27017端口,同时将容器的数据、配置和日志目录映射到本地的/root/mongo/data、/data/conf和/data/log目录下,并设置了MongoDB的初始化数据库用户名和密码。容器使用特权模式,并且将始终自动重启。

注意:用户和密码这行并不是必须的。如何不需要这可以将

-e MONGO_INITDB_ROOT_USERNAME=admin \
-e MONGO_INITDB_ROOT_PASSWORD=123456 \

这两行代码删除掉即可。

 

5、检查是否正常运行 

docker ps -a

6、尝试使用可视化工具连接-使用账号密码

使用账号密码连接方式。

 在下面输入用户名和密码。

相关文章:

MongoDB文档--基本安装-linux安装(mongodb环境搭建)-docker安装(挂载数据卷)-以及详细版本对比

阿丹: 前面了解了mongodb的一些基本概念。本节文章对安装mongodb进行讲解以及汇总。 官网教程如下: 安装 MongoDB - MongoDB-CN-Manual 版本特性 下面是各个版本的选择请在安装以及选择版本的时候参考一下: MongoDB 2.x 版本&#xff1a…...

tomcat限制IP访问

tomcat可以通过增加配置&#xff0c;来对来源ip进行限制&#xff0c;即只允许某些ip访问或禁止某些来源ip访问。 配置路径&#xff1a;server.xml 文件下 标签下。与同级 <Valve className"org.apache.catalina.valves.RemoteAddrValve" allow"192.168.x.x&…...

互联网宠物医院系统开发:数字化时代下宠物医疗的革新之路

随着人们对宠物关爱意识的提高&#xff0c;宠物医疗服务的需求也日益增加。传统的宠物医院存在排队等待、预约难、信息不透明等问题&#xff0c;给宠物主人带来了诸多不便。而互联网宠物医院系统的开发&#xff0c;则可以带来许多便利和好处。下面将介绍互联网宠物医院系统开发…...

docker镜像批量导出导入

docker镜像批量导出导入 image_tar为存储镜像目录 删除所有容器 一、首先需要停止所有运行中的容器 docker stopdocker ps -a -q docker ps -a -q 意思是列出所有容器&#xff08;包括未运行的&#xff09;&#xff0c;只显示容器编号&#xff0c;其中 -a : 显示所有的容器&…...

宇凡微2.4g遥控船开发方案,采用合封芯片

2.4GHz遥控船的开发方案是一个有趣且具有挑战性的项目。这样的遥控船可以通过无线2.4GHz频率进行远程控制&#xff0c;让用户在池塘或湖泊上畅游。以下是一个简要的2.4GHz遥控船开发方案&#xff1a; 基本构想如下 mcu驱动两个小电机&#xff0c;小电机上安装两个螺旋桨&#…...

RPC框架引入zookeeper服务注册与服务发现

Zookeeper概念及其作用 ZooKeeper是一个分布式的&#xff0c;开放源码的分布式应用程序协调服务&#xff0c;是Google的Chubby一个开源的实现&#xff0c;是大数据生态中的重要组件。它是集群的管理者&#xff0c;监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理…...

MySQL用通配符过滤数据

简单的不使用通配符过滤数据的方式使用的值都是已知的&#xff0c;但是当搜索产品名中包含ashui的所有产品时&#xff0c;用简单的比较操作符肯定不行&#xff0c;必须使用通配符。利用通配符可以创建比较特定数据的搜索模式。 通配符&#xff1a;用来匹配值的一部分的特殊字符…...

低通、高通、带通、阻通滤波器

目录 低通、高通、带通、阻通滤波器 低通、高通、带通、带阻滤波器的区别 通俗理解&#xff1a; 1、低通滤波器 2、高通滤波器 3、带通滤波器 4、带阻滤波器 5、全通滤波器 低通、高通、带通、阻通滤波器 低通、高通、带通、带阻滤波器的区别 低通滤波器&#xff1a;只…...

IDEA SpringBoot Maven profiles 配置

IDEA SpringBoot Maven profiles 配置 IDEA版本&#xff1a; IntelliJ IDEA 2022.2.3 注意&#xff1a;切换环境之后务必点击一下刷新&#xff0c;推荐点击耗时更短。 application.yaml spring:profiles:active: env多环境文件名&#xff1a; application-dev.yaml、 applicat…...

微信小程序 背景图片如何占满整个屏幕

1. 在页面的wxss文件中&#xff0c;设置背景图片的样式&#xff1a; page{background-image: url(图片路径);background-size: 100% 100%;background-repeat: no-repeat; } 2. 在页面的json文件中&#xff0c;设置背景图片的样式&#xff1a; {"backgroundTextStyle&qu…...

邪恶版ChatGPT来了!

「邪恶版」ChatGPT 出现&#xff1a;每月 60 欧元&#xff0c;毫无道德限制&#xff0c;专为“网络罪犯”而生。 WormGPT 并不是一个人工智能聊天机器人&#xff0c;它的开发目的不是为了有趣地提供无脊椎动物的人工智能帮助&#xff0c;就像专注于猫科动物的CatGPT一样。相反&…...

一、Postfix[安装与配置、smtp认证、Python发送邮件以及防垃圾邮件方法、使用腾讯云邮件服务]

Debian 11 一、安装 apt install postfix 二、配置 1.dns配置 解释&#xff1a;搭建真实的邮件服务器需要在DNS提供商那里配置下面的dns 配置A记录mail.www.com-1.x.x.x配置MX记录www.com-mail.www.com 解释&#xff1a;按照上面的配置通常邮件格式就是adminwww.com其通过…...

React哲学——官方示例

在本篇技术博客中&#xff0c;我们将介绍React官方示例&#xff1a;React哲学。我们将深入探讨这个示例中使用的组件化、状态管理和数据流等核心概念。让我们一起开始吧&#xff01; 项目概览 React是一个流行的JavaScript库&#xff0c;用于构建用户界面。React的设计理念是…...

设计模式之开闭原则

什么是开闭原则? 开放封闭原则称为OCP原则&#xff08;Open Closed Principle&#xff09;是所有面向对象原则的核心。 “开闭原则”是面向对象编程中最基础和最重要的设计原则之一。 软件设计本身所追求的目标就是封装变化、降低耦合&#xff0c;而开放封闭原则正是对这一…...

Linux中的file命令:查看文件类型

2023年8月1日&#xff0c;周二上午 目录 简要说明使用方法MIME类型举例说明 简要说明 在Linux中&#xff0c;file命令用于识别文件类型。 file命令可以识别各种类型的文件&#xff0c;包括普通文件、目录、符号链接、设备文件、压缩文件、二进制可执行文件等。 它是一个非常…...

使用WiFi测量仪进行机器人定位的粒子过滤器研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

【vue】vue 里面使用 v-html 插入的文本带有换行符‘\n‘不换行

最近开发vue2 项目 &#xff0c;接口返回的是类似于这样的数据&#xff1a;我是第一行的哦\n我是第二行的哦 我是直接这样渲染的&#xff0c; //html <p v-htmltext></p>//渲染值 this.text "我是第一行的哦\n我是第二行的哦"但结果却是不如意&#x…...

Java失效算法与应用(FIFO、LRU、LFU)

文章目录 一、什么是失效算法二、先来先淘汰&#xff08;FIFO&#xff09;1、FIFO概述2、Java实现FIFO3、FIFO特点 三、最久未用淘汰&#xff08;LRU&#xff09;1、LRU概述2、Java实现LRU 四、最近最少使用&#xff08;LFU&#xff09;1、LFU概述2、Java实现LFU 五、应用案例 …...

Go语音介绍

Go语言介绍 Go 即Golang&#xff0c;是Google公司2009年11月正式对外公开的一门编程语言。 Go是静态强类型语言&#xff0c;是区别于解析型语言的编译型语言。 解析型语言——源代码是先翻译为中间代码&#xff0c;然后由解析器对代码进行解释执行。 编译型语言——源代码编…...

Vue2与Vue3响应式原理

Vue2的响应式 Vue3的响应式...

C# SqlSugar:依赖注入与仓储模式实践

C# SqlSugar&#xff1a;依赖注入与仓储模式实践 在 C# 的应用开发中&#xff0c;数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护&#xff0c;许多开发者会选择成熟的 ORM&#xff08;对象关系映射&#xff09;框架&#xff0c;SqlSugar 就是其中备受…...

代理篇12|深入理解 Vite中的Proxy接口代理配置

在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题

在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件&#xff0c;这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下&#xff0c;实现高效测试与快速迭代&#xff1f;这一命题正考验着…...

CVPR2025重磅突破:AnomalyAny框架实现单样本生成逼真异常数据,破解视觉检测瓶颈!

本文介绍了一种名为AnomalyAny的创新框架&#xff0c;该方法利用Stable Diffusion的强大生成能力&#xff0c;仅需单个正常样本和文本描述&#xff0c;即可生成逼真且多样化的异常样本&#xff0c;有效解决了视觉异常检测中异常样本稀缺的难题&#xff0c;为工业质检、医疗影像…...

Visual Studio Code 扩展

Visual Studio Code 扩展 change-case 大小写转换EmmyLua for VSCode 调试插件Bookmarks 书签 change-case 大小写转换 https://marketplace.visualstudio.com/items?itemNamewmaurer.change-case 选中单词后&#xff0c;命令 changeCase.commands 可预览转换效果 EmmyLua…...

Kubernetes 节点自动伸缩(Cluster Autoscaler)原理与实践

在 Kubernetes 集群中&#xff0c;如何在保障应用高可用的同时有效地管理资源&#xff0c;一直是运维人员和开发者关注的重点。随着微服务架构的普及&#xff0c;集群内各个服务的负载波动日趋明显&#xff0c;传统的手动扩缩容方式已无法满足实时性和弹性需求。 Cluster Auto…...

2025年低延迟业务DDoS防护全攻略:高可用架构与实战方案

一、延迟敏感行业面临的DDoS攻击新挑战 2025年&#xff0c;金融交易、实时竞技游戏、工业物联网等低延迟业务成为DDoS攻击的首要目标。攻击呈现三大特征&#xff1a; AI驱动的自适应攻击&#xff1a;攻击流量模拟真实用户行为&#xff0c;差异率低至0.5%&#xff0c;传统规则引…...

何谓AI编程【02】AI编程官网以优雅草星云智控为例建设实践-完善顶部-建立各项子页-调整排版-优雅草卓伊凡

何谓AI编程【02】AI编程官网以优雅草星云智控为例建设实践-完善顶部-建立各项子页-调整排版-优雅草卓伊凡 背景 我们以建设星云智控官网来做AI编程实践&#xff0c;很多人以为AI已经强大到不需要程序员了&#xff0c;其实不是&#xff0c;AI更加需要程序员&#xff0c;普通人…...

字符串哈希+KMP

P10468 兔子与兔子 #include<bits/stdc.h> using namespace std; typedef unsigned long long ull; const int N 1000010; ull a[N], pw[N]; int n; ull gethash(int l, int r){return a[r] - a[l - 1] * pw[r - l 1]; } signed main(){ios::sync_with_stdio(false), …...

高端性能封装正在突破性能壁垒,其芯片集成技术助力人工智能革命。

2024 年&#xff0c;高端封装市场规模为 80 亿美元&#xff0c;预计到 2030 年将超过 280 亿美元&#xff0c;2024-2030 年复合年增长率为 23%。 细分到各个终端市场&#xff0c;最大的高端性能封装市场是“电信和基础设施”&#xff0c;2024 年该市场创造了超过 67% 的收入。…...