前言
MongoDB 是一个基于分布式文件存储的数据库,主要用于为 web 应用提供可扩展的高性能数据存储解决方案。
以下内容是如何在 Linux 下搭建单机版 MongoDB 的教程,主要参照 MongoDB - 学习教程
如果想要在 Windows 下安装 MongoDB ,详见 MongoDB的安装(详细教程)
一、概述
MongoDB 由 C++语言编写,是一个介于关系型数据库和非关系型数据之间的产品,是非关系型数据库中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似与 json
的 bson
格式,因此可以存储比较复杂的数据类型。MongoDB 最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据单表查询的绝大部分功能,而且还支持对数据建立索引。
MongoDB 的设计目标是高性能、可扩展、易部署、易使用,存储数据非常方便。所以它比传统的关系数据库,例如 MySQL,更加适合去应对一些 “三高” 需求:比如对数据库高并发的读写需求、对海量数据的高效率存储和访问需求以及对数据库的高可扩展和高可用性的需求。
由此可见 MongoDB 的特点如下:
高性能高可用高扩展丰富的查询支持动态模式和灵活的文档模型
应用常见上通常见到的是存储用户信息、聊天信息、游戏数据、订单信息等等。之前我们就有使用 MongoDB 存储一些优惠劵的信息,性能上也是非常不错的。
二、下载
选择 Products > Community Edition
就能进入社区版
在这里下载 Linux 版对应的安装包
在这里直接下载可能会比较慢,以下我提供了已经下载好的安装包:
链接: https://pan.baidu.com/s/1gNhoJc7T1TOKxQfvpHUkwg
提取码: 8e97
三、安装与启动
连上 Linux 服务器(这里的服务器我用的是云服务器),我先创建一个 mongodb
的文件夹来存放安装包。
# 在 /soft 目录下创建一个空的文件夹 mongodb mkdir /soft/mongodb # 进入这个新建的文件夹下 cd /soft/mongodb
然后上传之前下载好的 Linux 下 MongoDB 的安装包,使用 rz
命令上次文件(有些终端工具是可以直接上传文件的,比如 FinalShell)
在该目录下再创建一个文件夹,并且将安装包解压到该文件夹中
# 在当前目录下(mysql)下创建一个 mongodb-5.0.11 文件夹 mkdir mongodb-5.0.11 # 解压安装包到该目录下 tar -xvf mongodb-linux-x86_64-rhel70-5.0.11.tgz -C mongodb-5.0.11
解压完成之后可以切换到 mongodb-5.0.11
目录下查看解压后的文件
# 进入 mongodb-5.0.11 文件夹 cd mongodb-5.0.11 # 进入 mongodb-linux-x86_64-rhel70-5.0.11 文件夹 cd mongodb-linux-x86_64-rhel70-5.0.11 # 查看目录下的文件 ll
可以看到和 windows 下解压之后的文件是差不多的,bin
目录下存放的是 MongoDB
的一些命令。
创建与 bin
目录同级的 data\db
、log
和 conf
目录用于存放数据和日志
# 创建 data\db 文件夹存放数据 mkdir -p data/db # 创建 log 文件夹存放日志 mkdir log # 创建 conf 文件夹存放配置文件 mkdir conf
在 log
目录下创建 mongodb.log
存放日志,在 conf
目录下创建 mongodb.conf
文件并添加以下配置信息:
# 进入 log 目录 cd log # 创建 mongodb.log 文件 touch mongodb.log # 在 conf 目录下创建 mongodb.conf 文件并编辑 vi ../conf/mongodb.conf
配置文件:
systemLog: # MongoDB发送所有日志输出的目标指定为文件 # The path of the log file to which mongod or mongos should send all diagnostic logging information destination: file # mongod或mongos应向其发送所有诊断日志记录信息的日志文件的路径 path: "/soft/mongodb/mongodb-5.0.11/mongodb-linux-x86_64-rhel70-5.0.11/log/mongod.log" # 当mongos或mongod实例重新启动时,mongos或mongod会将新条目附加到现有日志文件的末尾。 logAppend: true storage: # mongod实例存储其数据的目录。storage.dbPath设置仅适用于mongod。 # The directory where the mongod instance stores its data.Default Value is "/data/db". dbPath: "/soft/mongodb/mongodb-5.0.11/mongodb-linux-x86_64-rhel70-5.0.11/data/db" journal: #启用或禁用持久性日志以确保数据文件保持有效和可恢复。 enabled: true processManagement: #启用在后台运行mongos或mongod进程的守护进程模式。 fork: true net: # 服务实例绑定的IP,默认是localhost(10.0.4.12:局域网IP) bindIp: localhost,10.0.4.12 # bindIp #绑定的端口,默认是27017 port: 27017
进入到 bin
目录下 启动 MongoDB
# 以配置文件的形式启动mongod -f ../conf/mongodb.conf
如果在输入上述命令之后提示:-bash: mongod: command not found
,但是 bin
目录下又有 mongod
的可执行文件,可查看文章末尾 可能会遇到的问题
看到 successfully
就表示启动成功了,forked process:19886
表示该服务启动的进程号是:19886
,可通过 ps -ef | grep 19886
或者 ps -ef | grep mongod
才看 MongoDB
的运行情况。
停止关闭服务:
方式一:正常流程关闭:
# 客户端登录服务,注意,这里通过localhost登录,如果需要远程登录,必须先登录认证才行。 mongo --port 27017 # 关闭服务 db.shutdownServer()
方式二:快速关闭:
#通过进程编号关闭节点 kill -2 19886
四、连接
登录客户端服务,输入 mongo
命令便可以连接上
mongo
但是通常我们是通过图型化工具,远程进行连接。
一些连接数据库的图形化工具也能够连接 MongoDB,比如 Navicat,Compass
图形化界面客户端是能在 MongoDB 官网上找到的。
五、可能会遇到的问题
(1)-bash: mongod: 命令未找到
如果在输入 mongodb
相关的命令之后提示:-bash: mongod: command not found
,但是 bin
目录下又有的可执行文件
原因是没有将可执行文件
添加至 path
,输入以下命令:
export PATH=/soft/mongodb/mongodb-5.0.11/mongodb-linux-x86_64-rhel70-5.0.11/bin:$PATH
重新启动下 MongoDB
(2)数据损坏重修复
如果一旦是因为数据损坏,则需要进行如下操作(了解):
删除lock文件:
# mongodb-data-db-directory 表示 数据存放路径 # 比如:/soft/mongodb/mongodb-5.0.11/mongodb-linux-x86_64-rhel70-5.0.11/data/db rm -f <mongodb-data-db-directory>/*.lock
修复数据:
# mongodb-data-db-directory 表示 数据存放路径 # 比如:/soft/mongodb/mongodb-5.0.11/mongodb-linux-x86_64-rhel70-5.0.11/data/db mongod --repair --dbpath=<mongodb-data-db-directory>
(3)远程连接时出错
这个错误提示出现的可能有很多,我就列举几个我能想到的吧
- 首先去检查你的
MongoDB
是否关掉了,如果关了的话重启再连接 - 服务器上面的防火墙是否是开着的状态,或者
27017
的端口是否对外开放 - 如果你的服务器是云服务器的话,需要去云服务器上面开放
27017
的端口
第一种情况我就不赘述了,如果你的 MongoDB
是安装在虚拟机上面的话,简单粗暴的方式是直接关闭防火墙
# 关闭防火墙 systemctl stop firewalld.service # 查看防火墙的状态 firewall-cmd --state # 禁止firewall开机启动 systemctl disable firewalld.service
或者为了安全,只开放特定的端口号,MongoDB
默认端口是 27017
# 关闭防火墙 systemctl stop firewalld.service # 27017 端口对外开放 firewall-cmd --remove-port=27017/tcp --permanent # 重启防火墙 firewall-cmd --reload
但是,如果你 MongoDB 并不是安装在虚拟机上的,而是放到云服务器上面,那你必须还得在云服务上面开放这几个端口
行在 某某云 上面的,我就得做如下设置:
找到我的服务器,点击 更多
,选择 管理
进入下一个页面之后,选择 防火墙
添加 27017
端口对外开放
测试连接
到此这篇关于Linux系统下安装MongoDB的详细方法图文教程的文章就介绍到这了,更多相关Linux MongoDB安装方法内容请搜索好代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持好代码网!