mongo是什么?
MongoDB能够使企业更加具有敏捷性和可扩展性,各种规模的企业都可以通过使用MongoDB来创建新的应用,提高与客户之间的工作效率,加快产品上市时间,以及降低企业成本。
遇到的问题
有些人不正规备份或数据迁移,将mongo的data文件夹内的内容直接复制到另外一个mongo进行数据迁移,导致很多报错。
解决方案
题主亲身经历,下面提供解决的一系列步骤(在宝塔搭建的环境中):
(下面步骤不代表就是唯一的解决方案,有更好的方案的朋友们欢迎投稿,谢谢!在此说下,任何文件的删除操作,要有备份意识,请先对文件进行备份,数据是任何项目的重要组成部分!!)
1.将复制的data文件,移到新的mongo下面
2.将data文件所有人跟权限设置跟mongo里面的目录一样
chown -R mongo data //设置所有人
chmod -R 777 data //设置权限
3.启动mongo
这里启动不了,查看日志报错如下,叫我们重新对mongo进行修复
4.解决上面的问题,进行修复
MMD,执行修复命令,又报错
sudo mongod --repair --dbpath /www/server/mongodb/data
这个里面有三个出错
(a)第一个错
意思:检测到不干净的关机-/www/server/mongodb/data/mongod.lock不为空。
解决:删除data文件里面的mongod.lock文件
rm -rf mongod.lock
(b)第二个错
意思:在/www/server/mongodb/由“wiredTiger”存储引擎创建的数据中检测到数据文件,因此将活动存储引擎设置为“wiredTiger”
解决:删除data文件里面的storage.bson文件
rm -rf storage.bson
(c)第三个错
意思:initAndListen中出现异常:InvalidOptions:请求的选项与directoryPerDB的当前存储引擎选项冲突;您请求了false,但当前服务器存储已设置为true,无法更改,正在终止
解决:在配置文件设置directoryPerDB为false
5.继续对mongo进行修复
sudo mongod --repair --dbpath /www/server/mongodb/data
修复完成,没有出错
6.重新启动mongo
俗话说,好事多磨吧,MMD又报错了,还能怎么办,继续解决!!!
意思:无法读取storage.bson文件,原来刚才删除的文件重新生成,所有者不是mongo
解决:整个data文件重新改下所有者
chown -R mongo data //在你的mongo目录下执行
7.继续启动mongo
CNM终于启动成功了