ubuntu版本16.04
mongodb版本2.6.10
配置文件地址/etc/mongodb.conf
使用apt 安装MongoDB后,使用sudo mongod 可以打开MongoDB,并正常使用,而使用service mongodb start 启动mongodb服务时,却启动不了, 而且,使用第二种方法不会报错,即使使用/etc/init.d/mongodb start 也能正常启动,不会报错,这是就只能去查看mongodb 的log日志了,日志中显示:
2018-07-19T17:12:23.495+0800 [initandlisten] MongoDB starting : pid=3276 port=27017 dbpath=/var/lib/mongodb 64-bit host=ubuntu
2018-07-19T17:12:23.495+0800 [initandlisten] db version v2.6.10
2018-07-19T17:12:23.495+0800 [initandlisten] git version: nogitversion
2018-07-19T17:12:23.495+0800 [initandlisten] OpenSSL version: OpenSSL 1.0.2g 1 Mar 2016
2018-07-19T17:12:23.495+0800 [initandlisten] build info: Linux lgw01-12 3.19.0-25-generic #26~14.04.1-Ubuntu SMP Fri Jul 24 21:16:20 UTC 2015 x86_64 BOOST_LIB_VERSION=1_58
2018-07-19T17:12:23.495+0800 [initandlisten] allocator: tcmalloc
2018-07-19T17:12:23.495+0800 [initandlisten] options: { config: "/etc/mongodb.conf", net: { bindIp: "127.0.0.1" }, storage: { dbPath: "/var/lib/mongodb", journal: { enabled: true } }, systemLog: { destination: "file", logAppend: true, path: "/var/log/mongodb/mongodb.log" } }
2018-07-19T17:12:23.495+0800 [initandlisten] exception in initAndListen: 28574 Cannot start server. Detected data files in /var/lib/mongodb created by storage engine 'wiredTiger'. The configured storage engine is 'mmapv1'., terminating
2018-07-19T17:12:23.495+0800 [initandlisten] dbexit:
2018-07-19T17:12:23.495+0800 [initandlisten] shutdown: going to close listening sockets...
2018-07-19T17:12:23.495+0800 [initandlisten] shutdown: going to flush diaglog...
2018-07-19T17:12:23.495+0800 [initandlisten] shutdown: going to close sockets...
2018-07-19T17:12:23.496+0800 [initandlisten] shutdown: waiting for fs preallocator...
2018-07-19T17:12:23.496+0800 [initandlisten] shutdown: lock for final commit...
2018-07-19T17:12:23.496+0800 [initandlisten] shutdown: final commit...
2018-07-19T17:12:23.496+0800 [initandlisten] shutdown: closing all files...
2018-07-19T17:12:23.496+0800 [initandlisten] closeAllFiles() finished
2018-07-19T17:12:23.496+0800 [initandlisten] dbexit: really exiting now
显示当前数据库的存储引擎与配置的数据库存储引擎不一致,导致无法打开,
应为我已经创建了新的数据库保存文件: /data/db
所以将配置文件中的dbpath修改问data/db
但此时还是不能开启,在log文件中的异常信息为:
2018-07-19T18:31:51.543+0800 ***** SERVER RESTARTED *****
2018-07-19T18:31:51.546+0800 [initandlisten] MongoDB starting : pid=6405 port=27017 dbpath=/data/db1 64-bit host=ubuntu
2018-07-19T18:31:51.546+0800 [initandlisten] db version v2.6.10
2018-07-19T18:31:51.546+0800 [initandlisten] git version: nogitversion
2018-07-19T18:31:51.546+0800 [initandlisten] OpenSSL version: OpenSSL 1.0.2g 1 Mar 2016
2018-07-19T18:31:51.546+0800 [initandlisten] build info: Linux lgw01-12 3.19.0-25-generic #26~14.04.1-Ubuntu SMP Fri Jul 24 21:16:20 UTC 2015 x86_64 BOOST_LIB_VERSION=1_58
2018-07-19T18:31:51.546+0800 [initandlisten] allocator: tcmalloc
2018-07-19T18:31:51.546+0800 [initandlisten] options: { config: "/etc/mongodb.conf", net: { bindIp: "127.0.0.1" }, storage: { dbPath: "/data/db1", journal: { enabled: true } }, systemLog: { destination: "file", logAppend: true, path: "/var/log/mongodb/mongodb.log" } }
2018-07-19T18:31:51.546+0800 [initandlisten] exception in initAndListen: 10309 Unable to create/open lock file: /data/db/mongod.lock errno:13 Permission denied Is a mongod instance already running?, terminating
2018-07-19T18:31:51.546+0800 [initandlisten] dbexit:
2018-07-19T18:31:51.546+0800 [initandlisten] shutdown: going to close listening sockets...
2018-07-19T18:31:51.546+0800 [initandlisten] shutdown: going to flush diaglog...
2018-07-19T18:31:51.546+0800 [initandlisten] shutdown: going to close sockets...
2018-07-19T18:31:51.546+0800 [initandlisten] shutdown: waiting for fs preallocator...
2018-07-19T18:31:51.546+0800 [initandlisten] shutdown: lock for final commit...
2018-07-19T18:31:51.546+0800 [initandlisten] shutdown: final commit...
2018-07-19T18:31:51.546+0800 [initandlisten] shutdown: closing all files...
2018-07-19T18:31:51.546+0800 [initandlisten] closeAllFiles() finished
2018-07-19T18:31:51.546+0800 [initandlisten] shutdown: removing fs lock...
2018-07-19T18:31:51.546+0800 [initandlisten] couldn't remove fs lock errno:9 Bad file descriptor
2018-07-19T18:31:51.546+0800 [initandlisten] dbexit: really exiting now
这句话指出在db文件夹下存在 mongod.lock 文件(应该时mongodb在运行时的隔离文件,防止数据库被其他程序错误的更改),但其实文件夹里是没有的,因为为了调这个bug我已经把源文件删除之后用重新创建了新的db文件
这个bug的调法应该参照原来的未修改的dbpath 参考他的文件夹配置,
就是使用chown 和chgrp 修改db文件夹的组和所属用户
我的做法是:
chmod 777 db
chown mongodb db
chgrp mongodb db
然后就重启mongodb吧现在可以使用service命令启动他了
参考连接(基本就是按照这两个连接做的)
https://stackoverflow.com/questions/15229412/unable-to-create-open-lock-file-data-mongod-lock-errno13-permission-denied
https://www.jb51.net/article/109091.htm