Use o Data Transmission Service (DTS) para migrar dados de um conjunto de réplicas MongoDB autogerenciado para uma instância do ApsaraDB for MongoDB com arquitetura de conjunto de réplicas ou cluster fragmentado. O DTS oferece suporte à migração de esquema, migração completa de dados e migração incremental de dados, permitindo migrações com tempo de inatividade mínimo.
Pré-requisitos
Antes de começar, verifique se você tem:
Uma instância de destino do ApsaraDB for MongoDB (arquitetura de conjunto de réplicas ou cluster fragmentado) criada. Consulte Criar uma instância de conjunto de réplicas e Criar uma instância de cluster fragmentado
Espaço de armazenamento de destino pelo menos 10% maior que o espaço utilizado pelo banco de dados de origem
Largura de banda de saída suficiente no servidor que executa o banco de dados de origem
O recurso oplog habilitado no banco de dados de origem, com logs de operação retidos por pelo menos sete dias — ou change streams habilitados com o DTS capaz de assinar alterações de dados dos últimos sete dias (necessário para migração incremental de dados)
(Apenas para destino em cluster fragmentado) Bancos de dados e coleções criados para fragmentação, fragmentação de dados configurada, balanceador habilitado e pré-fragmentação executada na instância de destino. Consulte Configurar fragmentação de dados para maximizar o desempenho do shard e Lidar com distribuição desigual de dados em uma instância MongoDB de cluster fragmentado
Configurar a fragmentação de dados impede que todos os dados sejam roteados para um único shard. Habilitar o balanceador e executar a pré-fragmentação ajuda a evitar distorção de dados.
Use o recurso oplog para obter alterações de dados do banco de dados de origem. Os change streams estão disponíveis apenas se o banco de dados de origem executar o MongoDB V4.0 ou posterior.
Preparações
Para garantir que o DTS consiga se conectar às instâncias de banco de dados, conecte primeiro os bancos de dados necessários à Alibaba Cloud.
|
Origem |
Operações relacionadas |
|
Data center local |
|
|
Plataforma AWS |
Conectar um banco de dados na plataforma AWS à Alibaba Cloud |
|
Plataforma Azure |
Conectar um banco de dados na plataforma Azure à Alibaba Cloud |
|
Huawei Cloud |
|
|
Tencent Cloud |
Faturamento
|
Tipo de migração |
Taxa de configuração da instância |
Taxa de tráfego de Internet |
|
Migração de esquema e migração completa de dados |
Gratuita |
Cobrada apenas quando o Access Method estiver definido como Public IP Address. Consulte Visão geral do faturamento. |
|
Migração incremental de dados |
Cobrada. Consulte Visão geral do faturamento. |
— |
Tipos de migração
O DTS suporta os seguintes tipos de migração. Combine-os para atender aos seus requisitos de negócios.
| Tipo de migração | Objetos suportados | Descrição |
|---|---|---|
| Migração de esquema | DATABASE, COLLECTION, INDEX | Migra esquemas da origem para o destino |
| Migração completa de dados | DATABASE, COLLECTION | Migra todos os dados existentes |
| Migração incremental de dados | — | Migra continuamente as alterações após a conclusão da migração completa de dadosOplogA migração incremental não suporta bancos de dados criados após o início da tarefa. As seguintes atualizações incrementais são suportadas:
Change streamAs seguintes atualizações incrementais são suportadas:
|
Para migrar com tempo de inatividade mínimo, selecione todos os três tipos: Schema Migration, Full Data Migration e Incremental Data Migration.
O que a migração incremental captura
Usando oplog, o DTS captura:
CREATE COLLECTIONeCREATE INDEXDROP DATABASE,DROP COLLECTIONeDROP INDEXRENAME COLLECTIONOperações de inserção, atualização e exclusão em documentos (atualizações via
$setapenas)
O DTS não migra dados incrementais de bancos de dados criados após o início da tarefa de migração.
Usando change streams, o DTS captura:
DROP DATABASEeDROP COLLECTIONRENAME COLLECTIONOperações de inserção, atualização e exclusão em documentos (atualizações via
$setapenas)
Permissões necessárias
Configure contas de banco de dados com as seguintes permissões antes de iniciar a tarefa de migração.
|
Banco de dados |
Migração de esquema |
Migração completa de dados |
Migração incremental de dados |
|
MongoDB autogerenciado de origem |
Leitura no banco de dados a ser migrado e no banco de dados |
Leitura no banco de dados a ser migrado e nos bancos de dados |
— |
|
ApsaraDB for MongoDB de destino |
|
— |
— |
Para instruções sobre criação de contas:
MongoDB autogerenciado: db.createUser()
ApsaraDB for MongoDB: Gerenciar permissões de usuário em bancos de dados MongoDB
Limitações
Revise estas limitações antes de configurar a tarefa de migração. Ignore as limitações que não se aplicam à sua arquitetura de destino.
Banco de dados de origem
Clusters do Azure Cosmos DB for MongoDB e clusters elásticos do Amazon DocumentDB: Apenas a migração completa de dados é suportada.
Requisitos de coleção: As coleções devem ter restrições PRIMARY KEY ou UNIQUE com todos os campos únicos; caso contrário, registros duplicados podem aparecer no destino.
Contagem de coleções: Ao migrar selecionando coleções individuais, o limite é de até 1.000 coleções por tarefa. Exceder esse limite causa um erro de solicitação. Migre em lotes ou selecione bancos de dados inteiros.
Tamanho do documento: Um único documento não pode exceder 16 MB; exceder esse limite causa falha na tarefa.
Índices TTL: Pode ocorrer inconsistência de dados entre a origem e o destino após a migração.
Alterações de esquema: Durante a migração de esquema e a migração completa de dados, não modifique esquemas (incluindo atualizações de tipo de array). Isso causa falha na tarefa ou inconsistência de dados.
Gravações durante migração apenas completa: Se você executar apenas a migração completa de dados sem migração incremental, não grave no banco de dados de origem durante a migração. Gravações causam inconsistência de dados.
Troca primário/secundário: Se ocorrer uma troca primário/secundário na origem durante a migração, a tarefa falhará.
Precisão da latência de migração: O DTS calcula a latência de migração comparando o timestamp dos dados migrados mais recentes com o timestamp atual da origem. Se a origem não tiver atualizações recentes, a latência exibida pode ser imprecisa. Execute uma atualização na origem para renovar a latência.
Se você migrar um banco de dados inteiro, crie uma tabela de heartbeat. O DTS atualiza a tabela de heartbeat a cada segundo, o que mantém as leituras de latência precisas.
Destino em cluster fragmentado
Documentos órfãos: Exclua documentos órfãos antes da migração. Conflitos de
_identre documentos de origem e destino podem causar inconsistência de dados ou falha na tarefa.Chaves de fragmentação: Adicione chaves de fragmentação aos dados na origem antes de iniciar a tarefa. Se não for possível adicionar chaves de fragmentação à origem, consulte Migrar dados de uma instância MongoDB sem chave de fragmentação para uma instância de cluster fragmentado MongoDB.
Inserções durante a migração: Os dados inseridos devem conter chaves de fragmentação.
Atualizações durante a migração: Chaves de fragmentação não podem ser modificadas.
Destino em conjunto de réplicas
Para conexões via Express Connect, VPN Gateway, Smart Access Gateway, Public IP Address ou Cloud Enterprise Network (CEN): Defina Domain Name or IP e Port Number como o endereço IP e a porta do nó primário, ou configure um endpoint de alta disponibilidade. Consulte Criar uma tarefa DTS onde o banco de dados de origem ou destino é um banco de dados MongoDB de alta disponibilidade.
Para conexões via Self-managed Database on ECS: Defina Port Number como a porta do nó primário.
Geral
O DTS não consegue se conectar a um banco de dados MongoDB por meio de um endpoint SRV.
A versão do MongoDB de destino deve ser igual ou posterior à versão de origem. Versões de destino anteriores podem causar problemas de compatibilidade.
O DTS não pode migrar dados dos bancos de dados
admin,configoulocal.Coleções com índice único ou
capped: trueno destino suportam apenas gravações single-thread e não suportam replay simultâneo durante a migração incremental. Isso pode aumentar a latência da migração.Transações não são mantidas. Durante a migração, as transações são convertidas em registros individuais.
Se ocorrer um conflito de chave primária ou chave única, o DTS ignora a operação de gravação conflitante e mantém os dados existentes no destino.
O DTS usa
ROUND(COLUMN, PRECISION)para recuperar valores FLOAT e DOUBLE. Precisão padrão: 38 dígitos para FLOAT, 308 dígitos para DOUBLE. Verifique se esses padrões atendem aos seus requisitos.Gravações simultâneas durante a migração completa de dados causam fragmentação nas coleções de destino. Após a migração completa, o espaço de armazenamento de destino pode exceder o espaço de armazenamento de origem em 5–10%.
O DTS tenta repetir tarefas falhas por até sete dias. Antes de alternar cargas de trabalho para o destino, pare ou libere quaisquer tarefas falhas. Alternativamente, revogue as permissões de gravação da conta DTS no banco de dados de destino para impedir que a origem sobrescreva o destino após a retomada de uma tarefa.
Consulte a contagem de linhas no destino usando:
db.$table_name.aggregate([{ $count:"myCount"}]).Certifique-se de que o banco de dados de destino não tenha os mesmos valores de
_idque a origem. Se existirem conflitos, exclua os dados conflitantes do destino antes de iniciar a tarefa.Se uma instância DTS falhar, o suporte técnico do DTS tentará recuperá-la dentro de 8 horas. As operações de recuperação podem incluir reiniciar a instância ou ajustar parâmetros. Consulte Modificar parâmetros da instância para ver os parâmetros que podem ser alterados.
Configurar e executar uma tarefa de migração
Etapa 1: Acessar a página Data Migration
Via console DTS:
Faça login no console DTS.
No painel de navegação à esquerda, clique em Data Migration.
No canto superior esquerdo, selecione a região onde reside a instância de migração.
Via console DMS:
As etapas reais podem variar com base no modo e layout do console DMS. Consulte Modo simples e Personalizar o layout e o estilo do console DMS .
Faça login no console DMS.
Na barra de navegação superior, passe o ponteiro sobre Data + AI > DTS (DTS) > Data Migration.
Na lista suspensa à direita de Data Migration Tasks, selecione a região onde reside a instância de migração.
Etapa 2: Criar a tarefa e configurar os bancos de dados de origem e destino
Clique em Create Task.
Configure os bancos de dados de origem e destino usando os parâmetros nas tabelas a seguir.
Após configurar os bancos de dados de origem e destino, revise os Limits exibidos na parte superior da página. Pular esta etapa pode causar falha na tarefa ou resultar em inconsistência de dados.
Parâmetros do banco de dados de origem
|
Parâmetro |
Descrição |
|
Task Name |
Nome da tarefa. O DTS gera um nome automaticamente. Especifique um nome descritivo para identificar a tarefa facilmente. Os nomes das tarefas não precisam ser únicos. |
|
Select Existing Connection |
Se o banco de dados de origem estiver registrado no DTS, selecione-o na lista suspensa. O DTS preenche os parâmetros restantes automaticamente. Caso contrário, configure os parâmetros abaixo manualmente. |
|
Database Type |
Selecione MongoDB. |
|
Access Method |
Selecione o tipo de conexão com base na localização do banco de dados de origem. Este tópico usa Public IP Address como exemplo. Se você selecionar um tipo de conexão diferente, conclua as preparações necessárias. |
|
Instance Region |
Selecione a região onde reside o banco de dados de origem. Se a região não estiver listada, selecione a região geograficamente mais próxima. |
|
Architecture |
Selecione Replica Set. |
|
Migration Method |
Selecione o método para migrar dados incrementais: Oplog (recomendado) ou ChangeStream. Oplog está disponível quando o recurso oplog está habilitado na origem. ChangeStream está disponível quando change streams estão habilitados. Se a origem for um cluster inelástico do Amazon DocumentDB, você deve selecionar ChangeStream e definir o parâmetro Architecture como Sharded Cluster. Se você selecionar Sharded Cluster para o parâmetro Architecture, não será necessário configurar os parâmetros Shard account e Shard password. |
|
Endpoint Type |
Selecione Standalone ou Multi-node. Disponível quando Access Method é Express Connect, VPN Gateway, or Smart Access Gateway, Public IP Address ou Cloud Enterprise Network (CEN). |
|
Domain Name or IP |
O nome de domínio ou endereço IP do banco de dados de origem. Disponível quando Endpoint Type é Standalone. |
|
Port Number |
A porta de serviço do banco de dados de origem. Disponível quando Endpoint Type é Standalone. |
|
Endpoint |
O endpoint do banco de dados de origem no formato |
|
Authentication Database |
O banco de dados ao qual a conta de origem pertence. Padrão: |
|
Database Account |
A conta usada para se conectar ao banco de dados de origem. Para as permissões necessárias, consulte Permissões necessárias. Se Access Method for Self-managed Database on ECS ou Database Gateway, insira a conta do nó de fragmentação. |
|
Database Password |
A senha da conta do banco de dados. |
|
Encryption |
O método de criptografia da conexão: Non-encrypted, SSL-encrypted ou Mongo Atlas SSL. As opções disponíveis dependem de Access Method e Architecture. SSL-encrypted não está disponível quando Architecture é Sharded Cluster e Migration Method é Oplog. Se Architecture for Replica Set, Access Method não for Alibaba Cloud Instance e Encryption for SSL-encrypted, carregue um certificado CA para verificar a conexão. |
Parâmetros do banco de dados de destino
|
Parâmetro |
Descrição |
|
Select Existing Connection |
Se a instância de destino estiver registrada no DTS, selecione-a na lista suspensa. Caso contrário, configure os parâmetros abaixo manualmente. |
|
Database Type |
Selecione MongoDB. |
|
Access Method |
Selecione Alibaba Cloud Instance. |
|
Instance Region |
Selecione a região onde reside a instância de destino do ApsaraDB for MongoDB. |
|
Replicate Data Across Alibaba Cloud Accounts |
Selecione No para usar uma instância na conta atual. |
|
Architecture |
Selecione a arquitetura da instância de destino. |
|
Instance ID |
Selecione o ID da instância de destino. |
|
Authentication Database |
O banco de dados ao qual a conta de destino pertence. Padrão: |
|
Database Name |
O nome do banco de dados na instância de destino onde os objetos migrados serão armazenados. |
|
Database Account |
A conta usada para se conectar à instância de destino. Para as permissões necessárias, consulte Permissões necessárias. |
|
Database Password |
A senha da conta do banco de dados. |
|
Encryption |
O método de criptografia da conexão. SSL-encrypted não está disponível quando o destino usa arquitetura de cluster fragmentado. |
Etapa 3: Testar conectividade
Clique em Test Connectivity and Proceed, depois clique em Test Connectivity na caixa de diálogo CIDR Blocks of DTS Servers.
Certifique-se de que os blocos CIDR dos servidores DTS foram adicionados às listas de permissões dos bancos de dados de origem e destino. Consulte Adicionar endereços IP de servidores DTS a uma lista de permissões .
Etapa 4: Configurar objetos de migração
Na página Configure Objects, configure os objetos de migração usando os seguintes parâmetros.
|
Parâmetro |
Descrição |
|
Migration Types |
Selecione os tipos de migração: Schema Migration, Full Data Migration e, opcionalmente, Incremental Data Migration. Para migração com tempo de inatividade zero, selecione todos os três. Se você pular Schema Migration, crie os bancos de dados e coleções de destino no destino antes de começar. Se você pular Incremental Data Migration, não grave na origem durante a migração. |
|
Processing Mode of Conflicting Tables |
Precheck and Report Errors: falha na pré-verificação se o destino contiver coleções com os mesmos nomes da origem. Use o mapeamento de nomes de objetos para renomear coleções migradas se as coleções existentes não puderem ser excluídas. Ignore Errors and Proceed: pula a pré-verificação. O DTS não migra registros com as mesmas chaves primárias que os registros de destino existentes. A consistência dos dados não é garantida. |
|
Capitalization of object names in destination instance |
A política de capitalização para nomes de bancos de dados e coleções no destino. Padrão: DTS default policy. Consulte Especificar a capitalização de nomes de objetos na instância de destino. |
|
Source Objects |
Selecione bancos de dados ou coleções para migrar. Clique no ícone |
|
Selected Objects |
Clique com o botão direito em um objeto para renomeá-lo no destino (mapeamento de nomes de objetos), definir o modo de migração incremental ou especificar condições WHERE para filtragem de dados de migração completa. Para remover um objeto, clique nele e depois clique no ícone |
Etapa 5: Configurar definições avançadas
Clique em Next: Advanced Settings e configure os seguintes parâmetros.
|
Parâmetro |
Descrição |
|
Dedicated Cluster for Task Scheduling |
Por padrão, o DTS agenda tarefas em um cluster compartilhado. Adquira um cluster dedicado para recursos isolados. Consulte O que é um cluster dedicado DTS? |
|
Retry Time for Failed Connections |
A duração da nova tentativa para falhas de conexão. Valores válidos: 10–1.440 minutos. Padrão: 720 minutos. Defina isso para pelo menos 30 minutos. Se diferentes tarefas compartilharem o mesmo banco de dados de origem ou destino, o valor definido por último tem precedência. |
|
Retry Time for Other Issues |
A duração da nova tentativa para falhas de operação DDL ou DML. Valores válidos: 1–1.440 minutos. Padrão: 10 minutos. Defina isso para pelo menos 10 minutos. Este valor deve ser menor que Retry Time for Failed Connections. |
|
Enable Throttling for Full Data Migration |
Limita a carga de leitura/gravação na origem e no destino durante a migração completa. Configure QPS para o banco de dados de origem, RPS de Full Data Migration e velocidade de migração de dados. Disponível apenas quando Full Data Migration estiver selecionado. |
|
Only one data type for primary key `_id` in a table of the data to be synchronized |
Yes: O DTS migra apenas um tipo de dados de |
|
Enable Throttling for Incremental Data Migration |
Limita a carga durante a migração incremental. Configure RPS de Incremental Data Migration e velocidade de migração de dados. Disponível apenas quando Incremental Data Migration estiver selecionado. |
|
Environment Tag |
Uma tag opcional para identificar a instância. |
|
Configure ETL |
Habilite o recurso de extração, transformação e carregamento (ETL) para transformar dados durante a migração. Consulte Configurar ETL em uma tarefa de migração de dados ou sincronização de dados. |
|
Monitoring and Alerting |
Configure alertas para falha de tarefa ou alta latência de migração. Se habilitado, defina o limiar de alerta e os contatos de notificação. Consulte Configurar monitoramento e alertas. |
Etapa 6: Configurar verificação de dados (opcional)
Clique em Next Step: Data Verification para configurar uma tarefa de verificação de dados. Consulte Configurar uma tarefa de verificação de dados.
Etapa 7: Executar a pré-verificação
Clique em Next: Save Task Settings and Precheck.
Para visualizar os parâmetros da API para esta configuração de tarefa, passe o ponteiro sobre Next: Save Task Settings and Precheck e clique em Preview OpenAPI parameters .
O DTS executa uma pré-verificação antes de iniciar a migração. A tarefa começa somente após passar na pré-verificação.
Se um item de verificação falhar, clique em View Details, resolva o problema e clique em Precheck Again.
Se um alerta for acionado para um item de verificação que pode ser ignorado, clique em Confirm Alert Details > Ignore > OK > Precheck Again. Ignorar alertas pode resultar em inconsistência de dados.
Etapa 8: Adquirir e iniciar a instância
Aguarde até que Success Rate atinja 100%, depois clique em Next: Purchase Instance.
Na página Purchase Instance, configure os seguintes parâmetros.
|
Parâmetro |
Descrição |
|
Resource Group |
O grupo de recursos para a instância de migração. Padrão: grupo de recursos padrão. Consulte O que é Resource Management? |
|
Instance Class |
A classe da instância determina a velocidade de migração. Selecione com base no volume de dados e nos requisitos de tempo. Consulte Classes de instância de instâncias de migração de dados. |
Leia e marque a caixa de seleção para concordar com Data Transmission Service (Pay-as-you-go) Service Terms.
Clique em Buy and Start, depois clique em OK na caixa de diálogo de confirmação.
Monitorar o progresso da migração
Acompanhe o progresso na página Data Migration.
Tarefas sem migração incremental param automaticamente quando a migração completa termina. O status muda para Completed.
Tarefas com migração incremental executam continuamente. O status permanece Running até que você pare a tarefa.
Monitore os seguintes indicadores principais para avaliar a integridade da migração:
|
Métrica |
O que ela mede |
|
Latência de migração |
O atraso de tempo entre uma alteração na origem e sua aplicação no destino. Uma latência próxima de 0 segundos indica que o destino está sincronizado com a origem. |
|
Status da tarefa |
O estado atual da tarefa de migração (Running, Completed, Failed). |
|
Velocidade de migração |
A taxa de transferência de dados durante a migração completa. Se a velocidade cair significativamente, verifique a largura de banda da origem e as configurações de limitação. |
Se a latência estiver persistentemente alta sem atualizações na origem, execute uma operação de gravação na origem para renovar o valor de latência exibido.
Alternar para o destino
Depois que a latência da migração incremental estabilizar perto de 0 segundos, o destino estará sincronizado com a origem. Complete a alternância na seguinte ordem:
Pare as gravações no banco de dados de origem.
Aguarde até que a latência da migração atinja 0 segundos.
Pare a tarefa de migração do DTS.
Atualize a string de conexão da sua aplicação para apontar para a instância de destino do ApsaraDB for MongoDB.
Verifique se a aplicação está executando corretamente no destino.
Antes de alternar cargas de trabalho, pare ou libere a tarefa DTS. Se a tarefa ainda estiver em execução após uma falha, ela pode ser retomada e sobrescrever dados no destino. Alternativamente, revogue as permissões de gravação da conta DTS no banco de dados de destino.