restaurar bancos de dados mongoDB de backup manual (não usado mongodump): problemas de permissão estranhos

1

É possível restaurar bancos de dados que foram copiados manualmente de /var/lib/mongodb para, por exemplo. /home/foo/mongobackup ?

Não tenho certeza se o backup foi feito após a interrupção do serviço mongod. De qualquer maneira, nenhum arquivo foi gravado no banco de dados ao fazer o backup. Infelizmente mongodump não foi usado. Tentei simplesmente alterar dbpath em /etc/mongodb.conf para /var/lib/mongodb_backup . Tentando recarregar o banco de dados backupped eu encontro erros. O problema por enquanto parece não ser uma integridade de dados , mas uma permissão , eu não consigo descobrir.

Eu recebo erros e o mongod não inicia (veja o log abaixo). No entanto, ambos os diretórios, o anterior, mas vazio, e o backup têm as mesmas permissões e proprietários e são colocados no mesmo diretório ( /var/lib/ (Fedora 20)).

Eu recebo a seguinte saída ao tentar 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: 

Eu verifiquei as permissões, elas são idênticas:

caminho mongodb vazio / de trabalho:

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

backup:

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

A única diferença é o diário ausente e mongod.lock .

Existe mais alguma coisa a considerar sobre permissões de arquivos e diretórios? É estranho, porque os dois diretórios do banco de dados parecem idênticos.

    
por nylki 05.02.2015 / 13:26

2 respostas

2

Se o SELinux estiver ativado, você pode tentar parar o mongo e depois rodar:

restorecon -R /var/lib/mongodb*

Talvez os contextos do SELinux tenham sido quebrados durante a transferência de arquivos.

    
por 05.02.2015 / 14:04
0

O problema não são os arquivos, mas o diretório

Aqui está o erro

 Permission denied: "/var/lib/mongodb_backup"

Se você fizer isso

 ls -lsd /var/lib/mongodb_backup

Isso será root: root, então execute o seguinte

 chown mongodb: /var/lib/mongodb_backup
    
por 05.02.2015 / 13:50