O Data Transmission Service (DTS) migra dados do MongoDB para um cluster PolarDB for MySQL. Este tópico descreve o processo de migração usando um replica set do ApsaraDB for MongoDB como banco de dados de origem.
Pré-requisitos
Se o banco de dados de origem for um cluster fragmentado do ApsaraDB for MongoDB, solicite um endpoint para cada nó de shard. Certifique-se de que todos os nós de shard usem a mesma conta e senha. Para obter instruções, consulte Apply for a shard endpoint.
-
Crie um cluster PolarDB for MySQL de destino com mais espaço de armazenamento do que a instância do ApsaraDB for MongoDB de origem. Para obter instruções, consulte Custom Purchase e Purchase a subscription cluster.
NotaRecomendamos que o cluster de destino tenha pelo menos 10% a mais de espaço de armazenamento do que o espaço utilizado no banco de dados de origem.
-
No cluster PolarDB for MySQL de destino, crie um banco de dados e uma tabela para receber os dados. A tabela deve ter uma chave primária. Para mais informações, consulte Database management.
ImportanteCertifique-se de que os tipos de dados da tabela de destino sejam compatíveis com os dados do MongoDB de origem. Por exemplo, se o campo
_idno MongoDB for um ObjectId, a coluna correspondente no cluster PolarDB for MySQL de destino deve ser varchar.No cluster PolarDB for MySQL, os nomes de colunas da tabela de destino não podem ser _id nem _value.
Observaçõ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 | Gratuito. | Este tutorial é gratuito. No entanto, aplica-se data transfer fee se o Access Method do banco de dados de destino for Public IP Address. |
migração incremental de dados | Cobranças aplicáveis. Para mais detalhes, consulte billing overview. |
Tipos de migração
|
Tipo de migração |
Descrição |
|
migração completa de dados |
O DTS migra todos os dados existentes da instância do ApsaraDB for MongoDB de origem para o cluster PolarDB for MySQL de destino. |
|
migração incremental de dados |
Após a conclusão de uma migração completa, o DTS migra as atualizações incrementais da instância do ApsaraDB for MongoDB de origem para o cluster PolarDB for MySQL de destino. Nota
|
Permissões necessárias para contas de banco de dados
|
Banco de dados |
Migração completa de dados |
Migração incremental de dados |
Referências |
|
Origem ApsaraDB for MongoDB |
Permissões |
Permissões |
|
|
Cluster PolarDB for MySQL de destino |
Permissões |
||
Se você usar ChangeStream como método de migração incremental, a conta do banco de dados de origem exige 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, você também deve conceder à conta permissão de leitura no banco de dados admin. Para mais detalhes, consulte Permissions of the root account specified during instance creation.
Procedimento
-
Acesse a página de lista de tarefas de migração da região de destino usando um dos métodos a seguir.
From the DTS console
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.
From the DMS console
NotaAs operações podem variar de acordo com o modo e o layout do console 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 menus 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
N/A
Task Name
O DTS gera automaticamente um nome para a tarefa. Recomendamos especificar um nome descritivo para facilitar a identificação. O nome não precisa ser exclusivo.
Source Database
Select Existing Connection
Para usar uma instância de banco de dados que já foi added to the system (criada ou salva), selecione-a na lista suspensa. As informações do banco de dados abaixo serão configuradas automaticamente.
NotaNo console DMS, este parâmetro é denominado Select a DMS database instance..
Caso a instância de banco de dados não tenha sido registrada no sistema, ou se não for necessário 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 onde a instância ApsaraDB for MongoDB de origem reside.
Replicate Data Across Alibaba Cloud Accounts
Neste exemplo, utiliza-se uma instância de banco de dados vinculada à conta Alibaba Cloud atual. Selecione No.
Architecture
Neste exemplo, selecione Replica Set.
NotaSe a instância ApsaraDB for MongoDB de origem for um Sharded Cluster, você também deverá especificar a Shard account e a Shard password.
Migration Method
Selecione um método de migração de dados incremental de acordo com suas necessidades.
-
Oplog (Recomendado):
Esta opção estará disponível se um oplog estiver ativado para o banco de dados de origem.
NotaO oplog é ativado por padrão tanto em bancos de dados MongoDB autogerenciados quanto em instâncias ApsaraDB for MongoDB. Este método oferece menor latência na migração de dados incremental devido à extração mais rápida de logs. Por isso, recomendamos selecionar Oplog.
-
ChangeStream: Esta opção estará disponível se Change Streams estiverem habilitados no 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), a única opção disponível será ChangeStream.
-
Se o parâmetro Architecture do banco de dados de origem estiver definido como Sharded Cluster, não é necessário inserir a Shard account nem a Shard password.
-
Instance ID
Selecione o ID da instância ApsaraDB for MongoDB de origem.
Authentication Database
Insira o nome do banco de dados ao qual a conta de banco de dados pertence na instância ApsaraDB for MongoDB de origem. Caso não tenha sido alterado, o valor padrão é admin.
Database Account
Insira a conta de banco de dados da instância ApsaraDB for MongoDB de origem. Para mais informações sobre as permissões necessárias, consulte Database account permissions.
Database Password
Insira a senha correspondente à conta de 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 conforme o Access Method e a Architecture selecionados. As opções exibidas no console têm precedência.
Nota-
Um banco de dados MongoDB cuja Architecture seja Sharded Cluster e cujo Migration Method seja Oplog não oferece suporte a SSL-encrypted.
-
Se a origem for um banco de dados MongoDB autogerenciado (cujo Access Method não seja Alibaba Cloud Instance) com arquitetura Replica Set, ao selecionar SSL-encrypted, o DTS também permite carregar um certificado CA para verificar a conexão.
Destination Database
Select Existing Connection
Para usar uma instância de banco de dados que já foi added to the system (criada ou salva), selecione-a na lista suspensa. As informações do banco de dados abaixo serão configuradas automaticamente.
NotaNo console DMS, este parâmetro é denominado Select a DMS database instance..
Caso a instância de banco de dados não tenha sido registrada no sistema, ou se não for necessário usar uma instância registrada, configure manualmente as informações do banco de dados abaixo.
Database Type
Selecione PolarDB for MySQL.
Access Method
Selecione Alibaba Cloud Instance.
Instance Region
Selecione a região onde o cluster PolarDB for MySQL de destino reside.
Replicate Data Across Alibaba Cloud Accounts
Neste exemplo, utiliza-se uma instância de banco de dados vinculada à conta Alibaba Cloud atual. Selecione No.
PolarDB Cluster ID
Selecione o ID do cluster PolarDB for MySQL de destino.
Database Account
Insira a conta de banco de dados do cluster PolarDB for MySQL de destino. Para mais informações sobre as permissões necessárias, consulte Database account permissions.
Database Password
Insira a senha da conta de banco de dados.
Encryption
Selecione uma opção de acordo com os requisitos do seu negócio. Para mais informações sobre o recurso de criptografia SSL, consulte Enable SSL encryption.
-
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ço 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, a fim de permitir o acesso pelos servidores 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 autogerenciado (ou seja, o Access Method não for Alibaba Cloud Instance), clique também em Test Connectivity na caixa de diálogo CIDR Blocks of DTS Servers que será exibida.
-
Configure os objetos da tarefa.
-
Na página Configure Objects, configure os objetos que deseja migrar.
Parâmetro
Descrição
Migration Types
Para realizar apenas uma migração completa, selecione Full Data Migration.
Para executar uma migração sem tempo de inatividade, selecione Full Data Migration e Incremental Data Migration.
NotaSe você não selecionar Incremental Data Migration, não grave novos dados na instância de source durante a migração para garantir a consistência dos dados.
Processing Mode of Conflicting Tables
Precheck and Report Errors: Verifica se existem coleções com nomes idênticos no banco de dados de destino. Se não houver, a pré-verificação é aprovada. Se houver coleções com nomes iguais, um erro é reportado durante a pré-verificação e a tarefa de migração 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 dessa coleção no destino. Para mais informações, consulte Object name mapping.
Ignore Errors and Proceed: Ignora a verificação de coleções com nomes idênticos.
AvisoSelecionar Ignore Errors and Proceed pode causar inconsistência de dados e riscos ao negócio. 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 source, o registro do destino é mantido e o do source não é migrado.
A inicialização dos dados pode falhar, apenas parte dos dados pode ser migrada ou a migração pode falhar completamente.
Capitalization of Object Names in Destination Instance
Configure a política de diferenciação de maiúsculas e minúsculas para os nomes dos objetos migrados — como bancos de dados, tabelas e colunas — na instância de destino. Por padrão, a opção DTS default policy é selecionada. Você também pode optar por manter a diferenciação consistente com a política padrão do banco de dados de source ou de destino. Para mais informações, consulte Case sensitivity of object names in the destination database.
Source Objects
Na caixa Source Objects, clique nos objetos a migrar e, em seguida, clique em
para movê-los para a caixa Selected Objects.NotaÉ possível selecionar objetos no nível de coleção.
Selected Objects
-
Edite o mapeamento do nome do banco de dados.
-
Na caixa Selected Objects, clique com o botão direito no banco de dados de source que contém as coleções a migrar.
Neste exemplo, o nome do banco de dados é dtsdb, localizado na raiz da estrutura em árvore.
-
Altere o campo Schema Name para o nome do banco de dados que receberá os dados no cluster PolarDB for MySQL de destino. No painel Edit Schema, altere o Schema Name para o nome de destino (por exemplo,
dtsdb). -
Clique em OK.
-
-
Edite o mapeamento do nome da tabela.
-
Na caixa Selected Objects, clique com o botão direito na coleção que deseja migrar.
Por exemplo, se a estrutura em árvore no painel Selected Objects for dtsdb > Table > class, clique com o botão direito na coleção de destino.
-
Altere o campo Table Name para o nome da tabela que receberá os dados no cluster PolarDB for MySQL de destino. Após clicar com o botão direito, modifique o Table Name na página Edit Table que será exibida (por exemplo,
class). Observação: após editar o nome da tabela ou das colunas, esses nomes no banco de dados de destino serão alterados para os novos valores. -
Optional: Defina condições de filtro para a migração completa de dados. Para mais informações, consulte Set filter conditions. Na caixa de texto Filter Conditions, insira uma instrução de filtro. A sintaxe difere de uma cláusula SQL WHERE padrão. Por exemplo, para filtrar por ID de usuário, utilize:
{"_id": {$gt:"user100844658590795**",$lte:"user101674868045948**"}}, onde$gtsignifica maior que e$ltesignifica menor ou igual a. -
Optional: Na seção Select DDL and DML Operations to Be Synchronized, selecione as operações para a migração incremental de dados. Na seção Select DML Operations to Synchronize, você pode selecionar insert, update e delete.
-
-
Configure os campos a migrar do MongoDB.
Por padrão, o DTS mapeia os dados das coleções a serem migradas e configura expressões na coluna Parameter Value. Verifique se as expressões atendem aos seus requisitos e configure parâmetros como Column Name, Type, Length e Precision.
Importante-
Atribua o valor
bson_value("_id")à coluna de chave primária da tabela de destino. -
Ao configurar uma expressão
bson_value(), especifique o caminho até o subcampo de nível mais baixo na hierarquia. Caso contrário, podem ocorrer perda de dados ou falha na tarefa.
-
Na expressão
bson_value()da coluna Parameter Value, verifique o nome do campo correspondente no MongoDB.O texto entre aspas (
"") é o nome do campo no MongoDB. Por exemplo, se a expressão forbson_value("age"), essa linha corresponde ao campoageno MongoDB. -
Optional: Exclua os campos que não precisam ser migrados.
NotaPara excluir um campo, clique no ícone
na linha correspondente. -
Configure os campos a migrar.
Os próximos passos dependem de a expressão padrão
bson_value()atender ou não aos seus requisitos.Custom expressions
NotaAplicável a campos com estrutura hierárquica, como relações pai-filho.
-
Na coluna Actions, clique no ícone
na linha correspondente. -
Clique em + Add Column.
-
Configure os campos Column Name, Type, Length e Precision.
ImportanteVerifique se os tipos de dados da tabela de destino são compatíveis com os dados do MongoDB de source. Para mais informações sobre mapeamentos de tipos de dados, consulte Data type mapping.
-
Na caixa de texto abaixo de Parameter Value, insira a expressão
bson_value(). Para mais informações, consulte Assignment configuration examples. -
Repita esses passos para mapear todos os campos relevantes.
Default expressions
-
Insira o Column Name.
NotaEste é o nome da coluna na tabela que receberá os dados no cluster PolarDB for MySQL de destino.
-
Selecione o Type de dados para a coluna.
ImportanteVerifique se os tipos de dados da tabela de destino são compatíveis com os dados do MongoDB de source. Para mais informações sobre mapeamentos de tipos de dados, consulte Data type mapping.
-
Optional: Configure os campos Length e Precision para os dados da coluna.
-
Repita esses passos 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 sendo necessário selecionar um. Caso precise de tarefas mais estáveis, adquira um dedicated cluster para executar as tarefas de migração do DTS.
Select the engine type of the destination database
Selecione o mecanismo de armazenamento para o banco de dados de destino conforme suas necessidades.
-
InnoDB: O mecanismo de armazenamento padrão.
-
X-Engine: Um mecanismo de armazenamento para bancos de dados de processamento de transações online (OLTP).
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 source ou de destino falhar, o DTS reporta um erro e inicia imediatamente as tentativas de reconexão. A duração padrão para novas tentativas é de 720 minutos. Você pode personalizar esse valor entre 10 e 1440 minutos. Recomenda-se definir uma duração superior a 30 minutos. Se o DTS restabelecer a conexão dentro do período especificado, a tarefa de migração é retomada automaticamente. Caso contrário, a tarefa falha.
NotaPara múltiplas instâncias do DTS que compartilham o mesmo source ou destino, o tempo de nova tentativa de rede é determinado pela configuração da última tarefa criada.
Como a tarefa é cobrada durante o período de novas tentativas de conexão, recomenda-se personalizar o tempo de nova tentativa de acordo com as necessidades do negócio ou liberar a instância do DTS assim que as instâncias de banco de dados de source e destino forem liberadas.
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 na execução de DDL ou DML — no banco de dados de source ou de destino, o DTS reporta um erro e inicia imediatamente as tentativas de nova execução. A duração padrão para novas tentativas é de 10 minutos. Você pode personalizar esse valor entre 1 e 1440 minutos. Recomenda-se definir uma duração superior a 10 minutos. Se as operações forem concluídas com êxito dentro do período especificado, a tarefa de migração é retomada automaticamente. Caso contrário, a tarefa falha.
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 source e de destino, o que pode aumentar a carga sobre eles. Se necessário, ative o limitador de velocidade para a tarefa de migração completa. Defina os parâmetros 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 somente se você selecionar Full Data Migration em Migration Types.
Você também pode 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
Especifica se o tipo de dado da chave primária
_idé único dentro da mesma coleção para os dados a serem migrados.Importante-
Escolha uma opção de acordo com seus requisitos. Caso contrário, podem ocorrer perdas de dados.
-
Este parâmetro está disponível somente se você selecionar Full Data Migration em Migration Types.
-
Yes: O tipo de dado é único. Durante a migração completa, o DTS não varre os tipos de dados das chaves primárias nos dados de source. Para uma única coleção, o DTS migra apenas os dados correspondentes a um tipo de dado de chave primária.
-
No: O tipo de dado não é único. Durante a migração completa, o DTS varre os tipos de dados das chaves primárias nos dados de source 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. Configure os parâmetros 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 somente se você selecionar Incremental Data Migration em Migration Types.
Você também pode 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 conforme suas necessidades. Nenhuma tag é necessária para este exemplo.
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 as 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
Selecione se deseja definir alertas e receber notificações de alerta conforme as necessidades do negócio.
No: Não define um alerta.
Yes: Configure alertas definindo um alert threshold e uma alert notifications. Se uma migração falhar ou a latência ultrapassar 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 de API, posicione o ponteiro sobre o botão Next: Save Task Settings and Precheck e clique em Preview OpenAPI parameters no balão exibido.
Se não precisar visualizar ou já tiver concluído a visualização dos parâmetros de API, clique em Next: Save Task Settings and Precheck na parte inferior da página.
NotaAntes de a tarefa de migração ser iniciada, 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 com falha, corrija o problema com base na orientação exibida e execute a pré-verificação novamente.
-
Se um aviso for reportado durante a pré-verificação:
Para itens que não podem ser ignorados, clique em View Details ao lado do item com falha, corrija o problema com base na orientação exibida e execute a pré-verificação novamente.
Para itens que podem ser ignorados, clique em Confirm Alert Details, Ignore, OK e Precheck Again para ignorar o item de aviso e executar a pré-verificação novamente. Optar por ignorar um aviso pode causar problemas como inconsistência de dados e representar riscos ao negócio.
-
Adquira a instância.
Quando o Success Rate atingir 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 pertencerá. O valor padrão é o grupo de recursos padrão. Para mais informações, consulte What is resource management?
Instance Class
O DTS oferece especificações de migração com diferentes níveis de desempenho. A especificação de link afeta a velocidade da migração. Selecione uma especificação de acordo com o seu cenário de negócio. 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 exibida, 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 é interrompida automaticamente após a conclusão da migração completa. Após a interrupção, o Status da tarefa muda para Completed.
Se a tarefa de migração incluir migração incremental, ela não é interrompida automaticamente e continua em execução. Enquanto a tarefa de migração incremental estiver em andamento, o Status da tarefa será Running.
Mapeamento de tipos de dados
|
Tipo MongoDB |
Tipo PolarDB for MySQL |
|
ObjectId |
VARCHAR |
|
String |
VARCHAR |
|
Document |
VARCHAR |
|
DbPointer |
VARCHAR |
|
Array |
VARCHAR |
|
Date |
DATETIME |
|
Timestamp |
DATETIME |
|
Double |
DOUBLE |
|
32-bit integer (BsonInt32) |
INTEGER |
|
64-bit integer (BsonInt64) |
BIGINT |
|
Decimal128 |
DECIMAL |
|
Boolean |
BOOLEAN |
|
Null |
VARCHAR |
Exemplo de configuração de atribuição
Source MongoDB data structure
{
"_id":"62cd344c85c1ea6a2a9f****",
"person":{
"name":"neo",
"age":26,
"sex":"male"
}
}
Target table schema
|
Parameter |
Type |
|
mongo_id |
varchar Nota
Coluna de chave primária. |
|
person_name |
varchar |
|
person_age |
decimal |
New columns
Especifique o caminho hierárquico completo na expressão bson_value() para evitar perda de dados ou falha na tarefa. Por exemplo, se você definir a expressão como bson_value("person"), o DTS não conseguirá sincronizar os dados incrementais dos subcampos do objeto person (como name, age e sex) para o destino.
|
Parameter |
Type |
Value |
|
mongo_id |
STRING |
bson_value("_id") |
|
person_name |
STRING |
bson_value("person","name") |
|
person_age |
DECIMAL |
bson_value("person","age") |