安装mongodb3.6单机版
因为项目springboot2.0使用到了mongodb,发现官方推荐使用3.6以上,就想的搭建一个3.6的版本,废话不多说,安装3.6的教程网上一大推.
我也简单写一下,主要是总结一下安装过程中遇到的各种问题,贴出来.
安装过程
在/etc/yum.repos.d文件下.创建文件mongodb-org-3.6.repo
vim /etc/yum.repos.d/mongodb-org-3.6.repo
文件内容为:
[mongodb-org-3.6] 必须要有
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/\$releasever/mongodb-org/3.6/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.6.asc
安装命令
yum install -y mongodb-org
查看安装位置及配置文件路径等
whereis mongod
在mongodb目录下,创建新的目录
Mkdir data logs
赋予权限
chown mongod.mongod /data/mongodb/data /data/mongodb/logs -R
修改配置文件内容
修改dbPath: /usr/local/projectSoftware/mongodb/data/
修改systemLog path: /usr/local/projectSoftware/mongodb/logs/mongod.log
修改bindIp为本机ipv4 ip地址
#pidFilePath: /var/run/mongodb/mongod.pid 注释掉这句,不然重启后使用systemctl start mongod.service报错
没有配置启动方式的情况下:
在/usr/bin/下 ./mongod --replSet repset -f /etc/mongod.conf(单机版千万不要使用这个参数--replSet repset*)
到此为止安装就结束了
总结踩坑
安装完mongodb以后,尤其是配置文件真的很重要.只要有一处没有配置好,就会出错,导致我耗费半天时间,网上查了不知道多少文章,最后解决了
踩坑一:
安装结束以后,使用的是https://blog.youkuaiyun.com/qq_21101281/article/details/81285149这个教程,因为后面出错,我安装卸载了好几次,发现用yum安装其实就2步,配置好yum源,安装,然后配置mongodb.conf配置文件就安装好,
不过要注意细节,如果使用默认的文件路径就不用管了,如果是自己创建的文件夹,需要赋予权限.然后使用快捷命令,失败.这是我一直未解决的问题,启动,重新启动,查看服务命令,都是报错,然后我就一直误入这个坑, 启动,重新启动,查看服务命令的配置文件是在/usr/lib/systemd/system/下有个mongodb.service配置文件,到现在这个配置文件,我没弄好
然后使用./mongod --replSet repset -f /etc/mongod.conf这种启动方式也能成功.
查看是否成功启动使用netstat -tunpl | grep 27017 or ps -ef | grep mongod即可.
踩坑二:
还是/etc/mongod.conf配置文件,
细节一:
dbPath:可以修改的db文件路径
storage:
dbPath: /usr/local/projectSoftware/mongodb/data
journal:
enabled: true
细节二:
日志路径
systemLog:
destination: file
logAppend: true
path: /usr/local/projectSoftware/mongodb/logs/mongod.log
细节三:
Fork:是否后台启动
PidFilePath:这个不知道是干嘛的,有人说注释掉,说是对systemctl start mongod.service有影响,
问题是我注释掉了,也启动不了,索性我就放开了.反正也不能用.哈哈
processManagement:
fork: true # fork and run in background
pidFilePath: /var/run/mongodb/mongod.pid # location of pidfile
timeZoneInfo: /usr/share/zoneinfo
细节四:
最关键的地方:端口号不用说,想改就改,不想改就默认
bindIp: 监听所有接口。这个是我踩坑最多的地方,
有的文章是注释掉,有的是把IP地址加上””,最后看到有这样写的,我就试了下,发现可以
还有这样的,我没试, bindIpAll: true,
net:
port: 27017
bindIp: 127.0.0.1,192.168.50.106 # Listen to local interface only, comment to
listen on all interfaces.
细节五:
关闭mongodb,千万不要kill -9 mongodb进程号 会引发很多问题,具体的问题,下回详解
怎么关闭,网上一大推,这里就说我用的一个吧
Mongo 进入数据库
use admin;
db. shutdownServer();
Exit退出即可,这就关闭了数据库.
然后在重启,用本地的可视化工具robo3t连接,发现连接成功,但是……发现不能用,哈哈哈,点开集合报错13436,服务器用show dbs, 报错13435,此时的心情…
怎么办,接着解决喽..
首先这是正常的,因为SECONDARY是不允许读写的, 在写多读少的应用中,
使用Replica Sets来实现读写分离。
通过在连接时指定或者在主库指定slaveOk,由Secondary来分担读的压力,Primary只承担写操作。 对于replica set 中的secondary 节点默认是不可读的,
虽然可以读写了,但是项目使用数据库的时候,会报错连接超时30000..
继续解决搜索 node is not in primary or recovering state这个错,
发现问题.我TM…这是装的明明是单机版,但是这个报错是集群错,大概意思是节点不处于主节点或恢复状态,就是说我这个是不能读写,是从机…我NM.
细节六
添加了这个
已将此节点配置为副本集成员:
replication:
replSetName: "rs0"
声明新副本集的第一个成员。然后,关闭数据库,重启,发现就可以了.
在启动时,新的MongoDB服务器还没有副本集配置。服务器将处于未知的副本集成员状态,
直到将此成员添加到现有副本集配置或用于rs.initiate()将其建立为新副本集的第一个成员。

添加到副本集后,使用rs.status()和rs.conf()检查当前副本集状态和配置。
细节七
在总结的时候,我才发现原来是我使用的命令不对,所以一直在踩坑….
因为我使用的命令是--replSet 选项来启动mongoDB的.所以一直把单机版的mongodb启动成了副本集..阿西吧..
我把这个都注释掉.

然后重新启动.命令如下:
在/usr/bin目录下:
./mongod -f /etc/mongod.conf
总结一下,不懂的命令参数千万不要加!!!!一定要弄清楚了在加参数
参考来源
感谢大佬么的文章,虽然很多问题都解决,但是主要还是自己粗心,加不懂…
MongoDB - mongod.conf重要配置
https://hans007.github.io/mongodb/2016/12/09/mongodb-conf-02
MongoDB报错: Failed to start mongod.service: Unit mongodb.service is masked
https://blog.youkuaiyun.com/weixin_39198406/article/details/83656943
MongoDB插入报错Error: Line 8: Unexpected token :
https://blog.youkuaiyun.com/duanyijiangzhi/article/details/83720956
centos 7 yum 安装mongodb3.6(卸载)
https://cloud.tencent.com/developer/article/1401182
mongodb 启动失败的修复
https://www.cnblogs.com/matchless/p/4324078.html
mongodb多种方式关闭服务命令
https://www.cnblogs.com/PheonixHkbxoic/p/5665499.html
MongoDb的“not master and slaveok=false”错误及解决方法
https://blog.youkuaiyun.com/chen88358323/article/details/47275001
启动报错 child process failed, exited with error number 48
https://www.cnblogs.com/joshua317/articles/5190385.html
启动异常,报错ERROR:NUMBER 100
https://blog.youkuaiyun.com/moonhmilyms/article/details/23746427
启动报错 ERROR: child process failed, exited with error number 1
http://www.voidcn.com/article/p-hvsoveyh-bhs.html