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

APLICA-SE A: MongoDB

Importante

Leia este guia completo antes de executar os passos de migração.

Este guia de migração do MongoDB faz parte de séries sobre a migração do MongoDB. Os passos críticos de migração do MongoDB são pré-migração, migração e pós-migração, conforme mostrado abaixo.

Diagrama de passos de migração.

Descrição geral da migração de dados com ferramentas nativas do MongoDB

Pode utilizar ferramentas nativas do MongoDB para efetuar uma migração offline (única) de bases de dados a partir de uma instância no local ou na cloud do MongoDB para a API do Azure Cosmos DB para MongoDB.

Neste tutorial, ficará a saber como:

  • Escolha a ferramenta nativa do MongoDB adequada para o caso de utilização
  • Executar a migração.
  • Monitorizar a migração.
  • Verifique se a migração foi efetuada com êxito.

Neste tutorial, vai migrar um conjunto de dados no MongoDB alojado numa Máquina Virtual do Azure para a API do Azure Cosmos DB para MongoDB com ferramentas nativas do MongoDB. As ferramentas nativas do MongoDB são um conjunto de binários que facilitam a manipulação de dados numa instância do MongoDB existente. Uma vez que o Azure Cosmos DB expõe uma API para MongoDB, as ferramentas nativas do MongoDB são capazes de inserir dados no Azure Cosmos DB. O foco deste documento é migrar dados de uma instância do MongoDB com mongoexport/mongoimport ou mongodump/mongorestore. Uma vez que as ferramentas nativas se ligam ao MongoDB através de cadeias de ligação, pode executar as ferramentas em qualquer lugar. No entanto, recomendamos que execute estas ferramentas na mesma rede que a instância do MongoDB para evitar problemas de firewall.

As ferramentas nativas do MongoDB só podem mover dados tão rapidamente quanto o hardware anfitrião permite; as ferramentas nativas podem ser a solução mais simples para pequenos conjuntos de dados em que o tempo total de migração não é uma preocupação. O conector Spark do MongoDB, o Azure Data Migration Service (DMS) ou o Azure Data Factory (ADF) podem ser alternativas melhores se precisar de um pipeline de migração dimensionável.

Se ainda não tiver uma origem do MongoDB configurada, veja o artigo Instalar e configurar o MongoDB numa VM do Windows no Azure.

Pré-requisitos

Para concluir este tutorial, precisa de:

  • Conclua os passos de pré-migração , como estimar o débito, escolher uma chave de partição e a política de indexação.
  • Crie uma conta do Azure Cosmos DB para MongoDB.
  • Iniciar sessão na instância do MongoDB
    • Transfira e instale as ferramentas nativas do MongoDB a partir desta ligação.
      • Certifique-se de que a versão das ferramentas nativas do MongoDB corresponde à instância do MongoDB existente.
      • Se a instância do MongoDB tiver uma versão diferente do Azure Cosmos DB para MongoDB, instale as versões da ferramenta nativa do MongoDB e utilize a versão de ferramenta adequada para MongoDB e Azure Cosmos DB para MongoDB, respetivamente.
    • Adicione um utilizador com readWrite permissões, a menos que já exista um. Mais adiante neste tutorial, forneça este nome de utilizador/palavra-passe para as ferramentas mongoexport e mongodump .

Configurar as Repetições do Lado do Servidor do Azure Cosmos DB

Os clientes que migram do MongoDB para o Azure Cosmos DB beneficiam das capacidades de governação de recursos, que garantem a capacidade de utilizar totalmente as RU/s de débito aprovisionadas. O Azure Cosmos DB pode limitar um determinado pedido no decurso da migração se esse pedido exceder as RU/s aprovisionadas no contentor; em seguida, 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 desse pedido; Além disso, as ferramentas nativas do MongoDB podem não processar repetições. A funcionalidade Repetição do Lado do Servidor do Azure Cosmos DB permite ao serviço intercetar códigos de erro de limitação e tentar novamente com um tempo de ida e volta muito mais baixo, melhorando significativamente os tempos de resposta dos pedidos. Do ponto de vista das ferramentas nativas do MongoDB, a necessidade de processar repetições é minimizada, o que afetará positivamente a sua experiência durante a migração.

Pode encontrar a capacidade De Repetição do Lado do Servidor no painel Funcionalidades do portal do Azure Cosmos DB

Captura de ecrã a mostrar a funcionalidade SSR do MongoDB.

Se estiver Desativado, recomendamos que o ative, conforme mostrado abaixo

Captura de ecrã a mostrar a ativação do SSR do MongoDB.

Escolher a ferramenta nativa do MongoDB adequada

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

  • mongoexport/mongoimport é o melhor par de ferramentas de migração para migrar um subconjunto da base de dados do MongoDB.
    • mongoexport exporta os seus dados existentes para um ficheiro JSON ou CSV legível por humanos. mongoexport utiliza um argumento que especifica o subconjunto dos dados existentes a exportar.
    • O mongoimport abre um ficheiro JSON ou CSV e insere o conteúdo na instância da base de dados de destino (neste caso, o Azure Cosmos DB).
    • Tenha em atenção que JSON e CSV não são formatos compactos; pode incorrer em custos de rede excessivos, uma vez que o mongoimport envia dados para o Azure Cosmos DB.
  • mongodump/mongorestore é o melhor par de ferramentas de migração para migrar toda a base de dados do MongoDB. O formato BSON compacto fará uma utilização mais eficiente dos recursos de rede à medida que os dados são inseridos no Azure Cosmos DB.
    • O mongodump exporta os dados existentes como um ficheiro BSON.
    • o mongorestore importa a informação de falha de sistema do ficheiro BSON para o Azure Cosmos DB.
  • Como um aparte - se tiver simplesmente um pequeno ficheiro JSON que pretende importar para o Azure Cosmos DB para MongoDB, a ferramenta mongoimport é uma solução rápida para ingerir os dados.

Recolher 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. Terá de ter estas credenciais de acesso disponíveis para migrar dados para o Azure Cosmos DB para MongoDB. Para localizar estas credenciais:

  1. Abra o portal do Azure

  2. Navegue para a sua conta do Azure Cosmos DB para MongoDB

  3. Na navegação esquerda, selecione o painel Cadeia de Ligação e deverá ver um ecrã semelhante ao seguinte:

    Captura de ecrã a mostrar as credenciais do Azure Cosmos DB.

    • HOST – o ponto final do Azure Cosmos DB funciona como um nome de anfitrião do MongoDB
    • PORTA – quando as ferramentas nativas do MongoDB se ligam ao Azure Cosmos DB, tem de especificar explicitamente esta porta
    • USERNAME – o prefixo das funções de nome de domínio do ponto final do Azure Cosmos DB como o nome de utilizador do MongoDB
    • PASSWORD - a chave mestra do Azure Cosmos DB funciona como a palavra-passe do MongoDB
    • Além disso, tenha em atenção o campo SSL que é true – a ferramenta nativa do MongoDB tem de ativar o SSL ao escrever dados no Azure Cosmos DB

Efetuar a migração

  1. Escolha as bases de dados e coleções que pretende migrar. Neste exemplo, estamos a migrar a coleção de consultas na base de dados edx do MongoDB para o Azure Cosmos DB.

O resto desta secção irá orientá-lo ao longo da utilização do par de ferramentas que selecionou na secção anterior.

mongoexport/mongoimport

  1. Para exportar os dados da instância do MongoDB de origem, abra um terminal no computador da instância do MongoDB. Se for um computador Linux, escreva

    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 sua instância de base de dados do MongoDB existente.

    Também pode optar por exportar apenas um subconjunto do conjunto de dados do MongoDB. Uma forma de o fazer é adicionar 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 correspondem ao filtro {"field1":"value1"} serão exportados.

    Depois de executar a chamada, deverá ver que é produzido um edx.json ficheiro:

    Captura de ecrã da chamada mongoexport.

  2. Pode utilizar o mesmo terminal para importar edx.json para o Azure Cosmos DB. Se estiver a executar mongoimport num computador Linux, escreva

    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 que recolheu anteriormente.

  3. Monitorize a saída do terminal a partir de mongoimport. Deverá ver que imprime linhas de texto no terminal que contém atualizações sobre o estado da migração:

    Captura de ecrã da chamada mongoimport.

  4. Por fim, examine o Azure Cosmos DB para validar que a migração foi efetuada com êxito. Abra o portal do Azure Cosmos DB e navegue para Data Explorer. Deverá ver (1) que foi criada uma base de dados edx com uma coleção importedQuery e (2) se tiver exportado apenas um subconjunto de dados, importedQuery deve conter apenas documentos que correspondam ao subconjunto pretendido dos dados. No exemplo abaixo, apenas um documento correspondeu ao filtro {"field1":"value1"}:

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

mongodump/mongorestore

  1. Para criar uma captura de dados BSON da sua instância do MongoDB, abra um terminal no computador da instância do MongoDB. Se for um computador Linux, escreva

    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 sua instância de base de dados do MongoDB existente. Deverá ver que é produzido um edx-dump diretório e que a estrutura do diretório de reproduz a hierarquia de edx-dump recursos (base de dados e estrutura de coleção) da instância do MongoDB de origem. Cada coleção é representada por um ficheiro BSON:

    Captura de ecrã da chamada mongodump.

  2. Pode utilizar o mesmo terminal para restaurar o conteúdo do edx-dump para o Azure Cosmos DB. Se estiver a executar mongorestore num computador Linux, escreva

    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 que recolheu anteriormente.

  3. Monitorize a saída do terminal a partir de mongorestore. Deverá ver que imprime linhas para a atualização do terminal no estado da migração:

    Captura de ecrã da chamada mongorestore.

  4. Por fim, examine o Azure Cosmos DB para validar que a migração foi efetuada com êxito. Abra o portal do Azure Cosmos DB e navegue para Data Explorer. Deverá ver (1) que foi criada uma base de dados edx com uma coleção importedQuery 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 do mongorestore do Azure Cosmos DB.

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

Depois de migrar os dados armazenados na base de dados do MongoDB para a API do Azure Cosmos DB para MongoDB, pode ligar ao Azure Cosmos DB e gerir os dados. Também pode executar outros passos de otimização pós-migração, como otimizar a política de indexação, atualizar o nível de consistência predefinido ou configurar a distribuição global para a sua conta do Azure Cosmos DB. Para obter mais informações, veja o artigo Otimização pós-migração .

Recursos adicionais

Passos seguintes