Todos os produtos
Search
Central de documentação

Data Transmission Service:Configurar a sincronização bidirecional entre bancos de dados PostgreSQL

Última atualização: Oct 16, 2026

O Data Transmission service (DTS) oferece suporte à sincronização bidirecional de dados em tempo real entre dois bancos de dados PostgreSQL, incluindo o ApsaraDB RDS for PostgreSQL e instâncias PostgreSQL autogerenciadas. A sincronização bidirecional é ideal para georredundância ativa (arquitetura baseada em células) e recuperação de desastres. Este tópico descreve como configurar a sincronização bidirecional entre instâncias do ApsaraDB RDS for PostgreSQL. É possível aplicar o mesmo procedimento a outras fontes de dados PostgreSQL.

Pré-requisitos

Limitações

Tipo

Descrição

Limites para os bancos de dados de origem e de destino

  • Se as tabelas a serem sincronizadas não possuírem chave primária ou restrição de unicidade, ative o recurso Exactly-Once write ao configurar a tarefa. Caso contrário, pode ocorrer duplicação de dados no banco de dados de destino. Para mais informações, consulte Synchronize tables that do not have a primary key or unique constraint.

  • O nome do banco de dados a ser sincronizado não pode conter hifens (-), por exemplo, dts-testdata.

  • Ao sincronizar dados no nível da tabela, se for necessário editar objetos (como mapear nomes de tabelas ou colunas) para mais de 5.000 tabelas em uma única tarefa, divida-as em várias tarefas ou configure uma tarefa para sincronizar o banco de dados inteiro. Caso contrário, a tarefa poderá falhar no envio.

  • O DTS não suporta a sincronização de tabelas temporárias, gatilhos internos (TRIGGER) nem certas funções, como funções em linguagem C e funções internas para PROCEDURE e FUNCTION do banco de dados de origem. O DTS aceita a sincronização de alguns tipos de dados personalizados (TYPE é COMPOSITE, ENUM ou RANGE) e as seguintes restrições: chave primária, chave estrangeira, unicidade e CHECK.

  • Write-ahead logging (WAL):

    • Ative o WAL definindo o parâmetro wal_level como logical.

    • Para uma tarefa de sincronização incremental de dados, o DTS exige que o WAL do banco de dados de origem seja retido por mais de 24 horas. Para uma tarefa que executa sincronização completa e incremental de dados, retenha o WAL por pelo menos sete dias. É possível alterar o período de retenção para mais de 24 horas após a conclusão da sincronização completa. Se a tarefa falhar porque o DTS não consegue obter o WAL devido a um período de retenção curto, a falha poderá levar à inconsistência ou perda de dados em casos extremos. Problemas causados por um período de retenção de WAL insuficiente não são cobertos pelo service Level Agreement (SLA) do DTS.

  • Limites operacionais no banco de dados de origem

    • Para garantir a execução adequada da tarefa e evitar interrupções na assinatura lógica devido a um failover de primário/secundário, ative o recurso Logical Replication Slot Failover na instância do ApsaraDB RDS for PostgreSQL. Para mais informações, consulte Logical Replication Slot Failover.

    • Devido às limitações inerentes das assinaturas lógicas, se a alteração de uma única linha durante a sincronização incremental exceder 256 MB, a instância de sincronização de dados poderá falhar e não poderá ser recuperada. Reconfigure a instância de sincronização de dados.

    • Não execute operações DDL que alterem os esquemas do banco de dados ou das tabelas durante a sincronização de esquema ou a sincronização completa. Caso contrário, a tarefa de sincronização falhará.

      Nota

      Durante a sincronização completa, o DTS consulta o banco de dados de origem. Isso cria bloqueios de metadados que podem impedir operações DDL no banco de dados de origem.

  • Se o banco de dados de origem tiver transações de longa duração e a instância estiver configurada para sincronização incremental, os dados de write-ahead logging (WAL) gerados antes da confirmação dessas transações não poderão ser limpos. Isso pode causar o acúmulo de dados de WAL e levar à insuficiência de espaço em disco no banco de dados de origem.

  • Se você executar uma atualização de versão principal no banco de dados de origem enquanto uma instância de sincronização estiver em execução, a instância falhará e precisará ser reconfigurada.

  • O DTS reporta os checkpoints de consumo ao banco de dados de origem aproximadamente a cada 15 minutos. Durante esse intervalo, o banco de dados de origem adia a limpeza de seus Write-Ahead Logs (WAL), o que causa um aumento na métrica de monitoramento logical_rep_latency_in_mb. Essa é uma ocorrência normal relacionada à latência de reporte de checkpoints e não indica um atraso real de sincronização no DTS. Consulte o console do DTS para verificar o status de sincronização preciso.

Outros limites

  • Uma única tarefa de sincronização de dados pode sincronizar apenas um banco de dados. Para sincronizar vários bancos de dados, configure uma tarefa separada para cada um.

  • O DTS não suporta a sincronização de tabelas de plug-in do TimescaleDB, tabelas com herança entre esquemas nem tabelas com índices únicos baseados em expressões.

  • A sincronização não suporta esquemas criados pela instalação de plug-ins. Não é possível recuperar informações sobre esses esquemas no console ao configurar uma tarefa.

  • Se uma tabela a ser sincronizada contiver uma coluna do tipo SERIAL, o banco de dados de origem criará automaticamente uma sequência para essa coluna. Portanto, ao configurar Source Objects, se selecionar Schema Synchronization para Synchronization Types, recomendamos selecionar também Sequence ou sincronizar o esquema inteiro. Caso contrário, a instância de sincronização poderá falhar.

  • Nos três cenários a seguir, execute o comando ALTER TABLE schema.table REPLICA IDENTITY FULL; nas tabelas de origem antes de gravar dados nelas, a fim de garantir a consistência dos dados. Não execute operações que bloqueiem a tabela enquanto este comando estiver em execução para evitar deadlocks. Se essa verificação for ignorada durante a pré-verificação, o DTS executará automaticamente esse comando durante a inicialização da instância.

    • Quando a instância é executada pela primeira vez.

    • Ao selecionar objetos no nível do esquema e uma nova tabela é criada no esquema ou uma tabela é reconstruída usando o comando RENAME.

    • Ao usar o recurso para modificar objetos de sincronização.

    Nota
    • Substitua schema e table no comando pelos nomes do esquema e da tabela a serem sincronizados.

    • Execute esta operação em horários de menor movimento.

  • O DTS verifica o conteúdo dos dados, mas não suporta a verificação de metadados, como sequências. Verifique esses metadados por conta própria.

  • Após migrar sua aplicação para o banco de dados de destino, as sequências não continuarão automaticamente a partir do valor máximo das sequências correspondentes no banco de dados de origem. Antes da migração, consulte o valor máximo da sequência correspondente no banco de dados de origem e use-o como valor inicial para a sequência correspondente no banco de dados de destino. Execute o seguinte comando para consultar os valores das sequências no banco de dados de origem:

    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;
        $$;
    Nota

    As instruções SQL geradas pelo comando anterior incluem todas as sequências do banco de dados de origem. Execute-as no banco de dados de destino de acordo com os requisitos do seu negócio.

  • O DTS cria as seguintes tabelas temporárias no banco de dados de origem para obter instruções DDL para dados incrementais, o esquema das tabelas incrementais e informações de heartbeat. Não exclua essas tabelas temporárias durante a sincronização. Caso contrário, a tarefa do DTS poderá falhar. As tabelas temporárias são excluídas 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 e public.aliyun_dts_instance.

  • Para garantir a precisão da latência de sincronização exibida, o DTS adiciona uma tabela de heartbeat chamada dts_postgres_heartbeat ao banco de dados de origem.

  • Durante a sincronização de dados, o DTS cria um slot de replicação lógica com o prefixo dts_sync_ no banco de dados de origem para ler logs incrementais. Se a sincronização de dados falhar ou a instância de sincronização for liberada, o DTS tentará limpar proativamente esse slot de replicação.

    Nota
    • Se você alterar a senha da conta do banco de dados de origem ou exclua a lista de permissões de IP para o DTS durante a sincronização de dados, o slot de replicação não será limpo automaticamente. Limpe manualmente o slot de replicação no banco de dados de origem para evitar que ele consuma espaço em disco e torne o banco de dados de origem indisponível.

    • Se o banco de dados de origem passar por um failover, faça login no banco de dados em standby para realizar a limpeza manualmente.

    Execute a instrução SQL SELECT * FROM pg_replication_slots; para visualizar todos os slots de replicação no banco de dados de origem. Nos resultados, o slot de replicação do DTS é o registro onde o valor de slot_name começa com dts_sync_ e o valor de active é true.

  • Antes de iniciar a sincronização de dados, avalie o desempenho dos bancos de dados de origem e de destino. Realize a sincronização em horários de menor movimento. A sincronização completa de dados consome recursos de leitura e gravação em ambos os bancos de dados, o que pode aumentar a carga deles.

  • A sincronização completa de dados realiza operações INSERT simultâneas, o que pode causar fragmentação de tabelas no banco de dados de destino. Como resultado, o tablespace da instância de destino será maior que o da instância de origem após a conclusão da sincronização completa de dados.

  • Para sincronização de dados no nível da tabela, se nenhum dado de fontes além do DTS for gravado no banco de dados de destino, é possível usar o DMS para realizar alterações DDL online. Para mais informações, consulte Alterar esquemas sem bloquear tabelas.

  • Durante a sincronização do DTS, não grave dados no banco de dados de destino a partir de outras fontes. Isso pode causar inconsistência de dados entre os bancos de dados de origem e de destino. Por exemplo, o uso do DMS para realizar alterações DDL online enquanto dados estão sendo gravados no destino a partir de outras fontes pode causar perda de dados.

  • Para tarefas de sincronização completa ou incremental de dados, se as tabelas de origem a serem sincronizadas contiverem chaves estrangeiras, gatilhos ou gatilhos de eventos, o DTS definirá temporariamente o parâmetro session_replication_role como replica no nível da sessão. Se a conta do banco de dados de destino não tiver as permissões necessárias, defina manualmente o parâmetro session_replication_role como replica no banco de dados de destino. Durante esse período, se ocorrerem operações de atualização ou exclusão em cascata no banco de dados de origem enquanto o session_replication_role estiver definido como replica, poderá ocorrer inconsistência de dados. Após a liberação da tarefa do DTS, altere o parâmetro session_replication_role de volta para origin.

  • Uma tarefa de sincronização bidirecional inclui tarefas de sincronização direta e reversa. Ao configurar ou redefinir a tarefa, se o objeto de destino de uma tarefa corresponder ao objeto de sincronização da outra tarefa:

    • Permita que apenas uma tarefa sincronize dados completos e incrementais. A outra tarefa oferece suporte apenas à sincronização incremental.

    • Os dados de origem da tarefa atual são sincronizados apenas com o destino da tarefa atual. Eles não servem como dados de origem para a outra tarefa.

  • Se uma tarefa falhar, a equipe de suporte do DTS tentará restaurá-la em até oito horas. Durante a restauração, eles podem reiniciar a tarefa ou ajustar seus parâmetros.

    Nota

    Apenas os parâmetros da tarefa do DTS são modificados, não os parâmetros do banco de dados. Os parâmetros que podem ser ajustados incluem aqueles listados em Modify instance parameters.

  • Ao sincronizar tabelas particionadas, inclua tanto a tabela pai quanto suas partições filhas como objetos de sincronização. Caso contrário, os dados na tabela particionada podem ficar inconsistentes.

    Importante
    • A tabela pai de uma tabela particionada do PostgreSQL não armazena dados diretamente. Todos os dados são armazenados nas partições filhas. Uma tarefa de sincronização de dados deve incluir a tabela pai e todas as suas partições filhas. Caso contrário, os dados das partições filhas podem ser perdidos, causando inconsistência de dados entre a origem e o destino.

    • A sincronização de tabelas particionadas e tabelas de herança (tabelas pai-filho) em bancos de dados diferentes não é suportada. Certifique-se de que as tabelas particionadas e todas as suas partições, bem como as tabelas pai e todas as suas tabelas filhas, estejam no mesmo banco de dados.

Casos especiais

  • Se a origem for uma instância do ApsaraDB RDS for PostgreSQL:

    Durante a sincronização de dados, não modifique o endpoint ou a zona da instância do ApsaraDB RDS for PostgreSQL. Caso contrário, a tarefa de sincronização de dados falhará.

  • Se a origem for um banco de dados PostgreSQL autogerenciado:

    Certifique-se de que os valores dos parâmetros max_wal_senders e max_replication_slots sejam maiores que a soma do número de slots de replicação em uso no banco de dados e o número de instâncias do DTS que você deseja criar com este banco de dados como origem.

  • Se a origem for uma instância do Cloud SQL for PostgreSQL, insira uma conta de banco de dados que tenha a permissão cloudsqlsuperuser no campo Database Account. Ao selecionar os objetos a serem sincronizados, selecione objetos que esta conta esteja autorizada a gerenciar ou conceda a permissão OWNER nos objetos para esta conta. Por exemplo, execute o comando GRANT <owner_of_objects> TO <source_account_for_task> para permitir que a conta realize operações como proprietária dos objetos.

    Nota

    Uma conta que possui a permissão cloudsqlsuperuser não pode gerenciar dados de propriedade de outras contas que também possuem a permissão cloudsqlsuperuser.

Faturamento

Tipo de sincronização

Preço

Sincronização de esquema e sincronização completa de dados

Gratuito.

Sincronização incremental de dados

Cobrado. Para mais informações, consulte Billing overview.

Topologias de sincronização suportadas

O DTS suporta a sincronização bidirecional apenas entre dois bancos de dados PostgreSQL. Topologias de sincronização bidirecional com múltiplos nós não são suportadas.

Detecção de conflitos

Para garantir a consistência dos dados, certifique-se de que os registros de dados com a mesma chave primária, chave primária de negócio ou chave única sejam atualizados em apenas uma das instâncias de banco de dados na sincronização bidirecional. Se os registros de dados forem atualizados em ambas as instâncias, o DTS aplicará a política de resolução de conflitos configurada na tarefa.

O DTS verifica e corrige conflitos para maximizar a estabilidade das tarefas de sincronização bidirecional. O DTS pode detectar os seguintes tipos de conflitos:

  • Conflitos de unicidade causados por operações INSERT

    Na sincronização bidirecional, se registros com a mesma chave primária forem inseridos em ambas as instâncias de banco de dados simultaneamente (ou em rápida sucessão), um conflito de restrição de unicidade será acionado. Quando a instrução INSERT for sincronizada com a instância par, ela falhará porque já existe um registro com o mesmo valor de chave primária.

  • Registros incompatíveis em operações UPDATE

    • Se os registros a serem atualizados não existirem na instância de destino, o DTS converterá a operação UPDATE em uma operação INSERT. No entanto, podem ocorrer conflitos de unicidade.

    • O registro a ser atualizado por uma operação UPDATE causa um conflito de chave primária ou chave única.

  • Registros inexistentes a serem excluídos

    Os registros a serem excluídos não existem na instância de destino. Nesse caso, o DTS ignora a operação DELETE, independentemente da política de resolução de conflitos especificada.

Importante
  • Devido a diferenças de tempo e latência, o DTS não pode garantir 100% de prevenção de conflitos. Para garantir a consistência, atualize registros com a mesma chave primária ou única em apenas uma instância de banco de dados por vez.

  • O DTS fornece várias estratégias de resolução para os conflitos de dados mencionados, as quais podem ser selecionadas ao configurar a sincronização bidirecional.

Etapa 5: Configurar objetos a serem sincronizados

Na etapa Configure Objects, defina os seguintes parâmetros:

Parâmetro

Descrição

Synchronization Types

A opção Incremental Data Synchronization é selecionada por padrão. Selecione também Schema Synchronization e Full Data Synchronization para sincronizar dados históricos como linha de base para a sincronização incremental. A seleção de Schema Synchronization faz com que o DTS sincronize os esquemas das tabelas, incluindo chaves estrangeiras.

Synchronization Topology

Selecione One-way Synchronization.

Processing Mode of Conflicting Tables

Precheck and Report Errors (padrão): a pré-verificação falha se a origem e o destino possuírem tabelas com o mesmo nome. Use o mapeamento de nomes de objetos para renomear tabelas conflitantes no destino, se necessário. Ignore Errors and Proceed: ignora a verificação de conflito de nomes. Durante a sincronização completa, os registros existentes no destino com valores de chave primária ou única correspondentes são mantidos. Durante a sincronização incremental, eles são sobrescritos. Se os esquemas forem diferentes, a inicialização poderá falhar parcialmente. Use com cautela.

Capitalization of Object Names in Destination Instance

Controla a capitalização dos nomes de bancos de dados, tabelas e colunas no destino. O padrão é DTS default policy. Consulte Especificar a capitalização dos nomes dos objetos.

Source Objects

Selecione colunas, tabelas ou esquemas e clique no ícone de seta para movê-los para Selected Objects.

Selected Objects

Clique com o botão direito em um objeto para renomeá-lo (consulte Mapear o nome de um único objeto), filtrar por operação SQL ou adicionar condições WHERE (consulte Set filter conditions). Para renomear vários objetos de uma vez, clique em Batch Edit. Note que renomear um objeto pode interromper a sincronização de objetos dependentes.

Operações SQL suportadas

Tipo de operação

Operação SQL

DML

INSERT, UPDATE, DELETE

DDL

  • Apenas tarefas de sincronização de dados criadas após 1º de outubro de 2020 () suportam sincronização de operações DDL.

    Importante
    • Para tarefas de sincronização de dados criadas antes de 12 de maio de 2023 (UTC+8), crie gatilhos e funções no banco de dados de origem para capturar informações DDL antes de configurar a tarefa. Para mais informações, consulte Use triggers and functions to implement incremental DDL migration for PostgreSQL.

    • Dados do tipo BIT não podem ser sincronizados durante a sincronização incremental de dados.

  • O DTS pode sincronizar as seguintes instruções DDL se a conta do banco de dados de origem for uma conta privilegiada, a versão principal da instância do ApsaraDB RDS for PostgreSQL for 9.5 ou posterior e a versão secundária for 20210228 ou posterior. Para mais informações sobre como atualizar a versão secundária, consulte Update the minor engine version.

    • CREATE TABLE, DROP TABLE

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

    • TRUNCATE TABLE (O banco de dados PostgreSQL de origem deve ser PostgreSQL 11 ou posterior.)

    • CREATE INDEX ON TABLE

    Importante
    • Informações adicionais em instruções DDL, como CASCADE ou RESTRICT, não podem ser sincronizadas.

    • Instruções DDL de uma sessão que executa o comando SET session_replication_role = replica não podem ser sincronizadas.

    • Instruções DDL executadas chamando uma FUNCTION não são suportadas.

    • Se múltiplas instruções SQL enviadas pelo banco de dados de origem ao mesmo tempo contiverem instruções DML e DDL, as instruções DDL não serão sincronizadas.

    • Se múltiplas instruções SQL enviadas pelo banco de dados de origem ao mesmo tempo contiverem instruções DDL para objetos que não são sincronizados, as instruções DDL não serão sincronizadas.

    • Instruções DDL executadas diretamente dentro de um plug-in por meio da Server Programming Interface (SPI) não são suportadas.

Importante
  • Instruções DDL são sincronizadas apenas em tarefas diretas (da origem para o destino). Tarefas reversas filtram automaticamente as instruções DDL.

  • Ao executar DDL para modificar o esquema de uma tabela durante a sincronização bidirecional, certifique-se de que as gravações DML em ambos os bancos de dados sejam consistentes com o novo esquema. Por exemplo, se você exclua uma coluna da origem, o destino ainda poderá gravar dados com base no esquema antigo que inclui a coluna excluída, causando falhas.

Procedimento

  1. Compre uma instância de sincronização bidirecional de dados. Para mais informações, consulte Purchase a synchronization instance.

    Importante

    Na página de compra, defina o tipo de banco de dados de origem e de destino como PostgreSQL e defina a topologia de sincronização como Two-way Synchronization.

  2. Faça login na nova página DTS Sync Tasks.

    Nota

    Também é possível fazer login no Data Management (DMS). Na barra de menu superior, selecione Data + AI. No painel de navegação à esquerda, escolha Data Transmission (DTS) > Data Synchronization.

  3. No canto superior esquerdo da página, selecione a região da instância de destino.

  4. Encontre a instância de sincronização que você comprou e clique em Configure Task na coluna Actions da primeira tarefa de sincronização.

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

    Aviso

    Após selecionar as instâncias de origem e de destino, leia atentamente as limitações exibidas na parte superior da página. Caso as limitações não sejam seguidas, a tarefa poderá falhar ou poderá ocorrer inconsistência de dados.

    Categoria

    Parâmetro

    Descrição

    N/A

    Task Name

    O DTS gera automaticamente um nome para a tarefa. Recomendamos especificar um nome descritivo para fácil identificação. O nome não precisa ser único.

    Source Database

    Database Type

    Selecione PostgreSQL.

    Connection Type

    Selecione Alibaba Cloud Instance.

    Instance Region

    A região da instância de origem selecionada na compra. Este valor não pode ser alterado.

    Instance ID

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

    Database Name

    Insira o nome do banco de dados ao qual os objetos a serem sincronizados pertencem na instância de origem do ApsaraDB RDS for PostgreSQL.

    Database Account

    Insira uma conta com privilégios elevados na instância de origem do ApsaraDB RDS for PostgreSQL. A conta deve ser a proprietária do banco de dados especificado. Para mais informações, consulte Create an account e Create a database.

    Database Password

    Insira a senha correspondente à conta do banco de dados.

    Encryption

    Especifica se a conexão com o banco de dados de origem deve ser criptografada. Configure este parâmetro com base nos requisitos do seu negócio. Neste exemplo, Non-encrypted é selecionado.

    Se você deseja estabelecer uma conexão criptografada por SSL com o banco de dados de origem, execute as seguintes etapas: Selecione SSL-encrypted, faça o upload de CA Certificate, Client Certificate e Private Key of Client Certificate conforme necessário, e então especifique Private Key Password of Client Certificate.

    Nota
    • Se você definir Encryption como SSL-encrypted para um banco de dados PostgreSQL autogerenciado, deve fazer o upload de CA Certificate.

    • Para usar o certificado de cliente, faça o upload de Client Certificate e Private Key of Client Certificate e especifique Private Key Password of Client Certificate.

    • Para informações sobre como configurar a criptografia SSL para uma instância do ApsaraDB RDS for PostgreSQL, consulte SSL encryption.

    Destination Database

    Database Type

    Selecione PostgreSQL.

    Connection Type

    Selecione Alibaba Cloud Instance.

    Instance Region

    A região da instância de destino selecionada na compra. Este valor não pode ser alterado.

    Instance ID

    Selecione o ID da instância de destino do ApsaraDB RDS for PostgreSQL.

    Database Name

    Insira o nome do banco de dados ao qual os objetos a serem sincronizados pertencem na instância de destino do ApsaraDB RDS for PostgreSQL.

    Database Account

    Insira uma conta com privilégios elevados na instância de destino do ApsaraDB RDS for PostgreSQL. A conta deve ser a proprietária do banco de dados especificado. Para mais informações, consulte Create an account e Create a database.

    Database Password

    Insira a senha correspondente à conta do banco de dados.

    Encryption

    Especifica se a conexão com o banco de dados de origem deve ser criptografada. Configure este parâmetro com base nos requisitos do seu negócio. Neste exemplo, Non-encrypted é selecionado.

    Se você deseja estabelecer uma conexão criptografada por SSL com o banco de dados de origem, execute as seguintes etapas: Selecione SSL-encrypted, faça o upload de CA Certificate, Client Certificate e Private Key of Client Certificate conforme necessário, e então especifique Private Key Password of Client Certificate.

    Nota
    • Se você definir Encryption como SSL-encrypted para um banco de dados PostgreSQL autogerenciado, deve fazer o upload de CA Certificate.

    • Para usar o certificado de cliente, faça o upload de Client Certificate e Private Key of Client Certificate e especifique Private Key Password of Client Certificate.

    • Para informações sobre como configurar a criptografia SSL para uma instância do ApsaraDB RDS for PostgreSQL, consulte SSL encryption.

  6. Após concluir a configuração, clique em Test Connectivity and Proceed na parte inferior da página.

    Nota
    • Certifique-se de que os blocos CIDR de endereços IP dos servidores do DTS foram adicionados às configurações de segurança dos bancos de dados de origem e de destino para permitir o acesso dos servidores do DTS. Isso pode ser feito de forma automática ou manual. Para mais informações, consulte Add the IP address CIDR blocks of DTS servers to a whitelist.

    • Se o banco de dados de origem ou de destino for autogerenciado (onde o Access Method não é Alibaba Cloud Instance), clique também em Test Connectivity na caixa de diálogo CIDR Blocks of DTS Servers.

  7. Configure os objetos da tarefa.

    1. Na página Configure Objects, configure os objetos a serem sincronizados.

      Parâmetro

      Descrição

      Synchronization Types

      A opção Incremental Data Synchronization está selecionada. Por padrão, selecione também Schema Synchronization e Full Data Synchronization. Após a conclusão da pré-verificação, o DTS realiza uma sincronização completa de dados dos objetos selecionados da instância de origem para o cluster de destino. Isso serve como dados de linha de base para a subsequente sincronização incremental de dados.

      Nota

      Se a opção Schema Synchronization estiver selecionada, o DTS sincroniza os esquemas das tabelas (incluindo chaves estrangeiras) do banco de dados de origem para o banco de dados de destino.

      Processing Mode of Conflicting Tables

      • Precheck and Report Errors: Verifica se existe uma tabela com o mesmo nome no banco de dados de destino. Se não existir, a pré-verificação é aprovada. Se existir, a pré-verificação falha e a tarefa de sincronização de dados não é iniciada.

        Nota

        Caso não seja possível excluir ou renomear a tabela com o mesmo nome no banco de dados de destino, mapeie-a para um nome diferente. Para mais informações, consulte Map table and column names.

      • Ignore Errors and Proceed: Ignora a verificação de nomes de tabelas duplicados no banco de dados de destino.

        Aviso

        A seleção de Ignore Errors and Proceed pode causar inconsistência de dados e colocar seu negócio em risco. Por exemplo:

        • Se os esquemas das tabelas forem iguais e um registro no banco de dados de destino tiver o mesmo valor de chave primária ou única que um registro no banco de dados de origem:

          • Durante a sincronização completa, o DTS mantém o registro no cluster de destino. O registro correspondente do banco de dados de origem não é sincronizado.

          • Durante a sincronização incremental, o registro do banco de dados de origem sobrescreve o registro no banco de dados de destino.

        • Se os esquemas das tabelas forem diferentes, a sincronização inicial de dados poderá falhar. Isso pode resultar na sincronização de apenas dados parciais de colunas ou em uma falha completa de sincronização. Prossiga com cautela.

      Synchronization Topology

      Selecione Two-way Synchronization.

      Exclude DDL Operations

      • Yes: As operações DDL não são sincronizadas.

      • No: As operações DDL são sincronizadas.

      Importante

      Para garantir a estabilidade da sincronização bidirecional, apenas a tarefa direta (da origem para o destino) permite escolher se as operações DDL serão sincronizadas. A tarefa reversa (do destino para a origem) filtra automaticamente as operações DDL.

      Conflict Resolution Policy

      Se encontrar qualquer um dos tipos de conflito descritos acima, selecione uma política de resolução de conflitos com base nos requisitos do seu negócio.

      • TaskFailed (If a conflict occurs, an error is reported and the task is stopped)

        Se ocorrer um conflito de dados durante a sincronização, a tarefa reportará um erro e será interrompida. A tarefa entra no estado Failed e requer intervenção manual.

      • Ignore (If a conflict occurs, the conflicting record in the destination instance is used)

        Se ocorrer um conflito de dados durante a sincronização, a instrução de sincronização atual é ignorada e o processo continua. O registro conflitante no banco de dados de destino é mantido.

      • Overwrite (If a conflict occurs, the conflicting record in the destination instance is overwritten)

        Se ocorrer um conflito de dados durante a sincronização, o registro conflitante no banco de dados de destino é sobrescrito.

      Nota

      Se a tarefa de sincronização for pausada ou reiniciada e apresentar latência, essas políticas ficarão temporariamente ineficazes. Durante o período de latência, os dados de destino são sobrescritos por padrão.

      Capitalization of Object Names in Destination Instance

      É possível configurar a política de diferenciação de maiúsculas e minúsculas para os nomes de objetos de banco de dados, tabelas e colunas sincronizados com a instância de destino. Por padrão, a DTS default policy é selecionada. Também é possível optar por usar as políticas padrão dos bancos de dados de origem e de destino. Para mais informações, consulte Case sensitivity policy for destination object names.

      Source Objects

      Na caixa Source Objects, clique em um objeto a ser sincronizado e, em seguida, clique em 向右 para movê-lo para a caixa Selected Objects.

      Nota
      • É possível selecionar esquemas ou tabelas como objetos de sincronização. Ao selecionar tabelas, outros objetos, como visualizações, gatilhos e procedimentos armazenados, não serão sincronizados com o banco de dados de destino.

      • Se uma tabela a ser sincronizada contiver colunas do tipo SERIAL e você selecionar Schema Synchronization como tipo de sincronização, recomendamos selecionar também as sequências ou sincronizar o esquema inteiro.

      Selected Objects

      • Para renomear um único objeto de sincronização na instância de destino, clique com o botão direito no objeto na caixa Selected Objects. Para mais informações sobre como renomear objetos, consulte Map a single database, table, or column.

      • Para alterar os nomes de vários objetos de sincronização na instância de destino em lote, clique em Batch Edit no canto superior direito da caixa Selected Objects. Para mais informações, consulte Map databases, tables, and columns in a batch.

      Nota
      • Para selecionar operações SQL específicas para sincronizar no nível do esquema ou da tabela, clique com o botão direito no objeto alvo na seção Selected Objects e selecione as operações SQL na caixa de diálogo.

      • Para filtrar dados com condições WHERE, clique com o botão direito em uma tabela na seção Selected Objects e defina as condições de filtro na caixa de diálogo. Para mais informações, consulte Filter data by using SQL conditions.

      • O uso do recurso de mapeamento de nomes de objetos pode causar falha na sincronização de objetos dependentes.

    2. Clique em Next: Advanced Settings para configurar parâmetros avançados.

      Parâmetro

      Descrição

      Dedicated Cluster for Task Scheduling

      Por padrão, o DTS agenda tarefas em um cluster compartilhado e não é necessário selecionar um cluster. Para um desempenho mais estável, compre um cluster dedicado para executar tarefas de sincronização do DTS. Para mais informações, consulte What is a DTS dedicated cluster?.

      Retry Time for Failed Connections

      Após o início de uma tarefa de sincronização, se a conexão com o banco de dados de origem ou de destino falhar, o DTS reportará um erro e começará imediatamente a tentar reconectar. A duração padrão de tentativa é de 720 minutos. Também é possível especificar uma duração personalizada de 10 a 1.440 minutos. Recomendamos definir a duração para 30 minutos ou mais. Se o DTS conseguir se reconectar ao banco de dados dentro da duração especificada, a tarefa de sincronização será retomada automaticamente. Caso contrário, a tarefa falhará.

      Nota
      • Caso haja várias instâncias do DTS (por exemplo, Instância A e Instância B) que compartilham a mesma origem ou destino, e o tempo de tentativa de rede seja definido como 30 minutos para a Instância A e 60 minutos para a Instância B, a duração menor, de 30 minutos, será usada para ambas.

      • Como o DTS cobra pelo tempo de execução da tarefa durante o período de tentativa de conexão, recomendamos personalizar a duração da tentativa com base nas necessidades do seu negócio ou liberar 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 sincronização, se ocorrerem outros problemas não relacionados à conectividade com o banco de dados de origem ou de destino (como exceções de execução DDL ou DML), o DTS reportará um erro e iniciará imediatamente operações contínuas de tentativa. A duração padrão é de 10 minutos. Também é possível personalizar a duração dentro do intervalo de 1 a 1.440 minutos. Recomendamos definir para 10 minutos ou mais. Se as operações relevantes forem bem-sucedidas dentro da duração definida, a tarefa de sincronização será retomada automaticamente. Caso contrário, a tarefa falhará.

      Importante

      O valor para Retry Time for Other Issues deve ser menor que o valor para Retry Time for Failed Connections.

      Enable Throttling for Full Data Synchronization

      Durante a etapa de sincronização completa, o DTS consome recursos de leitura e gravação dos bancos de dados de origem e de destino, o que pode aumentar a carga do banco de dados. Para reduzir a carga nos bancos de dados de origem e de destino, defina um limite de taxa para a tarefa de sincronização completa configurando 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).

      Nota
      • Este item de configuração está disponível apenas quando Synchronization Types está definido como Full Data Synchronization.

      • Também é possível ajustar a taxa de sincronização completa após a instância de sincronização estar em execução.

      Enable Throttling for Incremental Data Synchronization

      Também é possível definir um limite de taxa para a tarefa de sincronização incremental. Para aliviar a pressão no banco de dados de destino, defina RPS of Incremental Data Synchronization e Data synchronization speed for incremental synchronization (MB/s).

      Environment Tag

      Opcional. Selecione uma tag de ambiente para rotular a instância. Não é necessário neste 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:

      Monitoring and Alerting

      Especifique se deseja configurar alertas. Se a sincronização falhar ou a latência exceder o limiar especificado, uma notificação será enviada para um contato de alerta.

    3. Clique em Next: Data Validation para configurar uma tarefa de validação de dados.

      Para usar o recurso de validação de dados, consulte Configure data validation para obter instruções de configuração.

  8. Salve a tarefa e execute uma pré-verificação.

    • Para visualizar os parâmetros da API para configurar esta instância, passe o mouse sobre o botão Next: Save Task Settings and Precheck e clique em Preview OpenAPI parameters no balão.

    • Após visualizar os parâmetros da API, clique em Next: Save Task Settings and Precheck na parte inferior da página.

    Nota
    • Antes do início da tarefa de sincronização, o DTS executa uma pré-verificação. A tarefa só pode ser iniciada após a aprovação de todos os itens de pré-verificação.

    • Se a pré-verificação falhar, clique em View Details para o item com falha. Corrija o problema conforme instruído e execute a pré-verificação novamente.

    • Se a pré-verificação retornar um aviso:

      • Se um item de verificação falhar e não puder ser ignorado, clique em View Details ao lado do item. Siga as instruções para corrigir o problema e 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 em sequência para pular o aviso e executar a pré-verificação novamente. Ignorar o item de aviso pode causar problemas como inconsistência de dados e apresentar riscos ao seu negócio.

  9. Após a Success Rate atingir 100%, clique em Back.

  10. Configure a tarefa de sincronização reversa.

    1. Aguarde a tarefa de sincronização direta concluir a sincronização inicial. O Status deve mostrar Running.

    2. Localize a tarefa de sincronização reversa e clique em Configure Task.

    3. Siga da Etapa 5 à Etapa 9 para configurar a tarefa de sincronização reversa.

      Importante
      • Ao configurar a tarefa reversa, troque as instâncias de origem e de destino: o destino da tarefa direta torna-se a origem da tarefa reversa, e vice-versa. Verifique se todos os detalhes da instância (nome do banco de dados, conta e senha) estão corretos.

      • Os campos Instance Region para a tarefa reversa não podem ser alterados. A tarefa reversa requer menos parâmetros do que a tarefa direta. Configure apenas os parâmetros mostrados no console.

      • A verificação de Processing Mode of Conflicting Tables para a tarefa reversa não detecta tabelas que foram sincronizadas pela tarefa direta.

      • A tarefa reversa não pode sincronizar objetos da lista Selected Objects da tarefa direta.

      • Não use o recurso de mapeamento de nomes de objetos para a tarefa reversa. Isso pode causar inconsistências de dados.

  11. Após configurar a tarefa reversa, aguarde o Status de ambas as tarefas de sincronização mostrar Running. A sincronização bidirecional agora está totalmente configurada.