O Data Transmission Service (DTS) permite migrar dados do MongoDB para uma instância do AnalyticDB for PostgreSQL. Este tópico descreve como migrar dados de uma instância de conjunto de réplicas do ApsaraDB for MongoDB.
Pré-requisitos
-
Crie uma instância de destino do AnalyticDB for PostgreSQL. O espaço de armazenamento deve ser maior que o armazenamento usado pela instância de origem do ApsaraDB for MongoDB. Para mais informações, consulte crie uma instância.
NotaO espaço de armazenamento da instância de destino deve ser pelo menos 10% maior que o armazenamento usado pelo banco de dados de origem.
-
Na instância de destino do AnalyticDB for PostgreSQL, crie um banco de dados, um schema e uma tabela com uma chave primária. Para mais informações, consulte SQL syntax.
ImportanteCertifique-se de que os tipos de dados na tabela de destino sejam compatíveis com os dados de origem do MongoDB. Por exemplo, se o campo
_idno MongoDB for do tipo ObjectId, o tipo de dados correspondente na instância do AnalyticDB for PostgreSQL deve ser varchar.A tabela de destino na instância do AnalyticDB for PostgreSQL não pode ter colunas chamadas _id ou _value.
Se a instância de origem do ApsaraDB for MongoDB for um cluster com shards, obtenha os endpoints de todos os nós de shard. A conta e a senha do banco de dados para cada shard devem ser idênticas. Para mais informações, consulte Apply for a shard endpoint.
Limitações
Tipo | Descrição |
Limitações do banco de dados de origem |
|
Outras limitações |
|
Faturamento
Tipo de migração | Taxa de configuração da tarefa | Taxa de transferência de dados |
Migração completa de dados | Sem cobrança. | Este tutorial é gratuito. No entanto, aplica-se uma data transfer fee se o Access Method para o banco de dados de destino for Public IP Address. |
Migração incremental de dados | Há cobrança de taxas. Para mais detalhes, consulte billing overview. |
Tipos de migração
|
Tipo |
Descrição |
|
Migração completa |
Migra todos os dados existentes da instância de origem do ApsaraDB for MongoDB para a instância de destino do AnalyticDB for PostgreSQL. |
|
Migração incremental |
Realiza uma migração completa e, em seguida, migra as atualizações incrementais da instância de origem do ApsaraDB for MongoDB para a instância de destino do AnalyticDB for PostgreSQL. Nota
|
Permissões de conta
|
Banco de dados |
Migração completa |
Migração incremental |
Ações |
|
ApsaraDB for MongoDB de origem |
Permissão de leitura nos bancos de dados a serem migrados. |
Permissão de leitura nos bancos de dados a serem migrados, no banco de dados admin e no banco de dados local. |
|
|
AnalyticDB for PostgreSQL de destino |
Permissões de leitura e gravação no banco de dados. |
crie e gerencie usuários e manage user permissions. Nota
Use a conta inicial ou uma conta com a permissão RDS_SUPERUSER. |
|
Se usar o ChangeStream como método de migração incremental, a conta do banco de dados de origem requer permissões de leitura de Change Streams em toda a instância (como readAnyDatabase). Se a origem for uma instância do ApsaraDB for MongoDB com uma conta personalizada, conceda também à conta permissão de leitura no banco de dados admin. Para mais detalhes, consulte Permissions of the root account specified during criação da instância.
Procedimento
-
Acesse a página da lista de tarefas de migração da região de destino usando um dos seguintes métodos.
Pelo console do DTS
Faça login no console do Data Transmission Service (DTS).
No painel de navegação à esquerda, clique em Data Migration.
No canto superior esquerdo da página, selecione a região onde a instância de migração está localizada.
Pelo console do DMS
NotaAs operações podem variar dependendo do modo e do layout do console do DMS. Para mais informações, consulte Simple mode console e Customize the layout and style of the DMS console.
Faça login no console do Data Management (DMS).
Na barra de menu superior, escolha .
À direita de Data Migration Tasks, selecione a região onde a instância de migração está localizada.
Clique em Create Task para acessar a página de configuração da tarefa.
-
Configure os bancos de dados de origem e de destino.
Categoria
Parâmetro
Descrição
Nenhuma
Task Name
O DTS gera automaticamente um nome para a tarefa. Especifique um nome descritivo para facilitar a identificação. O nome não precisa ser único.
Source Database
Select Existing Connection
Para usar uma instância de banco de dados que foi added to the system (criada ou salva), selecione a instância de banco de dados desejada na lista suspensa. As informações do banco de dados abaixo são configuradas automaticamente.
NotaNo console do DMS, este parâmetro tem o nome Select a DMS database instance..
Se não registrou a instância do banco de dados no sistema, ou não precisa usar uma instância registrada, configure manualmente as informações do banco de dados abaixo.
Database Type
Selecione MongoDB.
Access Method
Selecione Alibaba Cloud Instance.
Instance Region
Selecione a região da instância de origem do ApsaraDB for MongoDB.
Replicate Data Across Alibaba Cloud Accounts
Neste exemplo, usamos uma instância de banco de dados na conta atual do Alibaba Cloud. Selecione No.
Architecture
Neste exemplo, selecione a arquitetura Replica Set.
NotaSe a sua instância de origem do ApsaraDB for MongoDB usar uma arquitetura Sharded Cluster, especifique também o Shard account e a Shard password.
Migration Method
Selecione um método para migração incremental de dados com base nos seus requisitos.
-
Oplog (Recomendado):
Esta opção está disponível se um oplog estiver habilitado para o banco de dados de origem.
NotaUm oplog é habilitado por padrão tanto para bancos de dados MongoDB autogerenciados quanto para instâncias do ApsaraDB for MongoDB. Este método oferece menor latência para migração incremental de dados devido à extração de logs mais rápida. Por isso, recomendamos selecionar Oplog.
-
ChangeStream: Esta opção está disponível se os Change Streams estiverem habilitados para o banco de dados de origem.
Nota-
Se o banco de dados de origem for uma instância do Amazon DocumentDB (cluster não elástico), selecione apenas ChangeStream.
-
Se definir a Architecture como Sharded Cluster para o banco de dados de origem, não será necessário inserir um Shard account ou Shard password.
-
Instance ID
Selecione o ID da instância de origem do ApsaraDB for MongoDB.
Authentication Database
Insira o nome do banco de dados ao qual a conta do banco de dados da instância de origem do ApsaraDB for MongoDB pertence. Se não o alterou, o valor padrão é admin.
Database Account
Insira a conta do banco de dados para a instância de origem do ApsaraDB for MongoDB. Para obter informações sobre as permissões necessárias, consulte Database account permissions.
Database Password
Insira a senha correspondente à conta do banco de dados.
Encryption
O DTS oferece suporte a três métodos de conexão: Non-encrypted, SSL-encrypted e Mongo Atlas SSL. As opções de Encryption variam com base no Access Method e na Architecture selecionados. As opções exibidas no console prevalecem.
Nota-
Um banco de dados MongoDB onde a Architecture é Sharded Cluster e o Migration Method é Oplog não oferece suporte a SSL-encrypted.
-
Se a origem for um banco de dados MongoDB autogerenciado (o Access Method não é Alibaba Cloud Instance) com arquitetura Replica Set, e você selecionar SSL-encrypted, o DTS também permite o upload de um certificado CA e verifique a conexão.
Destination Database
Select Existing Connection
Para usar uma instância de banco de dados que foi added to the system (criada ou salva), selecione a instância de banco de dados desejada na lista suspensa. As informações do banco de dados abaixo são configuradas automaticamente.
NotaNo console do DMS, este parâmetro tem o nome Select a DMS database instance..
Se não registrou a instância do banco de dados no sistema, ou não precisa usar uma instância registrada, configure manualmente as informações do banco de dados abaixo.
Database Type
Selecione AnalyticDB for PostgreSQL.
Access Method
Selecione Alibaba Cloud Instance.
Instance Region
Selecione a região da instância de destino do AnalyticDB for PostgreSQL.
Instance ID
Selecione o ID da instância de destino do AnalyticDB for PostgreSQL.
Database Name
Insira o nome do banco de dados na instância de destino do AnalyticDB for PostgreSQL que receberá os dados migrados.
Database Account
Insira a conta do banco de dados para a instância de destino do AnalyticDB for PostgreSQL. Para obter informações sobre as permissões necessárias, consulte Database account permissions.
Database Password
Insira a senha correspondente à conta do banco de dados.
-
Após concluir a configuração, clique em Test Connectivity and Proceed na parte inferior da página.
NotaCertifique-se de que o segmento de endereços IP do service DTS seja adicionado automática ou manualmente às configurações de segurança dos bancos de dados de origem e de destino para permitir o acesso a partir dos servidores do DTS. Para mais informações, consulte Add DTS server IP addresses to a whitelist.
Se o banco de dados de origem ou de destino for um banco de dados autogerenciado (o Access Method não é Alibaba Cloud Instance), clique também em Test Connectivity na caixa de diálogo CIDR Blocks of DTS Servers que aparece.
-
Configure os objetos da tarefa.
-
Na página Configure Objects, configure os objetos que deseja migrar.
Parâmetro
Descrição
Migration Types
Se precisar realizar apenas uma migração completa, selecione Full Data Migration.
Para realizar uma migração sem tempo de inatividade, selecione Full Data Migration e Incremental Data Migration.
NotaSe não selecionar Incremental Data Migration, não grave novos dados na instância de origem durante a migração de dados para garantir a consistência dos dados.
DDL and DML Operations to Be Synchronized
Selecione as operações para migração incremental no nível da instância.
NotaPara selecionar operações para migração incremental no nível da coleção, clique com o botão direito em um objeto de migração na lista Selected Objects e selecione as caixas de seleção na caixa de diálogo.
Processing Mode of Conflicting Tables
Precheck and Report Errors: Verifica se existem coleções com os mesmos nomes no banco de dados de destino. Se não existirem coleções com os mesmos nomes, a pré-verificação será aprovada. Se existirem coleções com os mesmos nomes, o sistema relata um erro durante a pré-verificação e a tarefa de migração de dados não é iniciada.
NotaSe uma coleção no banco de dados de destino tiver o mesmo nome, mas não puder ser facilmente excluída ou renomeada, altere o nome da coleção no banco de dados de destino. Para mais informações, consulte Object name mapping.
Ignore Errors and Proceed: Ignora a verificação de coleções com os mesmos nomes.
AvisoSelecionar Ignore Errors and Proceed pode causar inconsistência de dados e riscos à aplicação. Por exemplo:
Se um registro no banco de dados de destino tiver o mesmo valor de chave primária que um registro no banco de dados de origem, o registro no banco de dados de destino é mantido. O registro do banco de dados de origem não é migrado para o banco de dados de destino.
A inicialização de dados pode falhar, apenas alguns dados podem ser migrados ou a migração pode falhar.
Source Objects
Na caixa Source Objects, clique nos objetos a serem migrados e, em seguida, clique em
para movê-los para a caixa Selected Objects.NotaÉ possível selecionar objetos para migrar no nível da coleção.
Selected Objects
-
Edite o mapeamento de nome do banco de dados.
-
Clique com o botão direito no banco de dados que contém a coleção a ser migrada na lista Selected Objects. No painel Selected Objects, encontre o banco de dados selecionado, como dtsdb, e clique em seu nome para editar o mapeamento.
-
Altere o Database Name para o nome do schema que receberá os dados na instância de destino do AnalyticDB for PostgreSQL. Na caixa de diálogo edite o nome do banco de dados, modifique o valor no campo Database Name. Por exemplo, altere o nome original do schema de
dtsdbparadtstest. Após a edição, o nome do banco de dados de destino é atualizado para o novo nome. -
Opcional: Na área Select DDL and DML Operations to Be Synchronized, selecione as operações para migração incremental. Na área Select DML Operations to Synchronize, selecione insira, atualize e exclua. Selecione também Select All.
-
Clique em OK.
-
-
Edite o mapeamento de nome da tabela.
-
Clique com o botão direito na coleção a ser migrada na lista Selected Objects. No painel Selected Objects, expanda o banco de dados de destino, como
dtstest, e encontre o objeto de tabela para o qual deseja editar o mapeamento, comoclass. -
Altere o Table Name para o nome da tabela que receberá os dados na instância de destino do AnalyticDB for PostgreSQL. Na caixa de diálogo edite a tabela, modifique o Table Name conforme necessário, por exemplo, para
class. Após a edição, os nomes da tabela e das colunas no banco de dados de destino são atualizados. -
Opcional: Defina as condições de filtro. Para mais informações, consulte Set filter conditions. Na caixa de texto Filter Condition, insira uma instrução de filtro. A sintaxe com suporte difere das cláusulas WHERE padrão do SQL. Formato de exemplo:
{"_id": {$gt:"user100844658590795**",$lte:"user101674868045948**"}}, onde$gtsignifica maior que, e$ltesignifica menor ou igual a. -
Opcional: Na área Select DDL and DML Operations to Be Synchronized, selecione as operações para migração incremental.
-
-
Configure os campos do MongoDB a serem migrados.
Por padrão, o DTS mapeia os dados da coleção a ser migrada. Na coluna Parameter Value, configure uma expressão. Verifique se a expressão atende aos seus requisitos e configure parâmetros como Column Name, Type, Length e Precision.
Importante-
A coluna de chave primária na tabela de destino deve ser definida como
bson_value("_id"). -
Ao configurar a expressão
bson_value(), siga a hierarquia até o menor subcampo. Caso contrário, pode haver perda de dados ou falha na tarefa.
-
Na expressão
bson_value()da coluna Parameter Value, visualize o nome do campo para a linha no MongoDB.O valor dentro de
""é o nome do campo no MongoDB. Por exemplo, se a expressão forbson_value("age"), esta linha de dados corresponde ao campoageno MongoDB. -
Opcional: Exclua os campos que não é necessário migrar.
NotaPara remover um campo que não deseja migrar, clique em
no final de sua linha. -
Configure os campos a serem migrados.
Tome as medidas adequadas dependendo se a expressão
bson_value()atende ou não aos seus requisitos.Campos com expressões corretas
-
Insira o Column Name.
NotaEste é o nome da coluna na instância de destino do AnalyticDB for PostgreSQL que receberá os dados.
-
Selecione o Type dos dados da coluna.
ImportanteCertifique-se de que os tipos de dados na tabela de destino sejam compatíveis com os dados de origem do MongoDB.
-
Opcional: Configure o Length e a Precision para os dados da coluna.
-
Repita estas etapas para mapear todos os campos relevantes.
Campos com expressões incorretas
NotaUm exemplo é um campo com uma estrutura hierárquica (pai-filho).
-
Na coluna Operation, clique em
para a entrada. -
Clique em + Add Column.
-
Configure o Column Name, o Type, o Length e a Precision.
-
Na caixa de texto sob Parameter Value, insira a expressão
bson_value(). Para mais informações, consulte Assignment configuration examples. -
Repita estas etapas para mapear todos os campos relevantes.
-
-
-
Clique em OK.
-
Clique em Next: Advanced Settings para configurar os parâmetros avançados.
Parâmetro
Descrição
Dedicated Cluster for Task Scheduling
Por padrão, o DTS agenda tarefas em um cluster compartilhado. Não é necessário selecionar um. Para tarefas mais estáveis, compre um dedicated cluster para executar tarefas de migração do DTS.
Retry Time for Failed Connections
Após o início da tarefa de migração, se a conexão com o banco de dados de origem ou de destino falhar, o DTS relata um erro e começa imediatamente a tentar reconectar. A duração padrão de nova tentativa é de 720 minutos. Personalize o tempo de nova tentativa para um valor de 10 a 1440 minutos. Recomendamos definir a duração para mais de 30 minutos. Se o DTS se reconectar aos bancos de dados de origem e de destino dentro da duração especificada, a tarefa de migração será retomada automaticamente. Caso contrário, a tarefa falhará.
NotaPara várias instâncias do DTS que compartilham a mesma origem ou destino, o tempo de nova tentativa de rede é determinado pela configuração da última tarefa criada.
Como há cobrança pela tarefa durante o período de nova tentativa de conexão, personalize o tempo de nova tentativa com base nas suas necessidades de negócios, ou libere a instância do DTS o mais rápido possível após a liberação das instâncias de banco de dados de origem e de destino.
Retry Time for Other Issues
Após o início da tarefa de migração, se ocorrer um problema não relacionado à conectividade, como uma exceção de execução de DDL ou DML, no banco de dados de origem ou de destino, o DTS relata um erro e começa imediatamente a tentar repetir a operação. A duração padrão de nova tentativa é de 10 minutos. Personalize o tempo de nova tentativa para um valor de 1 a 1440 minutos. Recomendamos definir a duração para mais de 10 minutos. Se as operações relacionadas forem bem-sucedidas dentro da duração de nova tentativa especificada, a tarefa de migração será retomada automaticamente. Caso contrário, a tarefa falhará.
ImportanteO valor de Retry Time for Other Issues deve ser menor que o valor de Retry Time for Failed Connections.
Enable Throttling for Full Data Migration
Durante a migração completa, o DTS consome recursos de leitura e gravação nos bancos de dados de origem e de destino, o que pode aumentar a carga do banco de dados. Se necessário, ative o limitador para a tarefa de migração completa. Defina Queries per second (QPS) to the source database, RPS of Full Data Migration e Data migration speed for full migration (MB/s) para reduzir a carga no banco de dados de destino.
NotaEste item de configuração está disponível apenas se você selecionar Full Data Migration para Migration Types.
Também é possível adjust the full migration speed após a instância de migração estar em execução.
Only one data type for primary key _id in a table of the data to be synchronized
Nos dados a serem migrados, o tipo de dados da chave primária
_idé uniforme dentro de uma única coleção?Importante-
Selecione uma opção com base nos seus requisitos. Caso contrário, pode ocorrer perda de dados.
-
Este parâmetro está disponível apenas se você selecionar Full Data Migration para Migration Types.
-
Yes: O tipo de dados é único. Durante a migração completa de dados, o DTS não verifica os tipos de dados das chaves primárias nos dados de origem. Para uma única coleção, o DTS migra apenas os dados correspondentes a um tipo de dados de chave primária.
-
No: O tipo de dados não é único. Durante a migração completa de dados, o DTS verifica os tipos de dados das chaves primárias nos dados de origem e migra todos os dados.
Enable Throttling for Incremental Data Migration
Se necessário, defina limites de velocidade para a tarefa de migração incremental. Defina RPS of Incremental Data Migration e Data migration speed for incremental migration (MB/s) para reduzir a carga no banco de dados de destino.
NotaEste item de configuração está disponível apenas se você selecionar Incremental Data Migration para Migration Types.
Também é possível adjust the incremental migration speed após a instância de migração estar em execução.
Environment Tag
Selecione uma tag de ambiente para identificar a instância com base nas suas necessidades. Neste exemplo, não é necessária nenhuma seleção.
Configure ETL
Escolha se deseja ativar o recurso de extração, transformação e carga (ETL). Para mais informações, consulte What is ETL? Valores válidos:
-
Yes: Ativa o recurso ETL. Insira instruções de processamento de dados no editor de código. Para mais informações, consulte Configure ETL in a data migration or data synchronization task.
-
No: Desativa o recurso ETL.
Monitoring and Alerting
Defina se deseja receber notificações de alerta com base nas suas necessidades de negócios.
No: Não define alerta.
Yes: Configure alertas definindo um alert threshold e um alert notifications. Se uma migração falhar ou a latência exceder o limiar, o sistema envia uma notificação de alerta.
-
-
Salve a tarefa e execute uma pré-verificação.
Para visualizar os parâmetros de configuração desta instância ao chamar a operação da API, mova o ponteiro sobre o botão Next: Save Task Settings and Precheck e clique em Preview OpenAPI parameters na dica que aparece.
Se não precisar visualizar ou já tiver terminado de visualizar os parâmetros da API, clique em Next: Save Task Settings and Precheck na parte inferior da página.
NotaAntes do início da tarefa de migração, o DTS realiza uma pré-verificação. A tarefa só é iniciada após ser aprovada na pré-verificação.
Se a pré-verificação falhar, clique em View Details ao lado do item de verificação com falha, corrija o problema com base na instrução e, em seguida, execute a pré-verificação novamente.
-
Se houver um aviso durante a pré-verificação:
Para itens de verificação que não podem ser ignorados, clique em View Details ao lado do item com falha, corrija o problema com base na instrução e, em seguida, execute a pré-verificação novamente.
Para itens de verificação que podem ser ignorados, clique em Confirm Alert Details, Ignore, OK e Precheck Again para pular o item de alerta e executar a pré-verificação novamente. Se optar por ignorar um aviso, isso pode causar problemas como inconsistência de dados e representar riscos à sua aplicação.
-
Adquira a instância.
Quando a Success Rate for 100%, clique em Next: Purchase Instance.
-
Na página Purchase, selecione a especificação de link para a instância de migração de dados. Para mais informações, consulte a tabela a seguir.
Categoria
Parâmetro
Descrição
New Instance Class
Resource Group Settings
Selecione o grupo de recursos ao qual a instância pertence. O valor padrão é default resource group. Para mais informações, consulte What is resource management?
Instance Class
O DTS fornece especificações de migração com diferentes níveis de desempenho. A especificação do link afeta a velocidade da migração. Selecione uma especificação com base no seu cenário de negócios. Para mais informações, consulte Data migration link specifications.
Após concluir a configuração, leia e selecione Data Transmission Service (Pay-as-you-go) Service Terms.
-
Clique em Buy and Start. Na caixa de diálogo OK que aparece, clique em OK.
Acompanhe o progresso da tarefa de migração na página de lista Data Migration Tasks.
NotaSe a tarefa de migração não incluir migração incremental, ela será interrompida automaticamente após a conclusão da migração completa. Após a interrupção da tarefa, o Status muda para Completed.
Se a tarefa de migração incluir migração incremental, ela não será interrompida automaticamente. A tarefa de migração incremental continua em execução. Enquanto a tarefa de migração incremental estiver em execução, o Status da tarefa será Running.
Configuração de atribuição
Estrutura de dados do MongoDB de origem
{
"_id":"62cd344c85c1ea6a2a9f****",
"person":{
"name":"neo",
"age":26,
"sex":"male"
}
}
Schema da tabela do AnalyticDB for PostgreSQL de destino
|
Nome |
Tipo |
|
mongo_id |
varchar Nota
Coluna de chave primária. |
|
person_name |
varchar |
|
person_age |
decimal |
Configuração de colunas
Configure a expressão bson_value() de acordo com a hierarquia de dados para evitar perda de dados ou falha na tarefa. Por exemplo, se configurar a expressão como bson_value("person"), o Data Transmission Service (DTS) não conseguirá gravar alterações incrementais dos subcampos do objeto person de origem, como name, age e sex, no destino.
|
Nome |
Tipo |
Valor |
|
mongo_id |
STRING |
bson_value("_id") |
|
person_name |
STRING |
bson_value("person","name") |
|
person_age |
DECIMAL |
bson_value("person","age") |