Можно ли восстановить базы данных, скопированные вручную из /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