Até o momento, eu não especificava um diretório de dados do MongoDB e tinha apenas uma partição primária de 30 GB.
Acabei o espaço e adicionei um novo disco rígido. Como posso transferir meus dados (aparentemente /var/lib/mongodb/
) e configurar o MongoDB para que tudo saia do novo disco sem afetar minha instalação existente?
mongodb
filepath
data-files
Mark Gill
fonte
fonte
sudo chmod o+rx /media
por exemplo, se o seu ponto de montagem formedia
. O r + x precisa estar disponível para os 'outros' grupos e usuários desde o primeiro ponto de montagem.Respostas:
A resposta curta é que o
--dbpath
parâmetro no MongoDB permitirá que você controle de qual diretório o MongoDB lê e grava seus dados.Inicia o mongodb e coloca os arquivos
/usr/local/mongodb-data
.Dependendo da sua distribuição e instalação do MongoDB, você também pode configurar o
mongod.conf
arquivo para fazer isso automaticamente:Os pacotes oficiais do 10gen Linux ( Ubuntu / Debian ou CentOS / Fedora ) são fornecidos com um arquivo de configuração básico
/etc/mongodb.conf
, e o serviço MongoDB lê isso quando é iniciado. Você pode fazer sua alteração aqui.fonte
/etc/mongodb.conf
por esta solução. Então, depois de começarmongod
, vi que/data/db
era usado. Por que a atualização do mongodb.conf não afetou onde o mongod armazenou o banco de dados? (Observe que o uso do--dbpath
argumento funcionou./etc/mongodb.conf
e a atualização funciona bem para mim.chown
no usuário mongod para os scripts de início do serviço.Resolvido em 2 minutos de inatividade :)
Basta mover sua pasta, adicionar link simbólico e ajustar as permissões.
fonte
chmod -R o+x /<home>
. Veja: stackoverflow.com/a/38193187/205049Permission denied: "/var/lib/mongodb"
É assim que /home/../mongodb/mongodb/ se parece com:drwxrwxr-x 3 mongodb mongodb 4096 oct 13 09:32 ../ drwxr-xr-x 2 mongodb nogroup 4096 oct 13 09:29 journal/ -rw------x 1 mongodb nogroup 67108864 sep 23 14:44 local.0* -rw------x 1 mongodb nogroup 16777216 sep 23 14:44 local.ns* -rwxr-xr-x 1 mongodb mongodb 0 oct 13 09:29 mongod.lock*
mv
comando, se você executar o comando mv de dentro lib, você já não tem mongodb paraln
aO comando a seguir funcionará para você, se você desejar alterar o caminho padrão. Basta digitar isso no diretório bin do mongodb.
Caso você queira mover os dados existentes também, copie todas as pastas do diretório data \ db existente para o novo diretório antes de executar o comando.
E também interrompa os serviços mongodb existentes em execução.
fonte
Crie um arquivo chamado mongod.cfg na pasta MongoDB, se você não o tiver. No meu caso: C: \ Users \ ivanbtrujillo \ MongoDB
Em seguida, edite mongod.cfg com o bloco de notas e adicione uma linha com o seguinte (nosso dbpath personalizado):
Nesse arquivo, você também deve especificar o caminho de log. Meu arquivo mongod.cfg é:
Se você usar o mongoDB como um serviço do Windows, precisará alterar essa chave e especificar o arquivo mongod.cfg.
Para instalar o mongodb como um serviço do Windows, execute este comando:
Abra o regedit.exe e vá para a seguinte rota:
O serviço MongoDB não funciona, precisamos editar a chave ImagePath, excluir seu conteúdo e colocar o seguinte:
Indicamos ao mongo seu arquivo de configuração e seu caminho de log.
Então, quando você inicia o serviço mongodb, ele funciona.
Aqui está um tutorial completo para instalar o mongoDB no Windows: http://ivanbtrujillo.herokuapp.com/2014/07/24/installing-mongodb-as-a-service-windows/
Espero que ajude,
fonte
Copie o conteúdo de
/var/lib/mongodb
para/data/db
. Os arquivos que você deve procurar devem ter nomes comoyour_db_name.ns
eyour_dbname.n
onden
é um número começando com 0. Se você não vir esses arquivos abaixo/var/lib/mongodb
, procure-os no seu sistema de arquivos.Uma vez copiado, use
--dbpath=/data/db
ao iniciar o MongoDB através domongod
comandofonte
Aqui está o que eu fiz, espero que seja útil para mais alguém:
Passos:
/etc/rc.d/rc.mongod stop
, se você usar outra coisa, como systemd, verifique sua documentação como fazer issomkdir /mnt/database
chown mongodb:mongodb -R /mnt/database/mongodb
) - obrigado @DanailGabenski.cp -R /var/lib/mongodb/ /mnt/database/
rm -rf /var/lib/mongodb/
ln -s /mnt/database/mongodb /var/lib/mongodb
/etc/rc.d/rc.mongod start
mongo
conectar-se ao seu banco de dados para ver se está tudo bem)Não há necessidade de dizer que você deve ter cuidado ao fazer isso, especialmente com
rm -rf
mas acho que essa é a melhor maneira de fazer isso.Você nunca deve tentar copiar o diretório do banco de dados enquanto o mongod estiver em execução, porque pode haver serviços que escrevem / leem dele, o que alterará o conteúdo do seu banco de dados.
fonte
chown mongodb:mongodb -R /mnt/database/mongodb
Se instalado via
apt-get
Ubuntu 12.04, não esqueçachown -R mongodb:nogroup /path/to/new/directory
. Além disso, altere a configuração em/etc/mongodb.conf
.Como lembrete, o
mongodb-10gen
pacote agora é iniciado via upstart, portanto, o script de configuração está em/etc/init/mongodb.conf
Acabei de passar por isso, espero que os googlers achem útil :)
fonte
Para mim, o usuário estava em
mongod
vez demongodb
sudo chown mongod:mongod /newlocation
Você pode ver os logs de erros se o serviço falhar:
/var/log/mongodb/mongod.log
fonte
No debian / ubuntu, você precisará editar o script /etc/init.d/mongodb. Realmente, esse arquivo deve extrair as configurações do /etc/mongodb.conf, mas não parece extrair o diretório padrão (provavelmente um bug)
Isso é um pouco complicado, mas adicioná-los ao script o fez iniciar corretamente:
adicionar:
mudança:
para:
fonte