Todos os produtos
Search
Central de documentação

Data Transmission Service:Migrar incrementalmente um banco de dados PostgreSQL auto-gerenciado (v10.0 ou anterior) para o ApsaraDB for PostgreSQL

Última atualização: Jul 04, 2026

Use o Data Transmission Service (DTS) para migrar dados de forma incremental de um banco de dados PostgreSQL auto-gerenciado para uma instância do ApsaraDB for PostgreSQL. O DTS oferece suporte à migração de esquema, migração completa de dados e migração incremental de dados, permitindo uma transição suave com tempo de inatividade mínimo.

Este tópico usa como exemplo um banco de dados auto-gerenciado com endereço IP público. Para migração completa de dados, consulte Migrar dados completos de um banco de dados PostgreSQL auto-gerenciado para uma instância do ApsaraDB for PostgreSQL.

Pré-requisitos

  • O banco de dados PostgreSQL auto-gerenciado de origem deve ser da versão 9.4.8 ou posterior, 9.5, 9,6 ou 10.0.

  • A instância de destino do ApsaraDB for PostgreSQL deve ter armazenamento suficiente para os dados de origem.

  • A porta do banco de dados PostgreSQL de origem deve estar acessível pela internet.

Observações de uso

  • Durante a migração completa de dados, o DTS consome recursos de leitura e gravação nos bancos de dados de origem e de destino, aumentando a carga sobre eles. Se seus bancos de dados apresentarem baixo desempenho, especificações reduzidas ou cargas de trabalho elevadas (por exemplo, se o banco de origem tiver muitas consultas SQL lentas ou tabelas sem chaves primárias, ou se ocorrerem deadlocks no banco de destino), esse aumento de carga pode sobrecarregar os sistemas ou até causar interrupções no serviço. Execute a migração de dados em horários de baixa demanda, como quando a utilização da CPU de ambos os bancos estiver abaixo de 30%.

  • Na migração incremental de dados, caso selecione um esquema como objeto de migração e depois crie uma nova tabela ou reconstrua uma tabela usando RENAME, execute ALTER TABLE schema.table REPLICA IDENTITY FULL; antes de gravar dados na tabela.

    Nota

    Substitua

    schema

    e

    table

    pelos nomes reais do esquema e da tabela.

  • Se uma tabela de origem não possuir chave primária nem restrição de unicidade e contiver dados não únicos, poderão ser criados dados duplicados no banco de destino.

  • O DTS tenta repetir automaticamente as tarefas com falha. Pare ou libere a tarefa antes de alternar as aplicações para a instância de destino para evitar que os dados de origem sobrescrevam os dados de destino.

  • Transações de longa duração no banco de dados de origem durante a migração incremental impedem a limpeza dos registros WAL, o que pode esgotar o espaço em disco.

Limitações

  • Cada tarefa de migração transfere apenas um banco de dados. Para migrar vários bancos, crie uma tarefa separada para cada um.

  • Os nomes dos bancos de dados não podem conter hifens (-). Exemplo: dts-testdata.

  • Caso ocorra um failover entre nó primário e secundário no banco de dados de origem durante a migração, não será possível retomar a migração incremental de dados.

  • A latência de replicação pode causar inconsistência de dados entre os nós primário e secundário. Use sempre o nó primário como source de dados.

    Nota

    Execute a migração em horários de baixa demanda. É possível ajustar a taxa de migração conforme a carga do banco de dados de origem.

    Modifique a taxa de transferência da migração completa de dados

    .

  • O DTS valida o conteúdo dos dados, mas não valida metadados como sequences. Verifique manualmente os metadados das sequences.

  • Após o failover, as sequences no banco de dados de destino não continuam a partir do valor máximo da origem. Antes de alternar, consulte o valor máximo de cada sequence na origem e defina-o como valor inicial no destino. Consulte os valores das sequences:

    do language plpgsql $$
    declare
      nsp name;
      rel name;
      val int8;
    begin
      for nsp,rel in select nspname,relname from pg_class t2 , pg_namespace t3 where t2.relnamespace=t3.oid and t2.relkind='S'
      loop
        execute format($_$select last_value from %I.%I$_$, nsp, rel) into val;
        raise notice '%',
        format($_$select setval('%I.%I'::regclass, %s);$_$, nsp, rel, val+1);
      end loop;
    end;
    $$;
  • O failover entre primário e secundário durante a migração é suportado apenas no ApsaraDB RDS for PostgreSQL 11. Defina rds_failover_slot_mode como sync.Failover de slot de replicação lógica.

    Aviso

    Um failover entre primário e secundário em um banco de dados PostgreSQL auto-gerenciado ou em outras versões do RDS interrompe a migração.

  • Durante a migração incremental de dados, apenas operações DML (INSERT, DELETE, UPDATE) são sincronizadas.

    Nota

    Somente tarefas criadas após 1º de outubro de 2020 oferecem suporte à sincronização de DDL. Antes de configure a tarefa, crie triggers e funções no banco de dados de origem para capturar informações de DDL.

    Usar triggers e funções para implementar migração incremental de DDL para PostgreSQL

    .

Faturamento

Tipo de migração

Taxa de configuração da tarefa

Taxa de tráfego de internet

Migração de esquema e migração completa de dados

Gratuito.

O DTS cobra uma taxa de tráfego de internet quando o Access Method do banco de dados de destino está definido como Public IP Address. Visualize o faturamento.

Migração incremental de dados

Pago. Visualize o faturamento.

Permissões da conta do banco de dados

Banco de dados

Migração de esquema

Migração completa de dados

Migração incremental de dados

Banco de dados PostgreSQL auto-gerenciado

Permissão USAGE em pg_catalog

Permissão SELECT nos objetos de migração

superuser

Instância do ApsaraDB for PostgreSQL

Permissões CREATE e USAGE nos objetos de migração

Permissão de proprietário do esquema

Permissão de proprietário do esquema

Para criar contas e conceder permissões:

Processo de migração de dados

Para resolver dependências de objetos e aumentar a taxa de sucesso da migração, o DTS migra esquemas e dados do PostgreSQL na seguinte ordem.

Nota

Para definições de migração de esquema, migração completa de dados e migração incremental de dados, consulte

Termos

.

Processo de migração do DTS Descrição
1. Migração de esquema O DTS migra as informações de esquema de TABLE, VIEW, SEQUENCE, FUNCTION, USER DEFINED TYPE, RULE, DOMAIN, OPERATION e AGGREGATE para o banco de dados de destino.
Nota Plug-ins e funções escritos em C não são suportados.
2. Migração completa de dados O DTS migra todos os dados existentes dos objetos selecionados para o banco de dados de destino.
3. Migração de esquema O DTS migra as informações de esquema de TRIGGER e FOREIGN KEY para o banco de dados de destino.
4. Migração incremental de dados Após a migração completa de dados, o DTS migra as atualizações incrementais dos objetos selecionados para o banco de dados de destino. A migração incremental de dados permite uma transição suave com tempo de inatividade mínimo.
Nota
  • Durante a migração incremental de dados, apenas operações DML (INSERT, DELETE, UPDATE) são suportadas.
  • O tipo de dado BIT não é suportado durante a migração incremental de dados.

Preparações

Nota

Estas etapas aplicam-se ao Linux.

  1. Opcional: Baixe, compile e instale o código-fonte do PostgreSQL.

    Nota

    Ignore esta etapa se o banco de dados já foi implantado a partir do código-fonte.

    1. Baixe o código-fonte correspondente à versão do seu banco de dados no site oficial do PostgreSQL.

    2. Execute os comandos a seguir para configure, compilar e instalar o código-fonte.

      sudo ./configure --prefix=/usr/local/postgresql
      sudo make
      sudo make install
      Importante
      • O valor do prefixo deve ser diferente do caminho de instalação existente do PostgreSQL.

      • A versão do sistema operacional deve ser compatível com a versão do GCC.

      • Caso sudo ./configure falhe, faça ajustes com base no erro apresentado. Por exemplo, para readline library not found. Use --without-readline to disable readline support., use sudo ./configure --without-readline.

      • Se usar um método de instalação diferente, compile o plug-in ali_decoding em um ambiente de teste com as mesmas versões de sistema operacional e GCC.

  2. Compile um novo arquivo ali_decoding a partir do código-fonte do PostgreSQL e substitua o arquivo existente.

    1. Baixe o plug-in ali_decoding fornecido pelo DTS.

      Nota

      Execute estes comandos para baixar e extrair o plug-in.

      sudo wget https://github.com/aliyun/rds_dbsync/archive/refs/heads/master.zip
      unzip master.zip
    2. Copie o diretório ali_decoding para o diretório contrib da instalação compilada do PostgreSQL.

      sudo cp rds_dbsync-master/ali_decoding /tmp/postgresql-9.4.26/contrib/ -r
      Nota

      Substitua

      /tmp/postgresql-9.4.26/contrib/

      pelo diretório do código-fonte do seu PostgreSQL.

      total 1068
      -rw-r--r--  1 1107 1107    384 Sep 27  2016 aclocal.m4
      drwxrwxrwx  2 1107 1107   4096 Sep 27  2016 config
      -rw-r--r--  1 root root 374806 Sep  7 10:10 config.log
      -rwxr-xr-x  1 root root  39032 Sep  7 10:10 config.status
      -rwxr-xr-x  1 1107 1107 471157 Sep 27  2016 configure
      -rw-r--r--  1 1107 1107  75195 Sep 27  2016 configure.in
      drwxrwxrwx 56 1107 1107   4096 Sep  7 10:28 contrib
      -rw-r--r--  1 1107 1107   1192 Sep 27  2016 COPYRIGHT
      drwxrwxrwx  3 1107 1107   4096 Sep 27  2016 doc
      -rw-r--r--  1 root root   3638 Sep  7 10:10 GNUmakefile
      -rw-r--r--  1 1107 1107   3638 Sep 27  2016 GNUmakefile.in
      -rw-r--r--  1 1107 1107    283 Sep 27  2016 HISTORY
      -rw-r--r--  1 1107 1107  75065 Sep 27  2016 INSTALL
      -rw-r--r--  1 1107 1107   1489 Sep 27  2016 Makefile
      -rw-r--r--  1 1107 1107   1209 Sep 27  2016 README
      drwxrwxrwx 16 1107 1107   4096 Sep  7 10:10 src
    3. No diretório ali_decoding, substitua o conteúdo do Makefile por:

      # contrib/ali_decoding/Makefile
      MODULE_big = ali_decoding
      MODULES = ali_decoding
      OBJS    = ali_decoding.o
      DATA = ali_decoding--0.0.1.sql ali_decoding--unpackaged--0.0.1.sql
      EXTENSION = ali_decoding
      NAME = ali_decoding
      #subdir = contrib/ali_decoding
      #top_builddir = ../..
      #include $(top_builddir)/src/Makefile.global
      #include $(top_srcdir)/contrib/contrib-global.mk
      #PG_CONFIG = /usr/pgsql-9.6/bin/pg_config
      #pgsql_lib_dir := $(shell $(PG_CONFIG) --libdir)
      #PGXS := $(shell $(PG_CONFIG) --pgxs)
      #include $(PGXS)
      # For source code installation, use the following:
      ifdef USE_PGXS
      PG_CONFIG = pg_config
      PGXS := $(shell $(PG_CONFIG) --pgxs)
      include $(PGXS)
      else
      subdir = contrib/ali_decoding
      top_builddir = ../..
      include $(top_builddir)/src/Makefile.global
      include $(top_srcdir)/contrib/contrib-global.mk
      endif
    4. Opcional: Para o PostgreSQL 9.4 (9.4.8 a 9.4.26), remova o parâmetro false da função set_config_option no arquivo ali_decoding.c. A função modificada fica assim:

          if (extra_float_digits < 3)
              (void) set_config_option("extra_float_digits", "3",
                      PGC_USERSET, PGC_S_SESSION,
                      GUC_ACTION_SAVE, true, 0);
    5. No diretório ali_decoding, execute sudo make e sudo make install. Saída esperada após sudo make install:

      /usr/bin/install -c -m 755  ali_decoding.so '/usr/local/pgsql/lib/ali_decoding.so'
      /usr/bin/install -c -m 644 ./ali_decoding.control '/usr/local/pgsql/share/extension/'
      /usr/bin/install -c -m 644 ./ali_decoding--0.0.1.sql ./ali_decoding--unpackaged--0.0.1.sql  '/usr/local/pgsql/share/extension/'
      /usr/bin/install -c -m 755  ali_decoding.so '/usr/local/pgsql/lib/'
    6. Copie os arquivos ali_decoding gerados para a instalação do PostgreSQL de origem, substituindo os arquivos nestes caminhos.

      Nota

      Substitua

      /usr/local/postgresql

      pelo caminho de instalação do seu PostgreSQL de origem.

      /usr/local/postgresql/lib/ali_decoding.so
      /usr/local/postgresql/share/extension/ali_decoding.control 
      /usr/local/postgresql/share/extension/ali_decoding--0.0.1.sql 
      /usr/local/postgresql/share/extension/ali_decoding--unpackaged--0.0.1.sql
  3. Crie o banco de dados e o esquema correspondentes na instância de destino do ApsaraDB for PostgreSQL. Os nomes dos esquemas devem corresponder aos da origem.Crie um banco de dados e Gerencie esquemas.

Procedimento

  1. Acesse o console do Data Transmission Service (DTS).

    Nota

    Caso seja redirecionado automaticamente para o console do Data Management (DMS), clique em no ícone jiqiren no canto inferior direito e depois clique em 返回旧版 para retornar ao console clássico do DTS.

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

  3. Na parte superior da página Migration Tasks, selecione a região onde a instância de destino está localizada.

  4. No canto superior direito da página, clique em Create Data Migration Task.

  5. Configure os bancos de dados de origem e de destino.

    Categoria Configuração Descrição
    N/A Task Name O DTS gera um nome de tarefa automaticamente. Especifique um nome descritivo para facilitar a identificação. Não é necessário que seja único.
    Source Database Instance Type Selecione conforme sua implantação. Este exemplo usa self-managed database with a public IP address.
    Nota Outros tipos de instância exigem preparações adicionais. Visualize as preparações.
    Instance Region Ao selecione self-managed database with a public IP address como tipo de instância, não é necessário defina a Instance Region.
    Nota Caso tenha configurado uma lista de permissões para seu banco de dados PostgreSQL auto-gerenciado, clique em Get IP Address Segment of DTS ao lado da configuração Instance Region para obter os endereços IP dos servidores DTS e adicioná-los à sua lista de permissões.
    Database Type Selecione PostgreSQL.
    Hostname or IP Address Insira o endpoint do banco de dados PostgreSQL auto-gerenciado. Neste exemplo, insira o endereço IP público.
    Port Insira a porta de serviço. Padrão: 5432.
    Database Name Insira o nome do banco de dados a ser migrado.
    Database Account Insira a conta do banco de dados. Para permissões, consulte Permissões da conta do banco de dados.
    Database Password Insira a senha da conta do banco de dados.
    Nota

    Após inserir as informações do banco de dados de origem, clique em Test Connectivity ao lado de Database Password para verifique se as informações estão corretas. Se estiverem corretas, a mensagem Passed será exibida. Caso a mensagem Failed apareça, clique em Diagnose ao lado da mensagem Failed e ajuste as informações do banco de dados de origem conforme as orientações.

    Destination Database Instance Type Selecione RDS Instance.
    Instance Region Selecione a região da instância RDS de destino.
    RDS Instance ID Selecione o ID da instância RDS de destino.
    Database Name Insira o nome do banco de dados de destino. Este pode ser diferente do nome do banco de dados de origem.
    Nota Crie previamente o banco de dados e o esquema na instância RDS. Preparações.
    Database Account Insira a conta do banco de dados. Para permissões, consulte Permissões da conta do banco de dados.
    Database Password Insira a senha da conta do banco de dados.
    Nota

    Após inserir as informações do banco de dados de destino, clique em Test Connectivity após Database Password para verifique se as informações inseridas estão corretas. Se estiverem corretas, a mensagem Passed será exibida. Caso a mensagem Failed apareça, clique em Diagnose após Failed e ajuste as informações do banco de dados de destino conforme as orientações.

  6. Após concluir a configuração, clique em Authorize Whitelist and Go to Next Step.

    Se a origem ou o destino for uma instância de banco de dados da Alibaba Cloud (como ApsaraDB RDS for MySQL ou ApsaraDB for MongoDB), o DTS adiciona automaticamente os endereços IP dos servidores DTS na região correspondente à lista de permissões da instância. Se a origem ou o destino for um banco de dados auto-gerenciado em uma instância ECS, o DTS adiciona automaticamente os endereços IP dos servidores DTS às regras de segurança da instância ECS. Garanta também que o banco de dados auto-gerenciado não restrinja o acesso proveniente da instância ECS. Se o banco de dados for um cluster implantado em várias instâncias ECS, adicione manualmente os endereços IP dos servidores DTS da região às regras de segurança de cada instância ECS. Caso a origem ou o destino seja um banco de dados em um data center local ou em outra nuvem, adicione manualmente os endereços IP dos servidores DTS da região para permitir o acesso. Para obter a lista de endereços IP dos servidores DTS, consulte Blocos de endereços IP dos servidores DTS.

    Aviso

    Adicionar os blocos CIDR públicos dos servidores DTS, seja automática ou manualmente, pode introduzir riscos de segurança. Ao usar este produto, você reconhece e aceita esses riscos potenciais. É sua responsabilidade implementar medidas básicas de segurança, incluindo, mas não se limitando a: usar senhas fortes, restringir portas abertas, usar autenticação para chamadas internas de api, revisar e restringir regularmente segmentos de rede desnecessários, ou conectar-se por meio de redes privadas como Express Connect, VPN Gateway ou Smart Access Gateway.

  7. Selecione os tipos de migração e os objetos.

    Configuração Descrição
    Migration Type
    • Para migração completa de dados apenas, selecione tanto Schema Migration quanto Full Data Migration.
    • Para minimizar o tempo de inatividade, selecione Schema Migration, Full Data Migration e Incremental Data Migration. Neste exemplo, todos os três tipos de migração estão selecionados.
    Nota Se Incremental Data Migration não for selecionado, não grave dados no banco de origem durante a migração completa para garantir a consistência dos dados.
    Migration Object

    Selecione os objetos na caixa Available e clique em right arrow para movê-los para a caixa Selected Objects.

    Nota
    • É possível selecione objetos no nível de esquema, tabela ou coluna.
    • Por padrão, os nomes dos objetos permanecem inalterados após a migração. Para renomear objetos, use o recurso de mapeamento de nomes de objetos do DTS. Mapear tabelas e colunas.
    • O mapeamento de nomes de objetos pode causar falha na migração de objetos dependentes.
    Object name mapping Para renomear objetos migrados na instância de destino, use o mapeamento de nomes de objetos. Mapear tabelas e colunas.
    Connection retry duration O DTS tenta reconectar por 12 horas por padrão. Esse período pode ser personalizado. Se o DTS conseguir reconectar dentro do tempo especificado, a tarefa será retomada; caso contrário, ela falhará.
    Nota O DTS cobra por tarefas em execução durante o período de nova tentativa. Personalize a duração da nova tentativa conforme suas necessidades ou libere a instância DTS quando a origem e o destino forem liberados.
  8. Após concluir essas configurações, clique em Pre-check and Start no canto inferior direito da página.

    Nota
    • O DTS realiza uma verificação prévia antes de iniciar a tarefa. A tarefa só poderá começar após passar nessa verificação.

    • Se a verificação prévia falhar, clique em no ícone 提示 ao lado do item com falha para visualize os detalhes.

      • Corrija os problemas com base nos detalhes fornecidos e execute a verificação prévia novamente.

      • Para avisos que não exigem correção, selecione Ignore ou Ignore and Rerun Precheck para execute a verificação prévia novamente.

  9. Depois que a tarefa passar na verificação prévia, clique em Next.

  10. Na página Confirm Order, selecione uma Instance Class e marque a caixa de seleção Data Transmission Service (Pay-As-You-Go) Terms of Service.

  11. Clique em Buy and Start. A tarefa de migração será iniciada.

    • Migração completa de dados

      Não pare a tarefa manualmente. Aguarde a conclusão automática para evitar perda de dados.

    • Migração incremental de dados

      A tarefa não para automaticamente. Pare-a manualmente.

      Nota

      Pare a tarefa em horários de baixa demanda ou quando estiver pronto para alternar para a instância de destino.

      1. Aguarde até que o status da tarefa mude para Incremental Data Migration e exiba Undelayed. Em seguida, pare de gravar dados no banco de dados de origem por alguns minutos. O status de Incremental Data Migration pode apresentar latência temporariamente.

      2. Aguarde até que o status de Incremental Data Migration retorne para Undelayed. Depois, pare a tarefa de migração manualmente. O progresso da migração de esquema e da migração completa de dados deve mostrar 100%. Para pausar a tarefa de migração, selecione a tarefa e clique em Pause na barra de operações em lote na parte inferior.

  12. Alterne suas aplicações para a instância RDS.

Próximas etapas

Após a migração, exclua as contas de migração tanto do banco de dados de origem quanto do de destino por motivos de segurança.