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、尝试使用可视化工具连接-使用账号密码

使用账号密码连接方式。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/21547.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入学习 Redis - 基于 Jedis 通过 Java 客户端操作 Redis

目录 一、Jedis 依赖 二、Java 客户端操控 redis 2.1、准备工作(ssh 隧道) 2.2、概要 2.2、string 2.3、hash 2.4、list 2.5、set 2.5、zset 一、Jedis 依赖 自己去 中央仓库 上面找. 二、Java 客户端操控 redis 2.1、准备工作(ssh 隧…

51单片机(普中HC6800-EM3 V3.0)实验例程软件分析 实验二 LED闪烁

目录 前言 一、原理图及知识点介绍 二、代码分析 知识点四:delay(u16 i)这个函数为什么i1时,大约延时10us? 前言 已经是第二个实验了,上一个实验是点亮第一个LED灯,这个实验是LED的闪烁。 一、原理图及知识点介绍…

由红黑树到map/set

文章目录 一.map/set 的封装思路1.封装思路2.红黑树节点调整3.map 和 set 的定义4.仿函数 KeyOfValue5.map/set 的插入 二.map/set 迭代器实现1.迭代器的定义2.解引用运算符重载3.成员访问运算符重载4.(不)等于运算符重载5.begin() 与 end()6. 运算符重载7.-- 运算符重载8.[ ]下…

CSS学习记录(基础笔记)

CSS简介: CSS 指的是层叠样式表* (Cascading Style Sheets),主要用于设置HTML页面的文字内容(字体、大小、对齐方式),图片的外形(边框) CSS 描述了如何在屏幕、纸张或其他媒体上显示 HTML 元素 CSS 节省…

接口抓包,Fiddler抓包使用方法总结,入门到精通辅助实战...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 工作原理 Fiddle…

Docker网络模式详解

目录 Docker网络模式 一、Host模式 二、container模式 三、none模式 四、bridge模式 五、Overlay模式 Docker网络模式 安装Docker时会自动创建3个网络,可以使用docker network ls命令列出这些网络。 [rootdocker ~]# docker network ls 我们在使用docker run…

小程序服务器配置多大够用?

​  了解小程序服务器的大小和要求对于确保小程序的高效运行非常重要。下面将介绍小程序服务器的大小和要求,帮助您选择合适的服务器。 服务器费用 服务器费用因服务器类型、配置和带宽等因素而异。一般而言,小型小程序服务器的年费用在500元至2000元之…

服务器返回 413 Request Entity Too Large

问题 上传一个大于1.5M的文件时,报错:413 Request Entity Too Large 使用的配置 1、用的是docker环境,还有一层代理,代理用的镜像是:jwilder/nginx-proxy 2、docker里是有php和nginx 确认配置 docker里的php和ngi…

详解Spring中涉及的技术

注解 介绍: 注解(Annotation)很重要,未来的开发模式都是基于注解的,JPA是基于注解的,Spring2.5以上都是基于注解的,Hibernate3.x以后也是基于注解的,现在的Struts2有一部分也是基于注解的了,注…

c语言——计算两个数值的最小公倍数

//计算两个数值的最小公倍数 //列如&#xff1a;4和6的最小公倍数是12. #include<stdio.h> int main() {int a,b,temp,i;printf("Input a&b:");scanf("%d,%d",&a,&b);if(a<b){tempa;ab;btemp;}for(ia;i>0;i)if(i%a0&&i%b0…

Spring @Scheduled单线程单实例的坑

文章目录 前言背景验证解决方案 前言 在 Java Spring 项目中经常会用 Scheduled 来实现一些定时任务的场景&#xff0c;有必要了解一些它使用时的问题和内部实现机制。本文是偶然间发现的一个问题&#xff0c;刷新了我的认知&#xff0c;分享给大家。 其他相关文章&#xff1…

基于ASP.NET MVC开发的、开源的个人博客系统

推荐一个功能丰富、易于使用和扩展的开源博客&#xff0c;可以轻松地创建和管理自己的博客。 项目简介 基于.Net Framework 4.5开发的、开源博客系统&#xff0c;具有丰富的功能&#xff0c;包括文章发布、分类、标签、评论、订阅、统计等功能&#xff0c;同时也可以根据需要…

【css】css设置表格样式-边框线合并

<style> table, td, th {border: 1px solid black;//设置边框线 }table {width: 100%; }td {text-align: center;//设置文本居中 } </style> </head> <body><table><tr><th>Firstname</th><th>Lastname</th><t…

深入篇【C++】手搓模拟实现list类(详细剖析底层实现原理)模拟实现正反向迭代器【容器适配器模式】

深入篇【C】手搓模拟实现list类(详细剖析底层实现原理&#xff09;&& 模拟实现正反向迭代器【容器适配器模式】 Ⅰ.迭代器实现1.一个模板参数2.两个模板参数3.三个模板参数 Ⅱ.反向迭代器实现1.容器适配器模式 Ⅲ.list模拟实现1.定义结点2.封装结点3.构造/拷贝4.迭代器…

Hyper实现git bash在windows环境下多tab窗口显示

1.电脑上安装有git bash 下载链接&#xff1a;https://gitforwindows.org/ 安装Hyper 下载链接:官网 https://hyper.is/ 或者在百度云盘下载&#xff1a; https://pan.baidu.com/s/1BVjzlK0s4SgAbQgsiK1Eow 提取码&#xff1a;0r1f 设置 打开Hyper&#xff0c;依次点左上角-&g…

MATLAB /Simulink 快速开发STM32(使用st官方工具 STM32-MAT/TARGET),以及开发过程

配置好环境以后就是开发&#xff1a; stm32cube配置芯片&#xff0c;打开matlab添加ioc文件&#xff0c;写处理逻辑&#xff0c;生成代码&#xff0c;下载到板子中去。 配置需要注意事项&#xff1a; STM32CUBEMAX6.5.0 MABLAB2022BkeilV5.2 Matlab生成的代码CTRLB 其中关键的…

Linux--验证命令行上运行的程序的父进程是bash

1.输入以下代码&#xff1a; #include <stdio.h> #include <unistd.h> int main() {printf("hello world: pid: %d, ppid: %d\n",getpid(),getppid());return 0; }2.编译得到可执行程序​​​ 3.运行得到ppid 4.输入指令 ps axj | head -1 &&am…

【网络基础进阶之路】设计网络划分的实战详解

PS&#xff1a;本要求基于华为的eNSP模拟软件进行 具体要求&#xff1a; 完成步骤&#xff1a; 1、对192.168.1.0/24进行子网划分 2、对每一个路由器进行IP的配置 3、开始静态路由的书写&#xff0c;在写之前&#xff0c;我们可以先对每一个路由器写一条通向右边的缺省路由&…

C高级-day2

思维导图 #!/bin/bash echo "$(head -n 5 /etc/group | tail -1)" mkdir /home/ubuntu/copy cd /home/ubuntu/copy cp /etc/shadow test chown root test chmod o-r,o-w,o-x test#include <myhead.h> //递归实现&#xff0c;输入一个数&#xff0c;输出这个数的…

【设计模式——学习笔记】23种设计模式——模板方法模式Template Method(原理讲解+应用场景介绍+案例介绍+Java代码实现)

文章目录 介绍基本介绍使用说明应用场景登场角色 案例实现案例一问题介绍实现模板方法模式的钩子方法 案例二实现 模板方法模式在IOC的源码分析总结思考思考一思考二 文章说明 介绍 基本介绍 模板方法模式&#xff0c;又叫模板模式&#xff0c;在一个抽象类中定义了一个执行它…