【MongoDB】mongodb安装及启动踩坑点

mongodb的安装,基本上参考文章[1]。

但是在过程中,有一些踩坑点。

1,高版本mongodb不自带mongo脚本

在文章1中,作者在解压后,直接使用了mongo脚本,而我下载的mongodb版本要更高,在解压后,bin目录中没有mongo脚本,mongo脚本是mongodb的命令行客户端,据说,这个从6.0版本开始是要自己安装的。

2,mongodb缺少依赖

在使用mongod启动server时,提示缺少依赖。通过ldd mongod命令,发现缺少依赖如下:

复制代码
libnetsnmpmibs.so.31
libnetsnmpagent.so.31

尝试过使用yum whatprovides XXX来找到包含该依赖的组件并安装,发现都是一些net-snmp-agent-XXX。yum install后并没有解决问题。

后来从文章[2]那里,找到了解决办法,安装net-snmp。

复制代码
yum install net-snmp

安装后,就不会有缺少依赖的报错了。

其实mongodb解压后,里面包括一个snmp的包,应该是需要snmp的。snmp是一种网络协议[3],而net-snmp是实现了snmp的组件[4]。总之缺少了net-snmp,mongodb是无法工作的。

3,依然无法正常启动,可能是data、logs目录出现了问题

到此时,再次启动Mongodb,依然无法正常启动。奇怪的是,mongod脚本启动server没有提示信息就直接结束了。当使用mongod关闭server时,提示似乎没有server在运行。

mongod关闭server

复制代码
mongod --shutdown -f /etc/mongodb.conf

这就有点奇怪了。我找到这篇文章[5],杀死进程,还是会有新的27017端口进程出现,按照文章[5]所述,应该是守护进程不断重启导致的,在/etc/mongodb.conf中,将fork设置为false,这样就能够正常杀死进程了。但是发现还是无法正常启动。

此时根据文章[5]给我的启示,可能是data logs出现了问题。查看了下/etc/profile和/etc/mongodb.conf中data logs路径的配置都没有问题。而data目录下存在了很多文件,我此时还没有正常启动,哪来的data文件呢,因此我猜测可能是data目录出现了问题,因此删除了data和logs目录(logs里的Log是追加的,出问题的可能不大,但是保险起见,一起删除了)。

删除后,重新mkdir和touch来创建data和logs,再次启动,启动成功。

复制代码
[root@localhost bin]# mongo --host 127.0.0.1 --port 27017
MongoDB shell version v5.0.24
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("1be50feb-f2bb-4986-8153-ecf03190cd1d") }
MongoDB server version: 5.0.24
================
Warning: the "mongo" shell has been superseded by "mongosh",
which delivers improved usability and compatibility.The "mongo" shell has been deprecated and will be removed in
an upcoming release.
For installation instructions, see
https://docs.mongodb.com/mongodb-shell/install/
================
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
	https://docs.mongodb.com/
Questions? Try the MongoDB Developer Community Forums
	https://community.mongodb.com
---
The server generated these startup warnings when booting: 
        2024-01-24T01:40:16.103-08:00: Access control is not enabled for the database. Read and write access to data and configuration is unrestricted
        2024-01-24T01:40:16.103-08:00: You are running this process as the root user, which is not recommended
        2024-01-24T01:40:16.104-08:00: /sys/kernel/mm/transparent_hugepage/enabled is 'always'. We suggest setting it to 'never'
        2024-01-24T01:40:16.104-08:00: /sys/kernel/mm/transparent_hugepage/defrag is 'always'. We suggest setting it to 'never'
        2024-01-24T01:40:16.104-08:00: Soft rlimits for open file descriptors too low
        2024-01-24T01:40:16.104-08:00:         currentValue: 1024
        2024-01-24T01:40:16.104-08:00:         recommendedMinimum: 64000
---
MongoDB Enterprise > 

但是此时不要忘记,最好把守护进程打开,使用mongod shutdown将server关闭后,将配置文件里/etc/mongodb.conf里的fork改为true。

这时再次关闭server,依然会报错,客户端依然能够连上server,可能是因为fork为true无法关闭。

参考文章:

1\],[Linux下MongoDB的安装与配置](https://blog.csdn.net/u010541670/article/details/107228775#) \[2\],[centos7 安装mongo ./mongod: error while loading shared libraries: libnetsnmpmibs.so.31:](https://blog.csdn.net/qq_32447321/article/details/80072731) \[3\],[什么是SNMP?](https://info.support.huawei.com/info-finder/encyclopedia/zh/SNMP.html) \[4\],[Snmp学习总结(六)------NET-SNMP 简介与使用](https://blog.csdn.net/LANGGUANGCHENG/article/details/88948727) \[5\],[mongodb启动异常:about to fork child process, waiting until server is ready for connection](https://blog.csdn.net/weixin_43842451/article/details/106584027)

相关推荐
-SGlow-6 小时前
MySQL相关概念和易错知识点(2)(表结构的操作、数据类型、约束)
linux·运维·服务器·数据库·mysql
明月5667 小时前
Oracle 误删数据恢复
数据库·oracle
♡喜欢做梦8 小时前
【MySQL】深入浅出事务:保证数据一致性的核心武器
数据库·mysql
遇见你的雩风8 小时前
MySQL的认识与基本操作
数据库·mysql
dblens 数据库管理和开发工具8 小时前
MySQL新增字段DDL:锁表全解析、避坑指南与实战案例
数据库·mysql·dblens·dblens mysql·数据库连接管理
weixin_419658318 小时前
MySQL的基础操作
数据库·mysql
不辉放弃9 小时前
ZooKeeper 是什么?
数据库·大数据开发
Goona_10 小时前
拒绝SQL恐惧:用Python+pyqt打造任意Excel数据库查询系统
数据库·python·sql·excel·pyqt
程序员编程指南10 小时前
Qt 数据库连接池实现与管理
c语言·数据库·c++·qt·oracle
幼儿园老大*12 小时前
数据中心-时序数据库InfluxDB
数据库·时序数据库