Tutorial: Migrar o MongoDB para a API do Azure Cosmos DB para MongoDB offline usando ferramentas nativas do MongoDB

APLICA-SE A: MongoDB

Importante

Leia este guia completo antes de executar as etapas de migração.

Este guia de migração do MongoDB faz parte da série sobre migração do MongoDB. As etapas críticas de migração do MongoDB são pré-migração, migração e pós-migração, conforme mostrado abaixo.

Diagrama de etapas de migração.

Visão geral da migração de dados usando ferramentas nativas do MongoDB

Você pode usar as ferramentas nativas do MongoDB para executar uma migração offline (única) de bancos de dados de uma instância local ou na nuvem do MongoDB para a API do Azure Cosmos DB para MongoDB.

Neste tutorial, irá aprender a:

  • Escolha a ferramenta nativa do MongoDB apropriada para o seu caso de uso
  • Executar a migração.
  • Monitorizar a migração.
  • Verifique se a migração foi bem-sucedida.

Neste tutorial, você migra um conjunto de dados no MongoDB hospedado em uma Máquina Virtual do Azure para a API do Azure Cosmos DB para MongoDB usando ferramentas nativas do MongoDB. As ferramentas nativas do MongoDB são um conjunto de binários que facilitam a manipulação de dados em uma instância existente do MongoDB. Como o Azure Cosmos DB expõe uma API para o MongoDB, as ferramentas nativas do MongoDB podem inserir dados no Azure Cosmos DB. O foco deste documento é migrar dados de uma instância do MongoDB usando mongoexport/mongoimport ou mongodump/mongorestore. Como as ferramentas nativas se conectam ao MongoDB usando cadeias de conexão, você pode executar as ferramentas em qualquer lugar, no entanto, recomendamos executar essas ferramentas na mesma rede que a instância do MongoDB para evitar problemas de firewall.

As ferramentas nativas do MongoDB podem mover dados apenas tão rápido quanto o hardware do host permitir; As ferramentas nativas podem ser a solução mais simples para pequenos conjuntos de dados onde o tempo total de migração não é uma preocupação. O conector MongoDB Spark, o Serviço de Migração de Dados do Azure (DMS) ou o Azure Data Factory (ADF) podem ser alternativas melhores se você precisar de um pipeline de migração escalável.

Se você ainda não tiver uma fonte do MongoDB configurada, consulte o artigo Instalar e configurar o MongoDB em uma VM do Windows no Azure.

Pré-requisitos

Para concluir este tutorial, precisa de:

  • Conclua as etapas de pré-migração , como estimar a taxa de transferência, escolher uma chave de partição e a política de indexação.
  • Crie uma conta do Azure Cosmos DB para MongoDB.
  • Faça login na sua instância do MongoDB
    • Baixe e instale as ferramentas nativas do MongoDB neste link.
      • Certifique-se de que a versão das ferramentas nativas do MongoDB corresponda à sua instância existente do MongoDB.
      • Se sua instância do MongoDB tiver uma versão diferente do Azure Cosmos DB para MongoDB, instale ambas as versões da ferramenta nativa do MongoDB e use a versão apropriada da ferramenta para MongoDB e Azure Cosmos DB para MongoDB, respectivamente.
    • Adicione um usuário com readWrite permissões, a menos que já existam. Mais adiante neste tutorial, forneça este nome de usuário/senha para as ferramentas mongoexport e mongodump .

Configurar as tentativas do lado do servidor do Azure Cosmos DB

Os clientes que migram do MongoDB para o Azure Cosmos DB se beneficiam dos recursos de governança de recursos, que garantem a capacidade de utilizar totalmente seu RU/s provisionado de taxa de transferência. O Azure Cosmos DB pode limitar uma determinada solicitação durante a migração se essa solicitação exceder o RU/s provisionado pelo contêiner; nesse caso, esse pedido tem de ser repetido. O tempo de ida e volta envolvido no salto de rede entre a ferramenta de migração e o Azure Cosmos DB afeta o tempo de resposta geral dessa solicitação; além disso, as ferramentas nativas do MongoDB podem não lidar com tentativas. O recurso de repetição do lado do servidor do Azure Cosmos DB permite que o serviço intercete códigos de erro de aceleração e tente novamente com um tempo de ida e volta muito menor, melhorando drasticamente os tempos de resposta da solicitação. Do ponto de vista das ferramentas nativas do MongoDB, a necessidade de lidar com novas tentativas é minimizada, o que impactará positivamente sua experiência durante a migração.

Você pode encontrar o recurso de Repetição do Lado do Servidor na folha Recursos do portal do Azure Cosmos DB

Screenshot da funcionalidade SSR do MongoDB.

E se estiver desativado, recomendamos que o ative como mostrado abaixo

Screenshot do MongoDB SSR ativar.

Escolha a ferramenta nativa adequada do MongoDB

Diagrama de seleção da melhor ferramenta nativa do MongoDB.

  • mongoexport/mongoimport é o melhor par de ferramentas de migração para migrar um subconjunto do seu banco de dados MongoDB.
    • mongoexport exporta seus dados existentes para um arquivo JSON ou CSV legível por humanos. Mongoexport usa um argumento especificando o subconjunto de seus dados existentes para exportar.
    • mongoimport abre um arquivo JSON ou CSV e insere o conteúdo na instância do banco de dados de destino (Azure Cosmos DB neste caso.).
    • Observe que JSON e CSV não são formatos compactos; você pode incorrer em cobranças de rede excessivas à medida que mongoimport envia dados para o Azure Cosmos DB.
  • mongodump/mongorestore é o melhor par de ferramentas de migração para migrar todo o seu banco de dados MongoDB. O formato BSON compacto fará um uso mais eficiente dos recursos de rede à medida que os dados são inseridos no Azure Cosmos DB.
    • mongodump exporta seus dados existentes como um arquivo BSON.
    • mongorestore importa seu despejo de arquivo BSON para o Azure Cosmos DB.
  • Como um lado - se você simplesmente tiver um pequeno arquivo JSON que deseja importar para o Azure Cosmos DB para MongoDB, a ferramenta mongoimport é uma solução rápida para ingerir os dados.

Coletar as credenciais do Azure Cosmos DB para MongoDB

O Azure Cosmos DB para MongoDB fornece credenciais de acesso compatíveis que as ferramentas nativas do MongoDB podem utilizar. Você precisará ter essas credenciais de acesso disponíveis para migrar dados para o Azure Cosmos DB para MongoDB. Para encontrar estas credenciais:

  1. Abra o portal do Azure

  2. Navegue até sua conta do Azure Cosmos DB para MongoDB

  3. No painel de navegação esquerdo, selecione a folha Cadeia de conexão e você verá uma exibição semelhante à abaixo:

    Captura de ecrã das credenciais do Azure Cosmos DB.

    • HOST - o ponto de extremidade do Azure Cosmos DB funciona como um nome de host MongoDB
    • PORT - quando as ferramentas nativas do MongoDB se conectam ao Azure Cosmos DB, você deve especificar essa porta explicitamente
    • USERNAME - o prefixo do nome de domínio do ponto de extremidade do Azure Cosmos DB funciona como o nome de usuário do MongoDB
    • PASSWORD - a chave mestra do Azure Cosmos DB funciona como a senha do MongoDB
    • Além disso, observe o campo SSL que é true - a ferramenta nativa do MongoDB deve habilitar o SSL ao gravar dados no Azure Cosmos DB

Executar a migração

  1. Escolha qual(is) banco(s) de dados(s) e coleção(ões) você gostaria de migrar. Neste exemplo, estamos migrando a coleção de consultas no banco de dados edx do MongoDB para o Azure Cosmos DB.

O resto desta seção irá guiá-lo através do uso do par de ferramentas que você selecionou na seção anterior.

Mongoexport/MongoImport

  1. Para exportar os dados da instância do MongoDB de origem, abra um terminal na máquina de instância do MongoDB. Se for uma máquina Linux, digite

    mongoexport --host HOST:PORT --authenticationDatabase admin -u USERNAME -p PASSWORD --db edx --collection query --out edx.json
    

    No Windows, o executável será mongoexport.exe. HOST, PORT, USERNAME e PASSWORD devem ser preenchidos com base nas propriedades da instância de banco de dados MongoDB existente.

    Você também pode optar por exportar apenas um subconjunto do conjunto de dados MongoDB. Uma maneira de fazer isso é adicionando um argumento de filtro adicional:

    mongoexport --host HOST:PORT --authenticationDatabase admin -u USERNAME -p PASSWORD --db edx --collection query --out edx.json --query '{"field1":"value1"}'
    

    Apenas os documentos que correspondam ao filtro {"field1":"value1"} serão exportados.

    Depois de executar a chamada, você verá que um edx.json arquivo é produzido:

    Screenshot da chamada mongoexport.

  2. Você pode usar o mesmo terminal para importar edx.json para o Azure Cosmos DB. Se você estiver executando mongoimport em uma máquina Linux, digite

    mongoimport --host HOST:PORT -u USERNAME -p PASSWORD --db edx --collection importedQuery --ssl --type json --writeConcern="{w:0}" --file edx.json
    

    No Windows, o executável será mongoimport.exe. HOST, PORT, USERNAME e PASSWORD devem ser preenchidos com base nas credenciais do Azure Cosmos DB coletadas anteriormente.

  3. Monitore a saída do terminal do mongoimport. Você deve ver que ele imprime linhas de texto no terminal contendo atualizações sobre o status da migração:

    Screenshot da chamada mongoimport.

  4. Por fim, examine o Azure Cosmos DB para validar se a migração foi bem-sucedida. Abra o portal do Azure Cosmos DB e navegue até o Data Explorer. Você deve ver (1) que um banco de dados edx com uma coleção importedQuery foi criado e (2) se você exportou apenas um subconjunto de dados, importedQuery deve conter apenas documentos correspondentes ao subconjunto desejado dos dados. No exemplo abaixo, apenas um documento correspondeu ao filtro {"field1":"value1"}:

    Captura de ecrã da verificação de dados do Azure Cosmos DB.

Mongodump/MongoRestore

  1. Para criar um despejo de dados BSON de sua instância do MongoDB, abra um terminal na máquina de instância do MongoDB. Se for uma máquina Linux, digite

    mongodump --host HOST:PORT --authenticationDatabase admin -u USERNAME -p PASSWORD --db edx --collection query --ssl --out edx-dump
    

    HOST, PORT, USERNAME e PASSWORD devem ser preenchidos com base nas propriedades da instância de banco de dados MongoDB existente. Você deve ver que um edx-dump diretório é produzido e que a estrutura de diretórios reproduz a hierarquia de recursos (banco de dados e estrutura de edx-dump coleção) de sua instância MongoDB de origem. Cada coleção é representada por um arquivo BSON:

    Screenshot da chamada mongodump.

  2. Você pode usar o mesmo terminal para restaurar o conteúdo do edx-dump no Azure Cosmos DB. Se você estiver executando mongorestore em uma máquina Linux, digite

    mongorestore --host HOST:PORT --authenticationDatabase admin -u USERNAME -p PASSWORD --db edx --collection importedQuery --writeConcern="{w:0}" --ssl edx-dump/edx/query.bson
    

    No Windows, o executável será mongorestore.exe. HOST, PORT, USERNAME e PASSWORD devem ser preenchidos com base nas credenciais do Azure Cosmos DB coletadas anteriormente.

  3. Monitore a saída do terminal do mongorestore. Você deve ver que ele imprime linhas no terminal atualizando sobre o status da migração:

    Screenshot da chamada mongorestore.

  4. Por fim, examine o Azure Cosmos DB para validar se a migração foi bem-sucedida. Abra o portal do Azure Cosmos DB e navegue até o Data Explorer. Você deve ver (1) que um banco de dados edx com uma coleção importedQuery foi criado e (2) importedQuery deve conter todo o conjunto de dados da coleção de origem:

    Captura de ecrã a mostrar a verificação dos dados mongorestore do Azure Cosmos DB.

Otimização pós-migração

Depois de migrar os dados armazenados no banco de dados MongoDB para a API do Azure Cosmos DB para MongoDB, você pode se conectar ao Azure Cosmos DB e gerenciar os dados. Você também pode executar outras etapas de otimização pós-migração, como otimizar a política de indexação, atualizar o nível de consistência padrão ou configurar a distribuição global para sua conta do Azure Cosmos DB. Para obter mais informações, consulte o artigo Otimização pós-migração.

Recursos adicionais

Próximos passos

  • Consulte as diretrizes de migração para cenários adicionais no Guia de Migração de Banco de Dados da Microsoft.