Permissions
從手動備份恢復 mongoDB 數據庫(未使用 mongodump):奇怪的權限問題
是否可以恢復手動複製的數據庫,
/var/lib/mongodb
例如。/home/foo/mongobackup
?我不確定是否在停止 mongod 服務後進行了備份。無論哪種方式,在進行備份時都沒有將文件寫入數據庫。可惜
mongodump
沒有使用。我試圖簡單地更改dbpath
為. 嘗試重新載入備份的數據庫時遇到錯誤。現在的問題似乎不是數據完整性問題,而是權限問題,我無法弄清楚。/etc/mongodb.conf``/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:
我檢查了權限,它們是相同的:
工作/空的mongodb路徑:
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
唯一的區別是缺少期刊和
mongod.lock
.關於文件和目錄權限,還有其他需要考慮的嗎?這很奇怪,因為兩個數據庫目錄似乎是相同的。
如果 SELinux 已啟用,您可以嘗試停止 mongo 然後執行:
restorecon -R /var/lib/mongodb*
也許 SELinux 上下文在傳輸文件時被破壞了。
問題不是文件而是目錄
這是錯誤
Permission denied: "/var/lib/mongodb_backup"
如果你這樣做
ls -lsd /var/lib/mongodb_backup
那將是 root:root 所以執行以下
chown mongodb: /var/lib/mongodb_backup