从手动备份(不使用mongodump)恢复mongoDB数据库:奇怪的权限问题

是否有可能恢复手动从/var/lib/mongodb复制到例如。 /home/foo/mongobackup

我不知道是否在停止mongod服务后进行备份。 无论哪种方式,备份时都没有文件写入数据库。 不幸的是,没有使用mongodump 。 我试图简单地将/etc/mongodb.conf dbpath改为/var/lib/mongodb_backup 。 尝试重新加载备份的数据库我遇到错误。 现在的问题似乎不是数据完整性问题 ,而是许可证问题,我无法弄清楚。

我得到错误,mongod无法启动(请参阅下面的日志)。 但是,两个目录,以前的工作,但空的,和备份具有相同的权限和所有者,并放在相同的目录( /var/lib/ (Fedora 20))。

尝试systemctrl start mongod.service时,我得到以下输出:

 Thu Feb 5 12:37:11.879 [initandlisten] MongoDB starting : pid=27936 port=27017 dbpath=/var/lib/mongodb_backup 64-bit host=openbeaconserver Thu Feb 5 12:37:11.879 [initandlisten] db version v2.4.6 Thu Feb 5 12:37:11.879 [initandlisten] git version: nogitversion Thu Feb 5 12:37:11.879 [initandlisten] build info: Linux buildvm-12.phx2.fedoraproject.org 3.10.9-200.fc19.x86_64 #1 SMP Wed Aug 21 19:27:58 UTC 2013 x86_64 BOOST_LIB_VERSION=1_54 Thu Feb 5 12:37:11.879 [initandlisten] allocator: tcmalloc Thu Feb 5 12:37:11.879 [initandlisten] options: { command: [ "run" ], config: "/etc/mongodb.conf", dbpath: "/var/lib/mongodb_backup", fork: "true", journal: "true", logpath: "/var/log/mongodb/mongodb.log", pidfilepath: "/var/run/mongodb/mongodb.pid", port: 27017, quiet: true } Thu Feb 5 12:37:11.879 [initandlisten] exception in initAndListen std::exception: boost::filesystem::status: Permission denied: "/var/lib/mongodb_backup", terminating Thu Feb 5 12:37:11.879 dbexit: 

我检查了权限,他们是相同的:

工作/空mongodbpath:

 ls -la mongodb insgesamt 81936 drwxr-xr-x. 3 mongodb root 4096 19. Sep 2013 . drwxr-xr-x. 54 root root 4096 5. Feb 12:03 .. drwxr-xr-x. 2 mongodb mongodb 4096 5. Feb 11:53 journal -rw-------. 1 mongodb mongodb 67108864 4. Feb 16:21 local.0 -rw-------. 1 mongodb mongodb 16777216 4. Feb 16:21 local.ns -rwxr-xr-x. 1 mongodb mongodb 0 5. Feb 11:53 mongod.lock 

备份:

 ls -la mongodb_backup/ insgesamt 39778456 drwxr-xr-x. 2 mongodb root 4096 28. Jul 2014 . drwxr-xr-x. 54 root root 4096 5. Feb 12:03 .. -rw-------. 1 mongodb mongodb 67108864 15. Apr 2014 openbeacon.0 -rw-------. 1 mongodb mongodb 134217728 1. Nov 2013 openbeacon.1 -rw-------. 1 mongodb mongodb 2146435072 4. Apr 2014 openbeacon.10 -rw-------. 1 mongodb mongodb 2146435072 10. Jul 2014 openbeacon.11 -rw-------. 1 mongodb mongodb 2146435072 10. Jul 2014 openbeacon.12 -rw-------. 1 mongodb mongodb 2146435072 5. Mai 2014 openbeacon.13 -rw-------. 1 mongodb mongodb 2146435072 8. Jul 2014 openbeacon.14 -rw-------. 1 mongodb mongodb 2146435072 10. Jul 2014 openbeacon.15 -rw-------. 1 mongodb mongodb 2146435072 10. Jul 2014 openbeacon.16 -rw-------. 1 mongodb mongodb 2146435072 10. Jul 2014 openbeacon.17 -rw-------. 1 mongodb mongodb 2146435072 10. Jul 2014 openbeacon.18 -rw-------. 1 mongodb mongodb 2146435072 15. Apr 2014 openbeacon.19 -rw-------. 1 mongodb mongodb 268435456 10. Jul 2014 openbeacon.2 -rw-------. 1 mongodb mongodb 2146435072 10. Jul 2014 openbeacon.20 -rw-------. 1 mongodb mongodb 2146435072 10. Jul 2014 openbeacon.21 -rw-------. 1 mongodb mongodb 2146435072 8. Jul 2014 openbeacon.22 -rw-------. 1 mongodb mongodb 536870912 10. Jul 2014 openbeacon.3 -rw-------. 1 mongodb mongodb 1073741824 10. Jul 2014 openbeacon.4 -rw-------. 1 mongodb mongodb 2146435072 10. Jul 2014 openbeacon.5 -rw-------. 1 mongodb mongodb 2146435072 8. Jul 2014 openbeacon.6 -rw-------. 1 mongodb mongodb 2146435072 9. Jul 2014 openbeacon.7 -rw-------. 1 mongodb mongodb 2146435072 10. Jul 2014 openbeacon.8 -rw-------. 1 mongodb mongodb 2146435072 10. Jul 2014 openbeacon.9 -rw-------. 1 mongodb mongodb 16777216 10. Jul 2014 openbeacon.ns 

唯一的区别是缺less日志和mongod.lock。

还有什么可以考虑考虑文件和目录的权限? 这很奇怪,因为两个数据库目录似乎是相同的。

谢谢你的帮助!

如果启用SELinux,您可以尝试停止mongo,然后运行:

 restorecon -R /var/lib/mongodb* 

在传输文件时SELinux上下文可能被破坏。

问题不是文件而是目录

这是错误

  Permission denied: "/var/lib/mongodb_backup" 

如果你这样做

  ls -lsd /var/lib/mongodb_backup 

这将是根:所以运行以下

  chown mongodb: /var/lib/mongodb_backup