Todos os produtos
Search
Central de documentação

Data Transmission Service:Sincronizar dados do PolarDB for PostgreSQL para o SelectDB

Última atualização: Jun 27, 2026

Use o Data Transmission Service (DTS) para sincronizar dados de um cluster PolarDB for PostgreSQL para uma instância ApsaraDB for SelectDB destinada a análises de dados em larga escala. O DTS oferece suporte à sincronização de schema, sincronização completa de dados e sincronização incremental contínua.

Pré-requisitos

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

  • Uma instância ApsaraDB for SelectDB de destino com mais espaço em disco do que o utilizado pelo cluster PolarDB for PostgreSQL de origem. Para mais informações, consulte Criar uma instância.

  • O parâmetro wal_level do cluster PolarDB for PostgreSQL de origem definido como logical. Para mais informações, consulte Definir parâmetros do cluster.

Faturamento

Tipo de sincronização

Tarifa

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

Gratuita

Sincronização incremental de dados

Paga. Para mais informações, consulte Visão geral do faturamento.

Operações SQL suportadas

Tipo de operação

Instrução SQL

DML

INSERT, UPDATE, DELETE

DDL

ADD COLUMN, DROP COLUMN

Permissões necessárias

Banco de dados

Permissões necessárias

Como conceder

Cluster PolarDB for PostgreSQL de origem

Conta privilegiada proprietária do banco de dados a ser sincronizado

Criar uma conta de banco de dados e Gerenciamento de banco de dados

Instância ApsaraDB for SelectDB de destino

Permissões de acesso ao cluster (Usage_priv) e permissões de acesso ao banco de dados (Select_priv, Load_priv, Alter_priv, Create_priv e Drop_priv)

Gerenciamento de permissões do cluster e Gerenciamento básico de permissões

Limitações

Banco de dados de origem

  • Todas as tabelas a serem sincronizadas devem ter uma chave primária ou um índice único não nulo. Se os campos da tabela não forem únicos, dados duplicados poderão surgir no banco de dados de destino.

  • Para tabelas sem chave primária ou índice único não nulo: selecione Schema Synchronization em Synchronization Types e duplicate para Engine na etapa Configurations for Databases, Tables, and Columns.

  • Transações de longa duração no banco de dados de origem podem causar acúmulo de logs WAL (write-ahead logging) antes do commit dessas transações, o que pode esgotar o espaço em disco do banco de dados de origem.

  • O cluster PolarDB for PostgreSQL deve oferecer suporte e ter o recurso Logical Replication Slot Failover ativado. Se o cluster usar o PostgreSQL 14, que não oferece suporte ao Logical Replication Slot Failover, um failover de alta disponibilidade (HA) poderá causar falha permanente na instância de sincronização, exigindo reconfiguração completa.

  • Se uma única alteração incremental exceder 256 MB, a instância de sincronização poderá falhar permanentemente. Reconfigure a instância de sincronização para recuperar.

  • Não execute operações DDL que alterem schemas durante a sincronização inicial de schema ou a sincronização inicial completa de dados. O DTS consulta o banco de dados de origem durante a sincronização inicial completa de dados, criando bloqueios de metadados que podem impedir operações DDL.

Banco de dados de destino

Requisitos do modelo de dados do SelectDB

O DTS só consegue sincronizar dados para tabelas que usam o modelo Unique Key ou Duplicate key no ApsaraDB for SelectDB. Escolha o modelo conforme suas necessidades:

Requisito

Modelo recomendado

Observações

Registros consistentes e deduplicados

Modelo Unique Key

Todas as chaves únicas da tabela de destino devem existir na tabela de origem e no objeto de sincronização. Chaves ausentes causam inconsistência de dados.

Inserção apenas por adição (append-only) ou ingestão de alto throughput

Modelo Duplicate key

Dados duplicados podem aparecer se ocorrer uma nova tentativa ou se duas ou mais operações DML forem executadas na mesma linha após o início da instância de sincronização. Use as colunas _is_deleted, _version e _record_id para deduplicação. O DTS converte instruções UPDATE e DELETE em instruções INSERT para tabelas do modelo Duplicate key.

Restrições de objetos e nomenclatura

  • Apenas o parâmetro bucket_count pode ser especificado na seção Selected Objects. O valor deve ser um número inteiro positivo. Valor padrão: auto.

  • O ApsaraDB for SelectDB aceita apenas nomes de bancos de dados e tabelas que começam com uma letra. Use o recurso de mapeamento de nomes de objetos para renomear objetos que não iniciem com letra.

  • Nomes de objetos (bancos de dados, tabelas ou colunas) contendo caracteres chineses devem ser renomeados por meio do recurso de mapeamento de nomes de objetos.

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

Escopo de sincronização e limites de DDL

  • Não há suporte para sincronização de tabelas de extensão TimescaleDB nem tabelas com herança entre schemas.

  • Não é possível modificar operações DDL em várias colunas simultaneamente, nem modificar operações DDL na mesma tabela consecutivamente.

  • Em cenários de mesclagem de múltiplas tabelas (sincronização de várias tabelas de origem para uma única tabela de destino), os schemas de todas as tabelas de origem devem ser idênticos. Caso contrário, podem ocorrer inconsistências de dados ou falha na tarefa.

Tabelas particionadas

Ao sincronizar tabelas particionadas, inclua tanto a tabela pai quanto todas as suas partições filhas como objetos de sincronização. A tabela pai de uma tabela particionada do PostgreSQL não armazena dados diretamente — todos os dados residem nas partições filhas. A omissão de partições causa inconsistência de dados.

Requisito de REPLICA IDENTITY

Execute o seguinte comando nas tabelas antes de gravar dados nestes três cenários: quando a instância é executada pela primeira vez; quando você seleciona objetos no nível de schema e uma nova tabela é criada ou reconstruída usando RENAME; e quando usa o recurso para modificar objetos de sincronização.

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. Não realize operações de bloqueio de tabela enquanto este comando estiver em execução. Se você ignorar a pré-verificação relacionada, o DTS executa automaticamente este comando durante a inicialização da instância.

Operações que causam falha na tarefa

As operações a seguir causam falha na tarefa de sincronização. Reinicie a instância de sincronização para retomar:

  • Adicionar nós de backend ao banco de dados ApsaraDB for SelectDB de destino durante a sincronização

  • Criar clusters na instância ApsaraDB for SelectDB de destino durante a sincronização

Tabelas temporárias

O DTS cria as seguintes tabelas temporárias no banco de dados de origem para dar suporte à sincronização incremental. Não as exclua durante a sincronizaçã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 e public.aliyun_dts_instance.

Slot de replicação

O DTS cria um slot de replicação com o prefixo dts_sync_ no banco de dados de origem. Este slot retém logs incrementais dos últimos 15 minutos. Quando a tarefa de sincronização falha ou a instância é liberada, o DTS tenta limpar o slot automaticamente.

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

Replication slot query information

Incremental synchronization latency

O DTS usa uma política de sincronização em lote para reduzir a carga no destino. Por padrão, o DTS grava dados no máximo uma vez a cada 5 segundos por objeto de sincronização, resultando em uma latência normal de sincronização de até 10 segundos. Para reduzir essa latência, modifique o parâmetro selectdb.reservoir.timeout.milliseconds da instância DTS no console. O intervalo válido é de 1.000 a 10.000 milissegundos.

Um tempo de lote menor aumenta a frequência de gravação, o que pode elevar a carga e o tempo de resposta de gravação do destino e, consequentemente, aumentar a latência de sincronização do DTS. Ajuste o tempo de lote com base na carga do destino.

Outras observações

  • O DTS não verifica a validade de metadados como sequências. Verifique manualmente a validade dos metadados antes e depois da sincronização.

  • Realize a sincronização completa de dados quando a carga da CPU dos bancos de dados de origem e de destino estiver abaixo de 30%.

  • Se uma instância falhar, a equipe de suporte do DTS tentará recuperá-la dentro de 8 horas. Durante a recuperação, apenas os parâmetros da instância DTS podem ser modificados — os parâmetros do banco de dados não são alterados. Para os parâmetros que podem ser modificados, consulte Modificar parâmetros da instância.

Criar uma tarefa de sincronização

Etapa 1: Acessar a página Data Synchronization

Use um dos consoles a seguir.

Console do DTS

  1. Faça login no .Console do DTS

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

  3. No canto superior esquerdo da página, selecione a região onde reside a tarefa de sincronização.

Console do DMS

Nota

As operações reais podem variar dependendo do modo e do layout do console do DMS. Para mais informações, consulte Modo simples e Personalizar o layout e o 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 e escolha DTS (DTS) > Data Synchronization.

  3. Na lista suspensa à direita de Data Synchronization Tasks, selecione a região onde reside a instância de sincronização.

Etapa 2: Configurar bancos de dados de origem e destino

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

  2. Configure os bancos de dados de origem e destino usando os parâmetros a seguir.

    Categoria

    Parâmetro

    Descrição

    Nenhum

    Task Name

    Nome da tarefa. O DTS gera um nome automaticamente. Especifique um nome descritivo para facilitar a identificação da tarefa. Não é necessário um nome exclusivo.

    Source Database

    Select Existing Connection

    Se você registrou a instância do banco de dados no DTS, selecione-a na lista suspensa. O DTS preenche automaticamente os parâmetros do banco de dados. Caso contrário, configure os parâmetros a seguir manualmente.

    Database Type

    Selecione PolarDB for PostgreSQL.

    Access Method

    Selecione Alibaba Cloud Instance.

    Instance Region

    Selecione a região onde reside o cluster PolarDB for PostgreSQL de origem.

    Replicate Data Across Alibaba Cloud Accounts

    Selecione No se os bancos de dados de origem e destino pertencerem à mesma conta Alibaba Cloud.

    Instance ID

    Selecione o ID do cluster PolarDB for PostgreSQL de origem.

    Database Name

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

    Database Account

    Insira a conta do banco de dados. Para requisitos de permissão, consulte Permissões necessárias.

    Database Password

    Insira a senha da conta do banco de dados.

    Destination Database

    Select Existing Connection

    Se você registrou a instância do banco de dados no DTS, selecione-a na lista suspensa. O DTS preenche automaticamente os parâmetros do banco de dados. Caso contrário, configure os parâmetros a seguir manualmente.

    Database Type

    Selecione SelectDB.

    Access Method

    Selecione Alibaba Cloud Instance.

    Instance Region

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

    Replicate Data Across Alibaba Cloud Accounts

    Selecione No se os bancos de dados de origem e destino 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. Para requisitos de permissão, consulte Permissões necessárias.

    Database Password

    Insira a senha da conta do banco de dados.

  3. 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 de destino. Para mais informações, consulte Adicionar endereços IP do servidor DTS a uma lista de permissões .

Etapa 3: Configurar objetos de sincronização

  1. Na etapa Configure Objects, configure os parâmetros de sincronização.

    Parâmetro Descrição
    Synchronization Types Por padrão, Incremental Data Synchronization está selecionado. Selecione também Schema Synchronization e Full Data Synchronization. Após a conclusão da pré-verificação, o DTS sincroniza os dados históricos como base para a sincronização incremental contínua.
    Importante

    Ao sincronizar do PolarDB for PostgreSQL para o SelectDB, ocorre conversão de tipos de dados. Se você não selecionar Schema Synchronization, crie as tabelas de destino manualmente usando o modelo Unique ou Duplicate correspondente. Para mais informações, consulte Mapeamento de tipos de dados, Informações adicionais de coluna e Modelo de dados.

    Processing Mode of Conflicting Tables Precheck and Report Errors: O DTS verifica a existência de tabelas com o mesmo nome no banco de dados de destino. Se houver uma tabela duplicada, a pré-verificação falha e a tarefa não inicia.
    Nota

    Se não for possível excluir ou renomear a tabela duplicada, use o recurso de mapeamento de nomes de objetos. Para mais informações, consulte Mapear nomes de schema, tabela e coluna. Ignore Errors and Proceed: O DTS ignora a verificação de nomes de tabela duplicados.

    Aviso

    Esta opção pode causar inconsistência de dados. Se os schemas das tabelas forem iguais e um registro tiver uma chave primária ou única correspondente, o registro de origem sobrescreverá o registro de destino. Se os schemas diferirem, a inicialização pode falhar ou apenas algumas colunas podem ser sincronizadas.

    Capitalization of Object Names in Destination Instance Política de uso de maiúsculas/minúsculas para nomes de bancos de dados, tabelas e colunas na instância de destino. Padrão: DTS default policy. Para mais informações, consulte Especificar o uso de maiúsculas/minúsculas em nomes de objetos na instância de destino.
    Source Objects Selecione um ou mais objetos e clique no ícone 向右 para movê-los para Selected Objects. Os objetos podem ser selecionados no nível de schema, tabela ou coluna.
    Selected Objects - Para renomear um objeto de destino ou especificar um objeto receptor, clique com o botão direito nele na seção Selected Objects. Para mais informações, consulte Mapear nomes de objetos. - Para remover um objeto selecionado, clique nele e depois clique no ícone image. - Para definir o parâmetro bucket_count de uma tabela (disponível apenas quando Schema Synchronization estiver selecionado e os objetos forem selecionados no nível de tabela): clique com o botão direito na tabela, defina Enable Parameter Settings como Yesconfigurações de notificação de alerta, insira o valor e clique em OK.
    Nota

    Renomear um objeto usando o mapeamento de nomes de objetos pode causar falha na sincronização de objetos dependentes. Para filtrar dados com condições WHERE, clique com o botão direito em uma tabela e especifique as condições. Para mais informações, consulte Especificar condições de filtro. Para selecionar operações SQL para sincronização incremental, clique com o botão direito em um objeto e selecione as operações.

  2. Clique em Next: Advanced Settings e configure os parâmetros a seguir.

    Parâmetro Descrição
    Dedicated Cluster for Task Scheduling Por padrão, o DTS agenda a tarefa para o cluster compartilhado. Para melhorar a estabilidade, adquira um cluster dedicado. Para mais informações, consulte O que é um cluster dedicado do DTS.
    Retry Time for Failed Connections Intervalo de tempo para tentar novamente conexões com falha. Valores válidos: 10–1440 minutos. Padrão: 720 minutos. Defina como mais de 30 minutos. Se o DTS reconectar dentro desta janela, a tarefa será retomada. Caso contrário, a tarefa falhará.
    Nota

    Se várias tarefas compartilharem o mesmo banco de dados de origem ou destino e tiverem janelas de nova tentativa diferentes, a janela mais curta terá precedência. O DTS cobra pela instância durante as novas tentativas.

    Retry Time for Other Issues Intervalo de tempo para tentar novamente operações DDL ou DML com falha. Valores válidos: 1–1440 minutos. Padrão: 10 minutos. Defina como mais de 10 minutos. Este valor deve ser menor que Retry Time for Failed Connections.
    Enable Throttling for Full Data Synchronization Limite a sincronização completa de dados para reduzir a carga na origem e no destino. Configure Queries per second (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 Synchronization estiver selecionado.
    Enable Throttling for Incremental Data Synchronization Limite a sincronização incremental de dados configurando RPS of Incremental Data Synchronization e Data synchronization speed for incremental synchronization (MB/s).
    Environment Tag Uma tag opcional para identificar a instância.
    Configure ETL Especifique se deseja ativar o recurso de extração, transformação e carga (ETL). Selecione Yes para inserir instruções de processamento de dados no editor de código. Para mais informações, consulte Configurar ETL em uma tarefa de migração ou sincronização de dados. Selecione No para pular a configuração de ETL.
    Monitoring and Alerting Especifique se deseja configurar alertas. Selecione Yes para configurar o limiar de alerta e as definições de notificação. Para mais informações, consulte a seção Configurar monitoramento e alertas ao criar uma tarefa DTS.
  3. (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 quando Schema Synchronization estiver selecionado em Synchronization Types . Defina Definition Status como All para fazer modificações. - Você pode selecionar várias colunas como uma chave primária composta. Pelo menos uma coluna em Primary Key Column também deve ser selecionada como Distribution Key . - Para tabelas sem chave primária ou restrição UNIQUE, defina Engine como duplicate . Caso contrário, a sincronização pode falhar ou dados podem ser perdidos.

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

  1. Clique em Next: Save Task Settings and Precheck. O DTS executa uma pré-verificação antes que a tarefa de sincronização possa iniciar. A tarefa só começa após a aprovação na pré-verificação.

    Para visualizar os parâmetros da API para esta configuração, passe o ponteiro sobre Next: Save Task Settings and Precheck e clique em Preview OpenAPI parameters .
  2. Se a pré-verificação falhar, clique em View Details ao lado de cada item com falha, solucione o problema e execute a pré-verificação novamente.

  3. Se um alerta for acionado:

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

    • Se o alerta puder ser ignorado, clique em Confirm Alert Details, clique em Ignore na caixa de diálogo View Details, clique em OK e, em seguida, clique em Precheck Again.

    Ignorar alertas pode causar inconsistência de dados e expor seu negócio a riscos.

Etapa 5: Adquirir a instância

  1. Aguarde até que a Success Rate atinja 100%, então clique em Next: Purchase Instance.

  2. Na página buy, configure os parâmetros a seguir.

    Parâmetro

    Descrição

    Billing Method

    Subscription: Pagamento antecipado por uma duração fixa. Mais econômico para uso de longo prazo. Pay-as-you-go: Faturamento por hora. Adequado para uso de curto prazo. Libere a instância quando não for mais necessária para reduzir custos.

    Resource Group Settings

    O grupo de recursos para a instância de sincronização. Padrão: default resource group. Para mais informações, consulte O que é Resource Management?

    Instance Class

    A categoria de velocidade de sincronização. Selecione com base nos requisitos do seu negócio. Para mais informações, consulte Classes de instância de instâncias de sincronização de dados.

    Subscription Duration

    Disponível apenas para o método de faturamento por assinatura. Opções: 1–9 meses, 1 ano, 2 anos, 3 anos ou 5 anos.

  3. Leia e selecione Data Transmission Service (Pay-as-you-go) Service Terms.

  4. Clique em Buy and Start. Na caixa de diálogo exibida, clique em OK.

A tarefa aparece na lista de tarefas. Monitore o progresso a partir dela.

Mapeamento de tipos de dados

A tabela a seguir mostra como os tipos de dados do PolarDB for PostgreSQL são mapeados para os tipos de dados do SelectDB.

Categoria Tipo de dados do PolarDB for PostgreSQL Tipo de dados do SelectDB
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.
Importante

Para evitar perda de dados, CHAR(n) e VARCHAR(n) são convertidos para VARCHAR(4\*n). Se nenhum comprimento for especificado, o padrão VARCHAR(65533) do SelectDB será usado. Se o comprimento exceder 65533, os dados serão convertidos 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

Informações adicionais de coluna

Para tabelas que usam o modelo Duplicate key, o DTS adiciona automaticamente ou exige as seguintes colunas na tabela de destino.

Nome da coluna

Tipo de dados

Valor padrão

Descrição

_is_deleted

Int

0

Sinalizador de exclusão. Inserção: 0. Atualização: 0. Exclusão: 1.

_version

Bigint

0

Sincronização completa de dados: 0. Sincronização incremental de dados: o timestamp correspondente em segundos do log binário do banco de dados de origem.

_record_id

Bigint

0

Sincronização completa de dados: 0. Sincronização incremental de dados: o ID do registro do log incremental, que identifica exclusivamente a entrada de log. O valor é único e incremental.