Todos os produtos
Search
Central de documentação

Data Transmission Service:Migrar dados do ApsaraDB RDS for PostgreSQL para o ApsaraDB for SelectDB

Última atualização: Jun 27, 2026

O Data Transmission Service (DTS) permite migrar dados de bancos de dados PostgreSQL, como instâncias auto-gerenciadas ou ApsaraDB RDS for PostgreSQL, para o ApsaraDB for SelectDB, destinado a análises de dados em larga escala. Este tópico detalha todo o fluxo de trabalho de migração, incluindo migração de schema, migração completa de dados e migração incremental opcional.

Pré-requisitos

Antes de começar, verifique se você tem:

Escolher um tipo de migração

O DTS oferece duas estratégias de migração. Use as orientações abaixo para escolher a mais adequada antes de configurar a tarefa.

Tipo de migração

Quando usar

Faturamento

Migração de schema + migração completa de dados

Migração única com tempo de inatividade aceitável. Interrompa as gravações na origem antes de iniciar.

Gratuito

Migração de schema + migração completa + migração incremental

Migração sem tempo de inatividade. O DTS mantém o destino sincronizado enquanto a origem continua recebendo gravações.

A migração incremental é cobrada. Consulte Visão geral do faturamento.

Importante

Se você selecionar a migração incremental de dados, não grave novos dados na instância de origem durante o período de migração, pois isso pode causar inconsistência nos dados.

Limitações

Revise todas as limitações aplicáveis ao seu cenário antes de iniciar.

Requisitos do banco de dados de origem

  • Largura de banda: O servidor que hospeda o banco de dados de origem deve ter largura de banda de saída suficiente. Caso contrário, a velocidade de migração de dados será afetada.

  • Tabelas com chaves primárias ou restrições UNIQUE: Garanta que os campos da tabela sejam únicos. Do contrário, podem existir dados duplicados no banco de dados de destino.

    Se o DTS não criar a tabela de destino que recebe os dados (ou seja, Schema Migration não estiver selecionado), garanta que a tabela de destino tenha a mesma chave primária ou restrição UNIQUE não nula da tabela de origem. Caso contrário, dados duplicados podem surgir no banco de dados de destino.
  • Tabelas sem chave primária ou restrição UNIQUE: Selecione Schema Migration ao configurar a tarefa e defina o mecanismo da tabela como duplicate.

  • Nome do banco de dados: O nome do banco de dados não pode conter hífen (-). Por exemplo, dts-testdata não é suportado.

  • Quantidade de tabelas: Ao migrar no nível de tabela com mapeamento de nomes de colunas, uma única tarefa suporta no máximo 1.000 tabelas. Para migrações maiores, divida as tabelas em várias tarefas ou migre o banco de dados inteiro.

  • Operações DDL: Não execute operações DDL no banco de dados de origem durante a migração completa de dados.

  • Tamanho dos dados: Se uma única linha de dados de alteração incremental exceder 256 MB, a instância de migração falhará e não poderá ser recuperada. Será necessário reconfigurar a instância de migração.

  • Write-Ahead Logging (WAL):

    • Defina wal_level como logical.

    • Para migração apenas incremental: retenha logs WAL por mais de 24 horas.

    • Para migração completa + incremental: retenha logs WAL por pelo menos 7 dias. É possível alterar o período de retenção de logs para mais de 24 horas após a conclusão da migração completa.

    Importante

    Se a retenção de logs WAL for inferior à exigida pelo DTS e a tarefa falhar devido à falta de logs, essa situação não será coberta pelo Acordo de Nível de Serviço (SLA) do DTS.

  • Failover de Slot de Replicação Lógica: A instância RDS PostgreSQL deve suportar e ter o Failover de Slot de Replicação Lógica ativado. Consulte Failover de Slot de Replicação Lógica.

  • Transações de longa duração: Se o banco de dados de origem tiver transações de longa duração e a tarefa incluir migração incremental, os dados WAL acumularão até que a transação seja confirmada. Monitore o espaço em disco da origem para evitar que ele se esgote.

  • Atualizações de versão principal: Não atualize a versão principal do banco de dados de origem enquanto a instância de migração estiver em execução. Essa ação causa falha permanente na instância.

Requisitos do SelectDB de destino

  • As tabelas devem usar o mecanismo Unique ou Duplicate. Consulte Modelo de Dados para obter orientações.

  • Se a tabela de destino utilizar o mecanismo Unique, todas as chaves únicas da tabela de destino também devem existir na tabela de origem e estar incluídas nos objetos de migração.

  • Os nomes de bancos de dados e tabelas devem começar com uma letra. Use o recurso de mapeamento de nomes de objetos para renomear aqueles que não atendem a esse requisito.

  • Renomeie nomes de objetos contendo caracteres chineses para equivalentes ASCII usando o mapeamento de nomes de objetos. Caso contrário, a tarefa pode falhar.

  • Uma instância de migração pode migrar apenas um banco de dados. Para migrar vários bancos de dados, configure uma instância de migração separada para cada um.

  • Não adicione nós de backend (BE) ao banco de dados SelectDB durante a migração. Se a tarefa falhar por esse motivo, reinicie a instância de migração para retomar.

  • Não crie clusters na instância SelectDB de destino durante a migração. Se a tarefa falhar por esse motivo, reinicie a instância de migração para retomar.

  • O DTS valida o conteúdo dos dados, mas não valida metadados como Sequences. Valide esses metadados manualmente.

Requisitos de migração incremental

  • Execute o seguinte comando em cada tabela a ser migrada antes de gravar dados na origem:

    ALTER TABLE schema.table REPLICA IDENTITY FULL;

    Substitua schema e table pelos nomes reais do schema e da tabela. Execute este comando fora dos horários de pico e não bloqueie as tabelas durante a execução para evitar deadlocks.

    Se você ignorar o item de pré-verificação relacionado, o DTS executará automaticamente este comando durante a inicialização da instância. Isso se aplica quando a instância é executada pela primeira vez, ou quando a granularidade do objeto de migração está definida como Schema e uma nova tabela é criada ou uma tabela existente é reconstruída usando o comando RENAME.
  • As operações SQL suportadas para migração incremental são:

    Tipo de operação

    Instruções SQL

    DML

    INSERT, UPDATE, DELETE

    DDL

    ADD COLUMN, DROP COLUMN

  • O DTS converte instruções UPDATE e DELETE em instruções INSERT para tabelas que usam o mecanismo Duplicate.

  • O DTS não consegue migrar tabelas de extensão TimescaleDB ou tabelas com herança entre schemas.

  • Ao migrar tabelas particionadas, inclua tanto a tabela pai quanto todas as tabelas filhas nos objetos de migração. A tabela pai em si não armazena dados, mas excluí-la causa inconsistência de dados.

  • Para cenários de mesclagem de múltiplas tabelas (várias tabelas de origem para uma tabela de destino), todas as tabelas de origem devem ter schemas idênticos.

Casos especiais

Cenário

Requisito

Origem é ApsaraDB RDS for PostgreSQL

Não altere o endpoint ou a zona da instância durante a migração.

Origem é uma instância PostgreSQL auto-gerenciada

Um failover primário/secundário causa falha na tarefa de migração de dados. Além disso, certifique-se de que max_wal_senders e max_replication_slots sejam maiores que o total de slots de replicação usados mais o número de instâncias DTS que você planeja criar.

Origem é Google Cloud Platform Cloud SQL for PostgreSQL

Use uma conta com permissões cloudsqlsuperuser. Migre apenas objetos que esta conta possa gerenciar ou conceda propriedade com: GRANT <owner_of_object_to_migrate> TO <source_database_account_for_task>

Comportamento interno do DTS

Durante a migração, o DTS cria os seguintes objetos no banco de dados de origem. Não os exclua — eles são removidos automaticamente quando a instância DTS é liberada:

  • Tabelas temporárias: public.dts_pg_class, public.dts_pg_attribute, public.dts_pg_type, public.dts_pg_enum, public.dts_postgres_heartbeat, public.dts_ddl_command, public.dts_args_session, public.aliyun_dts_instance

  • Slot de replicação (prefixo: dts_sync_): Usado para buscar logs incrementais dos últimos 15 minutos. O DTS limpa este slot quando a migração falha ou a instância é liberada.

    Se você alterar a senha da conta do banco de dados de origem ou remover endereços IP do DTS da lista de permissões durante a migração, o slot de replicação não poderá ser limpo automaticamente. Limpe-o manualmente para evitar acúmulo em disco. Se ocorrer um failover primário/secundário, faça login no banco de dados secundário para realizar a limpeza.

Criar uma tarefa de migração

Etapa 1: Acessar a página Data Migration

Use um dos consoles a seguir para acessar a página Data Migration.

Console do DTS

  1. Faça login no console do DTS

  2. No painel de navegação à esquerda, clique em Data Migration.

  3. No canto superior esquerdo, selecione a região onde a instância de migração residirá.

Console do DMS

Nota

As etapas reais podem variar dependendo do modo e layout do console do DMS. Consulte Modo simples e Personalizar o layout e estilo do console do DMS.

  1. Faça login no console do DMS

  2. Na barra de navegação superior, passe o ponteiro sobre Data + AI > DTS (DTS) > Data Migration.

  3. Na lista suspensa à direita de Data Migration Tasks, selecione a região onde a instância de migração residirá.

Etapa 2: Configurar bancos de dados de origem e destino

Clique em Create Task para abrir a página de configuração da tarefa e configure os parâmetros a seguir.

Nome da tarefa

Parâmetro

Descrição

Task Name

O DTS gera um nome automaticamente. Especifique um nome descritivo para identificar a tarefa. O nome não precisa ser único.

Banco de dados de origem

Parâmetro

Descrição

Select Existing Connection

Se a instância de origem já estiver registrada no DTS, selecione-a na lista. O DTS preenche os parâmetros restantes automaticamente. Caso contrário, configure os parâmetros abaixo.

Database Type

Selecione PostgreSQL.

Access Method

Selecione Alibaba Cloud Instance.

Instance Region

Selecione a região onde a instância RDS PostgreSQL de origem reside.

Replicate Data Across Alibaba Cloud Accounts

Selecione No se as instâncias de origem e destino pertencerem à mesma conta Alibaba Cloud.

Instance ID

Selecione o ID da instância RDS PostgreSQL de origem.

Database Name

Insira o nome do banco de dados que contém os objetos a serem migrados.

Database Account

Insira a conta do banco de dados da instância de origem. Consulte Pré-requisitos para ver as permissões necessárias.

Database Password

Insira a senha da conta do banco de dados.

Banco de dados de destino

Parâmetro

Descrição

Select Existing Connection

Se a instância de destino já estiver registrada no DTS, selecione-a na lista. O DTS preenche os parâmetros restantes automaticamente. Caso contrário, configure os parâmetros abaixo.

Database Type

Selecione SelectDB.

Access Method

Selecione Alibaba Cloud Instance.

Instance Region

Selecione a região onde a instância SelectDB de destino reside.

Replicate Data Across Alibaba Cloud Accounts

Selecione No se ambas as instâncias pertencerem à mesma conta Alibaba Cloud.

Instance ID

Selecione o ID da instância SelectDB de destino.

Database Account

Insira a conta do banco de dados da instância de destino. Consulte Pré-requisitos para ver as permissões necessárias.

Database Password

Insira a senha da conta do banco de dados.

Etapa 3: Testar conectividade e configurar objetos

  1. Clique em Test Connectivity and Proceed.

    Certifique-se de que os blocos CIDR dos servidores DTS foram adicionados às configurações de segurança dos bancos de dados de origem e destino. Consulte Adicionar endereços IP do servidor DTS a uma lista de permissões .
  2. Na página Configure Objects, defina os seguintes parâmetros:

    Parâmetro

    Descrição

    Migration Types

    Selecione com base na sua estratégia de migração. Consulte Escolher um tipo de migração. Para migração sem tempo de inatividade, selecione Schema Migration, Full Data Migration e Incremental Data Migration. Para migração única, selecione Schema Migration e Full Data Migration.

    Processing Mode of Conflicting Tables

    Precheck and Report Errors (padrão): A tarefa falha durante a pré-verificação se existirem tabelas com o mesmo nome no destino. Ignore Errors and Proceed: O DTS ignora a verificação. Use com cautela — pode ocorrer inconsistência de dados se os schemas forem diferentes.

    Capitalization of Object Names in Destination Instance

    Determina como os nomes de bancos de dados, tabelas e colunas são capitalizados no destino. DTS default policy é selecionado por padrão. Consulte Especificar a capitalização de nomes de objetos na instância de destino.

    Source Objects

    Selecione objetos para migrar no nível de schema ou tabela e clique no ícone para adicioná-los aos Selected Objects.

    Selected Objects

    Clique com o botão direito em um objeto para renomeá-lo, definir condições de filtro ou selecionar operações SQL para migração incremental. Para definir o parâmetro bucket_count, clique com o botão direito em uma tabela, vá para Parameter Settings, ative a configuração e especifique um valor. Para remover um objeto, clique nele e depois clique no ícone de remoção.

    - O parâmetro bucket_count deve ser um número inteiro positivo. O valor padrão é auto . - Se você renomear um objeto usando o mapeamento de nomes de objetos, outros objetos dependentes dele podem falhar na migração. - Para filtrar linhas, clique com o botão direito em uma tabela em Selected Objects e especifique condições WHERE. Consulte Especificar condições de filtro .
  3. Clique em Next: Advanced Settings e configure os seguintes parâmetros opcionais:

    Parâmetro

    Descrição

    Dedicated Cluster for Task Scheduling

    Por padrão, as tarefas são executadas no cluster compartilhado. Para maior estabilidade, adquira um cluster dedicado. Consulte O que é um cluster dedicado do DTS.

    Retry Time for Failed Connections

    Tempo durante o qual o DTS tenta novamente antes de marcar a tarefa como falha devido a problemas de conexão. Intervalo: 10–1.440 minutos. Padrão: 720 minutos. Defina para pelo menos 30 minutos.

    Retry Time for Other Issues

    Tempo durante o qual o DTS tenta novamente antes de falhar devido a erros DDL ou DML. Intervalo: 1–1.440 minutos. Padrão: 10 minutos. Deve ser menor que Retry Time for Failed Connections.

    Enable Throttling for Full Data Migration

    Limita o throughput de leitura/gravação durante a migração completa para reduzir a carga no banco de dados. Configure Queries per second (QPS) to the source database, RPS of Full Data Migration e Data migration speed for full migration (MB/s).

    Enable Throttling for Incremental Data Migration

    Limita o throughput durante a migração incremental. Configure RPS of Incremental Data Migration e Data migration speed for incremental migration (MB/s).

    Environment Tag

    Opcional. Adicione uma tag à instância para identificação do ambiente.

    Configure ETL

    Selecione Yesconfigurações de notificação de alerta para ativar o recurso de extração, transformação e carga (ETL). Consulte Configurar ETL em uma tarefa de migração ou sincronização de dados.

    Monitoring and Alerting

    Selecione Yes para receber alertas quando a tarefa falhar ou a latência de migração exceder um limiar. Consulte Configurar monitoramento e alertas.

  4. (Opcional) Clique em Next: Configure Database and Table Fields para definir a Primary Key Column, Distribution Key e Engine para as tabelas de destino.

    - Esta etapa está disponível apenas se você selecionou Schema Migration para Migration Types . Defina Definition Status como All para editar todas as tabelas. - A Primary Key Column pode ser uma chave primária composta. Selecione uma ou mais colunas da Primary Key Column como a Distribution Key . - Para tabelas sem chave primária ou restrição UNIQUE, defina Engine como duplicate . Caso contrário, a instância de migração pode falhar ou dados podem ser perdidos.

Etapa 4: Executar a pré-verificação

  1. 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 .
  2. Aguarde a conclusão da pré-verificação. Se algum item falhar:

    • Clique em View Details ao lado de cada item com falha, resolva o problema e clique em Precheck Again.

    • Para itens de alerta que podem ser ignorados, clique em Confirm Alert Details, depois clique em Ignore > OK > Precheck Again.

    Importante

    Ignorar itens de alerta pode causar inconsistência de dados. Prossiga com cautela.

Etapa 5: Adquirir a instância e iniciar a migração

  1. Aguarde até que a Success Rate atinja 100% e clique em Next: Purchase Instance.

  2. Na página Purchase Instance, configure a classe da instância:

    Parâmetro

    Descrição

    Resource Group

    O grupo de recursos para a instância de migração. Padrão: default resource group. Consulte O que é Resource Management?

    Instance Class

    Controla a velocidade de migração. Consulte Classes de instância de migração de dados.

  3. Leia e aceite os Data Transmission Service (Pay-as-you-go) Service Terms, depois clique em Buy and Start > OK.

Verificar status da migração

Após o início da tarefa, acesse a página Data Migration para monitorar o progresso:

  • Apenas migração completa: A tarefa para automaticamente quando concluída. O Status muda para Completed.

  • Migração completa + incremental: A fase incremental é executada continuamente. O Status mostra Running. Pare a tarefa manualmente quando estiver pronto para alternar para o destino.

Considerações de desempenho

  • Durante a migração completa, execute a tarefa quando a carga de CPU na origem e no destino estiver abaixo de 30%.

  • O DTS usa sincronização em lote para migração incremental. Por padrão, o DTS grava em cada objeto no máximo uma vez a cada 5 segundos, resultando em uma latência de sincronização típica dentro de 10 segundos. Para reduzir a latência, ajuste o parâmetro selectdb.reservoir.timeout.milliseconds no console do DTS. Intervalo válido: 1.000–10.000 milissegundos.

    Reduzir o intervalo de lote aumenta a frequência de gravação no destino, o que pode elevar a carga do destino e o tempo de resposta de gravação. Ajuste conforme a capacidade do seu destino.
  • Se a instância de migração falhar, o suporte do DTS tentará recuperá-la dentro de 8 horas. A recuperação pode envolver reiniciar a instância ou ajustar seus parâmetros. Apenas os parâmetros da instância DTS são modificados — os parâmetros do banco de dados não são alterados.

Mapeamentos de tipos de dados

A tabela a seguir mostra como os tipos de dados do PostgreSQL são mapeados para os tipos de dados do SelectDB após a migração.

Categoria Tipo de dados PostgreSQL Tipo de dados SelectDB Observações
Numérico SMALLINT SMALLINT
INTEGER INT
BIGINT BIGINT
DECIMAL DECIMAL
NUMERIC DECIMAL
REAL DOUBLE
DOUBLE DOUBLE
SMALLSERIAL SMALLINT
SERIAL INT
BIGSERIAL BIGINT
Monetário MONEY STRING
Caractere CHAR(n), VARCHAR(n) VARCHAR Convertido para VARCHAR(4*n) para evitar perda de dados. Se nenhum comprimento for especificado, o padrão é VARCHAR(65533). Se o comprimento exceder 65533, convertido para STRING.
TEXT STRING
Binário BYTEA STRING
Data e hora TIMESTAMP [(P)] WITHOUT TIME ZONE DATETIMEV2
TIMESTAMP [(P)] WITH TIME ZONE DATETIMEV2
DATE DATEV2
TIME [(P)] WITHOUT TIME ZONE VARCHAR(50)
TIME [(P)] WITH TIME ZONE VARCHAR(50)
INTERVAL [FIELDS] [(P)] STRING
Booleano BOOLEAN BOOLEAN
Geométrico POINT, LINE, LSEG, BOX, PATH, POLYGON, CIRCLE STRING
Endereço de rede CIDR, INET, MACADDR, MACADDR8 STRING
Busca de texto TSVECTOR STRING
XML XML STRING
JSON JSON JSON

Colunas adicionais para o modelo Duplicate

Para tabelas de destino que usam o modelo Duplicate, o DTS adiciona automaticamente as seguintes colunas. Use essas colunas para identificar e remover dados duplicados após novas tentativas ou reinicializações.

Coluna

Tipo de dados

Valor padrão

Descrição

_is_deleted

Int

0

0 para operações INSERT e UPDATE; 1 para operações DELETE.

_version

Bigint

0

0 para migração completa. Para migração incremental, o timestamp em segundos do log binário de origem.

_record_id

Bigint

0

0 para migração completa. Para migração incremental, um ID exclusivo de incremento automático que identifica cada entrada de log.

Dados duplicados podem aparecer nos seguintes casos:

  • Ocorreu uma operação de nova tentativa na instância de migração.

  • A instância de migração foi reiniciada.

  • Duas ou mais operações DML foram realizadas na mesma linha após o início da migração.

Para tabelas que usam o mecanismo Duplicate, o DTS converte instruções UPDATE e DELETE em instruções INSERT.

Próximos passos