Todos os produtos
Search
Central de documentação

ApsaraDB RDS:Migrar instâncias usando o DTS

Última atualização: Jun 26, 2026

Migre dados entre instâncias do ApsaraDB RDS for PostgreSQL com o Data Transmission Service (DTS). O DTS oferece suporte à migração de schema, migração completa de dados e migração incremental de dados. A execução combinada desses três tipos permite que sua aplicação permaneça online durante todo o processo, com tempo de inatividade mínimo.

Pré-requisitos

Antes de começar, verifique se:

  • As instâncias de origem e de destino do ApsaraDB RDS for PostgreSQL já foram criadas. Consulte Criar uma instância.

  • A versão do banco de dados de destino é igual ou superior à da origem. Versões anteriores no destino podem causar problemas de compatibilidade.

  • A instância de destino tem mais espaço de armazenamento disponível que o tamanho total dos dados na instância de origem.

Para verificar as versões de banco de dados de origem e de destino suportadas, consulte Visão geral dos cenários de migração de dados .

Tipos de migração

O DTS oferece três tipos de migração combináveis conforme suas necessidades.

Tipo de migração

Descrição

Migração de schema

Copia os schemas dos objetos selecionados (tabelas, views, índices, entre outros) da origem para o destino.

Migração completa de dados

Copia todos os dados existentes da origem para o destino.

Migração incremental de dados

Replica continuamente as alterações de dados da origem para o destino após a conclusão da migração completa, mantendo o destino sincronizado enquanto a aplicação está em execução.

Escolha uma estratégia de migração:

  • Apenas migração completa (com tempo de inatividade): Selecione Schema Migration e Full Data Migration. Interrompa as gravações na origem antes do início da migração para garantir a consistência dos dados.

  • Migração online (tempo de inatividade mínimo): Selecione Schema Migration, Full Data Migration e Incremental Data Migration. Sua aplicação permanece online durante a migração. Interrompa as gravações na origem apenas no momento do cutover.

Objetos suportados

Os seguintes tipos de objetos podem ser migrados:

  • SCHEMA e TABLE — incluindo PRIMARY KEY, UNIQUE KEY, FOREIGN KEY, tipos de dados integrados e restrições DEFAULT.

  • VIEW

  • PROCEDURE — somente PostgreSQL V11 ou posterior.

  • FUNCTION, RULE, SEQUENCE, EXTENSION, TRIGGER, AGGREGATE, INDEX, OPERATOR, DOMAIN

Operações SQL suportadas para migração incremental

Tipo de operação

Instruções suportadas

DML

INSERT, UPDATE, DELETE

DDL

Consulte os detalhes abaixo.

Detalhes da migração de DDL:

A migração de DDL está disponível apenas para tarefas criadas após 1º de outubro de 2020.

Para migrar operações DDL em tarefas criadas antes de 12 de maio de 2023, crie primeiro um trigger e uma função no banco de dados de origem. Consulte Usar triggers e funções para implementar migração incremental de DDL para bancos de dados PostgreSQL.

Se o banco de dados de origem utilizar uma conta privilegiada e a versão secundária do mecanismo for 20210228 ou posterior, haverá suporte às seguintes instruções DDL:

  • CREATE TABLE, DROP TABLE

  • ALTER TABLE (RENAME TABLE, ADD COLUMN, ADD COLUMN DEFAULT, ALTER COLUMN TYPE, DROP COLUMN, ADD CONSTRAINT, ADD CONSTRAINT CHECK, ALTER COLUMN DROP DEFAULT)

  • TRUNCATE TABLE — a origem deve ser PostgreSQL V11 ou posterior.

  • CREATE INDEX ON TABLE

Limitações da migração de DDL:

  • Dados do tipo BIT não são migrados durante a migração incremental.

  • Modificadores CASCADE e RESTRICT em instruções DDL não são migrados.

  • Instruções DDL executadas em uma sessão onde SET session_replication_role = replica foi executado não são migradas.

  • Instruções DDL invocadas por meio de funções não são migradas.

  • Se um envio em lote contiver instruções DML e DDL, as instruções DDL serão ignoradas.

  • Se um envio em lote contiver instruções DDL sem suporte para migração, essas instruções serão ignoradas.

Permissões necessárias

Conceda as seguintes permissões às contas de banco de dados utilizadas pelo DTS. Siga o princípio do menor privilégio: evite usar uma conta de superusuário, a menos que seja impossível conceder as permissões necessárias separadamente.

Banco de dados

Migração de schema

Migração completa de dados

Migração incremental de dados

ApsaraDB RDS for PostgreSQL de origem

USAGE no schema pg_catalog

SELECT nos objetos a serem migrados

Conta privilegiada proprietária do banco de dados. Para PostgreSQL 9.4 com migração apenas de DML, somente a permissão REPLICATION é necessária.

ApsaraDB RDS for PostgreSQL de destino

CREATE e USAGE nos objetos a serem migrados

Permissões de proprietário do schema

Para criar contas e conceder permissões, consulte Criar uma conta e Criar um banco de dados.

Limitações

Revise estas limitações antes de configurar uma tarefa de migração. Ignorá-las pode causar falhas na tarefa ou inconsistência de dados.

Limitações do banco de dados de origem

Limitação

Detalhes

Impacto se violada

Chave primária ou restrição única obrigatória

As tabelas devem ter restrições PRIMARY KEY ou UNIQUE com todos os campos únicos. Se uma tabela no destino foi criada sem a migração de schema do DTS, certifique-se de que sua restrição PRIMARY KEY ou NOT NULL UNIQUE corresponda à tabela de origem. As tabelas a serem migradas também devem ter restrições PRIMARY KEY, FOREIGN KEY, UNIQUE ou CHECK.

O destino pode conter registros duplicados.

Proibido uso de hífens no nome do banco de dados

O nome do banco de dados de origem não pode conter hífens (-). Por exemplo, dts-testdata é inválido. Renomeie o banco de dados antes da migração.

Falha ao iniciar a tarefa de migração.

Limite de 1.000 tabelas por tarefa ao editar nomes de tabelas

Se você selecionar tabelas como objetos de migração e precisar renomear tabelas ou colunas no destino, uma única tarefa poderá migrar até 1.000 tabelas. Para mais de 1.000 tabelas, crie várias tarefas ou migre o banco de dados inteiro.

Ocorre erro de solicitação.

Sem tabelas temporárias ou procedimentos internos em linguagem C

O DTS não migra tabelas temporárias, triggers internos ou procedimentos e funções internos escritos em C.

Esses objetos são ignorados silenciosamente.

Suporte a tipos personalizados

O DTS migra parâmetros personalizados dos tipos COMPOSITE, ENUM e RANGE.

Outros tipos personalizados não são migrados.

wal_level deve ser logical para migração incremental

Defina wal_level = logical na instância de origem antes de configurar a migração incremental.

A migração incremental não inicia.

Retenção de logs WAL

Para migração apenas incremental: retenha logs de write-ahead logging (WAL) por mais de 24 horas. Para migração completa + incremental: retenha logs WAL por pelo menos 7 dias. Após a conclusão da migração completa, reduza a retenção para mais de 24 horas.

Retenção insuficiente causa falha na tarefa, inconsistência de dados ou perda de dados.

Sem DDL durante a migração de schema ou migração completa

Não execute operações DDL que alterem schemas de banco de dados ou tabelas enquanto a migração de schema ou a migração completa de dados estiver em execução.

Falha na tarefa de migração.

Sem gravações na origem durante migração apenas completa

Se executar apenas a migração completa de dados (sem incremental), não grave no banco de dados de origem durante a migração. Para evitar essa restrição, selecione a migração completa + incremental.

Gravações simultâneas causam inconsistência de dados.

Limite de 256 MB por registro único para migração incremental

Se uma única alteração incremental exceder 256 MB, a tarefa falhará e não poderá ser recuperada. Será necessário reconfigurar a tarefa.

Falha na tarefa sem opção de recuperação.

Transações de longa duração acumulam logs WAL

Transações de longa duração no banco de dados de origem impedem a limpeza de logs WAL. Confirme (commit) ou encerre transações de longa duração antes da migração.

O espaço em disco da origem pode se esgotar durante a migração incremental.

Atualizações de versão principal interrompem tarefas em execução

Uma atualização de versão principal no banco de dados de origem durante a execução de uma tarefa de migração causa a falha da tarefa sem possibilidade de recuperação. Reconfigure a tarefa após a atualização.

Falha na tarefa sem opção de recuperação.

Outras limitações

Limitação

Detalhes

Failover primário/secundário requer Logical Replication Slot Failover

Antes de realizar um failover primário/secundário na instância de origem, ative o recurso Logical Replication Slot Failover. Isso evita a interrupção das assinaturas lógicas. Consulte Logical Replication Slot Failover.

Um banco de dados por tarefa

Uma única tarefa migra dados de apenas um banco de dados. Crie tarefas separadas para cada banco de dados.

Tabelas herdadas entre schemas não suportadas

Tabelas herdadas entre schemas não são migradas.

Campo SERIAL requer migração de sequence

Se uma tabela tiver um campo SERIAL e você selecionar Schema Migration, selecione também Sequence ou migre o schema inteiro. Caso contrário, a tarefa falhará.

Novas tabelas criadas durante a migração incremental

Se adicionar uma nova tabela a um schema ou renomear uma tabela usando RENAME durante a migração incremental, execute ALTER TABLE schema.table REPLICA IDENTITY FULL; antes de gravar dados nessa tabela. Não bloqueie a tabela ao executar essa instrução para evitar deadlocks. Execute esta operação fora do horário de pico.

Validade de metadados não verificada

O DTS não valida metadados como sequences. Verifique os metadados manualmente após a migração.

Sequences no destino não iniciam a partir do valor máximo da origem

Após alternar as cargas de trabalho para o destino, novas sequences começam a partir de seus valores iniciais, e não do valor máximo na origem. Atualize os valores iniciais das sequences no destino antes do cutover.

Tabelas temporárias criadas pelo DTS

O DTS cria as seguintes tabelas temporárias no banco de dados de origem para dar suporte à migração incremental. Não as exclua durante a migração — elas são removidas automaticamente após a liberação da instância do DTS: 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.

session_replication_role definido como replica durante a migração

Se a conta de destino for privilegiada ou tiver a função de superusuário, o DTS define session_replication_role como replica no nível da sessão durante a migração completa e incremental. Se a conta não tiver essas permissões, defina session_replication_role = replica manualmente. Operações UPDATE ou DELETE em cascata na origem durante esse período podem causar inconsistência de dados. Após a liberação da tarefa, restaure o valor para origin.

Tabela de heartbeat criada na origem

O DTS cria uma tabela de heartbeat chamada dts_postgres_heartbeat no banco de dados de origem para rastrear a latência da migração incremental.

Slot de replicação criado na origem

O DTS cria um slot de replicação com o prefixo dts_sync_ na origem. Esse slot retém os últimos 15 minutos de logs incrementais. O slot é excluído automaticamente quando a instância do DTS é liberada ou quando a tarefa falha. Se alterar a senha do banco de dados de origem ou remover endereços IP do DTS da lista de permissões de IP, exclua o slot de replicação manualmente para evitar acúmulo de slots. Após um failover primário/secundário, faça login na instância secundária para excluir o slot.

Migração completa causa fragmentação de tabela

Operações INSERT simultâneas durante a migração completa causam fragmentação de tabela no destino. O tablespace de destino será maior que o da origem após a conclusão da migração completa.

Precisão FLOAT e DOUBLE

O DTS usa ROUND(COLUMN, PRECISION) para recuperar valores FLOAT e DOUBLE. Se nenhuma precisão for especificada, FLOAT assume o padrão de 38 dígitos e DOUBLE assume o padrão de 308 dígitos. Verifique se essas configurações de precisão atendem aos seus requisitos.

Tarefas com falha podem ser retomadas e sobrescrever dados no destino

O DTS tenta repetir uma tarefa com falha por até 7 dias. Antes de alternar as cargas de trabalho para o destino, pare ou libere tarefas com falha, ou execute REVOKE para remover as permissões de gravação da conta do DTS no banco de dados de destino.

O suporte do DTS pode modificar parâmetros da tarefa

Se uma tarefa falhar, o suporte técnico do DTS tentará restaurá-la em até 8 horas. A tarefa pode ser reiniciada e os parâmetros da tarefa (não os parâmetros do banco de dados) podem ser modificados.

Casos especiais

Não modifique o endpoint ou a zona da instância de origem do ApsaraDB RDS for PostgreSQL enquanto uma tarefa de migração estiver em execução. Essa ação causa a falha da tarefa.

Configurar uma tarefa de migração

Etapa 1: Acessar a página Data Migration

Use o console do DTS ou o console do DMS.

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:

As etapas reais podem variar conforme o modo e o layout do seu console do DMS. Consulte Modo simples para referência de layout, ou veja como personalizar o layout 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: Criar uma tarefa

Clique em Create Task para abrir a página de configuração da tarefa.

Etapa 3: Configurar bancos de dados de origem e de destino

Aviso

Após configurar os bancos de dados de origem e de destino, leia os Limits exibidos na parte superior da página. Pular esta etapa pode causar falhas na tarefa ou inconsistência de dados.

Configure os seguintes parâmetros para os bancos de dados de origem e de destino.

Seção

Parâmetro

Descrição

N/A

Task Name

Nome da tarefa do DTS. O DTS gera um nome automaticamente. Especifique um nome descritivo para facilitar a identificação da tarefa. O nome não precisa ser único.

Source Database

Select Existing Connection

Se a instância já estiver registrada no DTS, selecione-a na lista suspensa. O DTS preenche automaticamente os parâmetros restantes. Caso contrário, configure os parâmetros abaixo. No console do DMS, selecione a instância na lista suspensa Select a DMS database instance.

Database Type

Selecione PostgreSQL.

Access Method

Selecione Alibaba Cloud Instance.

Instance Region

Região da instância de origem.

Instance ID

ID da instância de origem.

Database Name

Nome do banco de dados que contém os objetos a serem migrados.

Database Account

Conta da instância de origem. Consulte Permissões necessárias.

Database Password

Senha da conta do banco de dados.

Encryption

Selecione Non-encrypted (padrão) ou SSL-encrypted. Para criptografia ssl, faça upload do CA Certificate e, opcionalmente, do Client Certificate, Private Key of Client Certificate e Private Key Password of Client Certificate. Consulte Criptografia SSL para instruções de configuração.

Destination Database

Select Existing Connection

Igual à origem.

Database Type

Selecione PostgreSQL.

Access Method

Selecione Alibaba Cloud Instance.

Instance Region

Região da instância de destino.

Instance ID

ID da instância de destino.

Database Name

Nome do banco de dados de destino.

Database Account

Conta da instância de destino. Consulte Permissões necessárias.

Database Password

Senha da conta do banco de dados.

Encryption

Mesmas opções da origem.

Etapa 4: Testar conectividade

Clique em Test Connectivity and Proceed na parte inferior da página.

Adicione os blocos CIDR dos servidores do DTS às configurações de segurança dos bancos de dados de origem e de destino. Para obter instruções, consulte Adicionar os blocos CIDR dos servidores do DTS . Se a origem ou o destino usar um método de acesso diferente de Alibaba Cloud Instance , clique em Test Connectivity na caixa de diálogo CIDR Blocks of DTS Servers .

Etapa 5: Configurar objetos para migração

Na página Configure Objects, configure as definições de migração.

Tipos de migração:

Objetivo

Selecionar

Migração completa (com tempo de inatividade)

Schema Migration e Full Data Migration

Migração online (tempo de inatividade mínimo)

Schema Migration, Full Data Migration e Incremental Data Migration

Se não selecionar Incremental Data Migration , não grave dados na origem durante a migração para garantir a consistência dos dados. A Migração de Schema copia chaves estrangeiras para o destino.

Modo de processamento de tabelas conflitantes:

Modo

Comportamento

Precheck and Report Errors

Verifica se existem tabelas com nomes idênticos na origem e no destino antes da migração. Se houver conflitos, a pré-verificação falha e a tarefa não inicia. Para resolver conflitos sem excluir tabelas de destino, use o mapeamento de nomes de objetos para renomear as tabelas migradas. Consulte Mapear nomes de objetos.

Ignore Errors and Proceed

Ignora a verificação de conflitos. Durante a migração completa, registros conflitantes não são migrados (os registros existentes no destino são mantidos). Durante a migração incremental, registros conflitantes sobrescrevem os registros existentes no destino. Use este modo com cautela — ele pode expor seus dados a riscos de inconsistência.

Source Objects:

Selecione um ou mais schemas ou tabelas em Source Objects e clique em 向右小箭头 para adicioná-los aos Selected Objects.

Se selecionar tabelas (em vez de schemas), o DTS não migrará outros objetos, como views, triggers e stored procedures. Se uma tabela tiver um tipo de dados SERIAL e a Migração de Schema estiver selecionada, selecione também Sequence ou migre o schema completo.

Selected Objects:

Renomear um objeto com mapeamento de nomes de objetos pode causar falha na migração de objetos dependentes.

Clique em Next: Advanced Settings.

Configurações avançadas:

Parâmetro Descrição
Dedicated Cluster for Task Scheduling Por padrão, o DTS usa o 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 reconectar após uma falha de conexão. Intervalo: 10–1.440 minutos. Padrão: 720. Defina este valor como pelo menos 30. Se o DTS se reconectar dentro da janela de tentativa, a tarefa será retomada; caso contrário, ela falhará.
Nota

Se várias tarefas compartilharem a mesma origem ou destino, o tempo de tentativa definido mais recentemente se aplicará a todas. As cobranças do DTS continuam durante as tentativas.

Retry Time for Other Issues Tempo durante o qual o DTS tenta novamente após falhas em operações DDL ou DML. Intervalo: 1–1.440 minutos. Padrão: 10. Defina este valor como maior que 10. Este valor deve ser menor que Retry Time for Failed Connections.
Enable Throttling for Full Data Migration Limita o throughput da migração para reduzir a carga na origem e no destino. Configure QPS to the source database, RPS of Full Data Migration e Data migration speed for full migration (MB/s). Disponível apenas quando Full Data Migration estiver selecionado.
Enable Throttling for Incremental Data Migration Limita o throughput da migração incremental. Configure RPS of Incremental Data Migration e Data migration speed for incremental migration (MB/s). Disponível apenas quando Incremental Data Migration estiver selecionado.
Environment Tag Uma tag opcional para identificar a instância do DTS por ambiente.
Configure ETL Ative a extração, transformação e carga (ETL) para processar dados durante a migração. Selecione Yes para inserir instruções de processamento de dados. Consulte Configurar ETL em uma tarefa de migração ou sincronização de dados.
Monitoring and Alerting Configure alertas para falhas de tarefa ou alta latência de migração. Selecione Yes e configure o limiar de alerta e as configurações de notificação. Consulte Configurar monitoramento e alertas ao criar uma tarefa do DTS.

Clique em Next Step: Data Verification para configurar a verificação de dados. Consulte Configurar uma tarefa de verificação de dados.

Etapa 6: 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 mouse sobre Next: Save Task Settings and Precheck e clique em Preview OpenAPI parameters antes de prosseguir.

O DTS executa uma pré-verificação antes de iniciar a tarefa. A tarefa só inicia após a aprovação na pré-verificação.

  • Se algum item da pré-verificação falhar, clique em View Details para ver a causa. Corrija o problema e clique em Precheck Again.

  • Se um item gerar um alerta:

    • Se o alerta não puder ser ignorado, corrija o problema e execute a pré-verificação novamente.

    • Se o alerta puder ser ignorado, clique em Confirm Alert Details, depois clique em Ignore > OK > Precheck Again. Ignorar um alerta pode causar inconsistência de dados.

Etapa 7: Adquirir uma instância e iniciar a tarefa

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

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

    Seção

    Parâmetro

    Descrição

    New Instance Class

    Resource Group

    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 da 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.

  3. Leia e aceite os Data Transmission Service (Pay-as-you-go) Service Terms marcando a caixa de seleção.

  4. Clique em Buy and Start e, em seguida, clique em OK na caixa de diálogo de confirmação.

A tarefa aparece na página Data Migration.

  • Se a tarefa não incluir migração incremental, ela será interrompida automaticamente quando concluída. O status mostra Completed.

  • Se a tarefa incluir migração incremental, ela será executada continuamente. O status mostra Running.

Fazer cutover para o banco de dados de destino

Para migrações online que utilizam migração incremental de dados, siga estas etapas para realizar o cutover com perda mínima de dados.

  1. Monitore a latência da migração. Na página Data Migration, verifique a latência da tarefa de migração incremental. Aguarde até que a latência caia para 0 ou próximo de 0, indicando que o destino está quase totalmente sincronizado com a origem.

  2. Interrompa as gravações na origem. Assim que a latência estiver próxima de 0, impeça que sua aplicação grave no banco de dados de origem.

  3. Confirme que a latência atingiu 0. Após interromper as gravações, confirme se a latência da migração incremental atingiu 0. Isso garante que todas as alterações foram replicadas para o destino.

  4. Atualize as sequences no destino. Novas sequences no destino não incrementam a partir do valor máximo das sequences na origem. Antes de alternar o tráfego, atualize os valores iniciais de todas as sequences no destino para evitar conflitos de ID.

  5. Verifique os dados. Se configurou a verificação de dados, analise os resultados para confirmar a consistência entre a origem e o destino.

  6. Alterne sua aplicação. Atualize a string de conexão da sua aplicação para apontar para a instância de destino.

  7. Libere a tarefa do DTS. Após confirmar que a aplicação está funcionando corretamente no destino, pare e libere a tarefa de migração do DTS. O DTS remove automaticamente as tabelas temporárias e o slot de replicação da origem após a liberação da tarefa.

Importante

O DTS tenta repetir uma tarefa com falha por até 7 dias. Antes de alternar as cargas de trabalho para o destino, pare ou libere quaisquer tarefas com falha, ou execute REVOKE para remover as permissões de gravação da conta do DTS no banco de dados de destino. Caso contrário, uma tarefa com falha retomada pode sobrescrever dados no destino.

Próximos passos