MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Copiar/clonar um banco de dados no MongoDB


Nas versões anteriores do MongoDB, você poderia usar o copyDB comando ou seu método auxiliar, db.copyDatabase() para copiar um banco de dados.

Desde então, o MongoDB os depreciou. Além disso, a partir da versão 4.2, o MongoDB removeu o copydb comando e, portanto, também o comando db.copyDatabase() método, o que significa que você não pode usá-los mesmo se quiser se estiver usando o MongoDB 4.2 ou posterior.

Felizmente, há outra maneira de copiar um banco de dados MongoDB.

Verificar ferramentas de banco de dados MongoDB


No MongoDB, você pode clonar um banco de dados usando as ferramentas de banco de dados do MongoDB. Especificamente, você pode usar mongodump e mongorestore .

As ferramentas de banco de dados do MongoDB são um conjunto de utilitários de linha de comando para trabalhar com o MongoDB.

Se você não tem certeza se tem o MongoDB Database Tools instalado, tente executar os seguintes comandos em seu Terminal ou Prompt de Comando para verificar:
mongodump --version
mongorestore --version

Isso verifica especificamente o mongodump e mongorestore versões.

Se você não os tiver, você pode usar as instruções de instalação no site do MongoDB para instalar o MongoDB Database Tools em seu sistema.

Exemplo de clonagem de um banco de dados


Você precisa executar o mongodump e mongorestore da linha de comando do seu sistema (por exemplo, um novo Terminal ou janela de prompt de comando). Não execute a partir do mongo Concha.

Aqui está um exemplo de código que clona um banco de dados:
mongodump --archive --db=PetHotel | mongorestore --archive  --nsFrom='PetHotel.*' --nsTo='PetHouse.*'

Neste caso, fazemos backup do PetHotel banco de dados e, em seguida, restaure todas as suas coleções em um banco de dados chamado PetHouse . Em outras palavras, clonamos o PetHotel banco de dados como PetHouse .

Isso usa mongodump para criar um arquivo de backup do banco de dados, então mongorestore para restaurar esse banco de dados com um nome diferente. Fizemos isso despejando o banco de dados no fluxo de saída padrão e canalizando para mongorestore .

Veja o que cada parâmetro faz:
Parâmetro Descrição
--archive Grava a saída em um arquivo especificado ou, se o arquivo não for especificado, grava na saída padrão (stdout ). No nosso caso, o arquivo não foi especificado, então ele gravou na saída padrão.
--db Especifica um banco de dados para backup. Neste caso, fazemos backup do PetHotel banco de dados.
--nsFrom Especifica a coleção no arquivo de despejo. O curinga asterisco (* ) especifica todas as coleções.
--nsTo Especifica o nome da coleção que deve ser usado no banco de dados restaurado.

Você também pode usar mongodump para despejar todos os bancos de dados. Para fazer isso, basta executar mongodump sem nenhum argumento. No entanto, quando você faz isso, não inclui o local e config bancos de dados em seu dump.