日常踩坑总结

安装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()将其建立为新副本集的第一个成员。
		 ![做主](https://img-blog.csdnimg.cn/20190612113454857.png)
		添加到副本集后,使用rs.status()和rs.conf()检查当前副本集状态和配置。
 细节七
		在总结的时候,我才发现原来是我使用的命令不对,所以一直在踩坑….
		因为我使用的命令是--replSet 选项来启动mongoDB的.所以一直把单机版的mongodb启动成了副本集..阿西吧..
		我把这个都注释掉.
		 ![终于弄好了](https://img-blog.csdnimg.cn/20190612113508982.png)
		然后重新启动.命令如下:
		在/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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值