Use o Data Transmission Service (DTS) para migrar dados de um cluster PolarDB for PostgreSQL para um banco de dados Oracle autogerenciado. O DTS oferece suporte à migração completa e incremental de dados, permitindo migrações sem tempo de inatividade ou uma cópia única integral.
Pré-requisitos
Antes de começar, verifique se:
O banco de dados Oracle autogerenciado foi criado com espaço em disco suficiente. O espaço do Oracle deve exceder o armazenamento utilizado pelo cluster PolarDB for PostgreSQL de origem.
O schema e as tabelas de destino já existem no banco de dados Oracle antes do início da migração. O DTS não realiza a migração de schema para este par de origem e destino.
A conta do banco de dados de origem possui permissões de conta privilegiada. Para obter instruções, consulte Create a database account.
A conta do banco de dados Oracle de destino tem permissões de proprietário sobre o schema de destino. Conceda as permissões usando as instruções CREATE USER e GRANT do Oracle.
(Apenas para migração incremental) O parâmetro
wal_leveldo cluster PolarDB for PostgreSQL de origem está definido comological. Para mais detalhes, consulte Set cluster parameters.(Apenas para migração incremental) O cluster PolarDB for PostgreSQL suporta e tem ativado o recurso Logical Replication Slot Failover. Isso evita que a replicação lógica seja interrompida durante um failover entre primário e secundário.
(Apenas para Oracle RAC) Se o banco de dados Oracle autogerenciado for um banco Real Application Clusters (RAC) conectado à Alibaba Cloud via VPC, conecte o SCAN IP e o endereço IP virtual (VIP) de cada nó à VPC da Alibaba Cloud e configure as rotas. Consulte Overview of solutions for connecting an on-premises data center to Alibaba Cloud e Connect an on-premises data center to DTS through a VPN Gateway para obter instruções.
Limitações
Limitações impeditivas
Resolva estes pontos antes de iniciar a migração. Ignorá-los pode causar falha na tarefa ou torná-la irrecuperável.
Sem migração de schema. Crie todos os schemas e tabelas de destino no Oracle antes de configurar a tarefa de migração.
Logical Replication Slot Failover obrigatório para migração incremental. Caso o cluster PolarDB for PostgreSQL de origem não suporte esse recurso (por exemplo, se o Database Engine for PostgreSQL 14), um failover de alta disponibilidade (HA) durante a migração poderá causar falha irrecuperável na instância de migração.
Limite de 256 MB por linha na migração incremental. Se uma única linha ultrapassar 256 MB após uma alteração incremental, a instância de migração falhará sem possibilidade de recuperação. Para retomar, reconfigure a instância.
Chave primária ou índice único não nulo obrigatórios. As tabelas a serem migradas devem possuir chave primária ou índice único não nulo.
Operações DDL proibidas durante a migração completa. Comandos DDL que alterem a estrutura do banco ou das tabelas causam falha na tarefa.
Foreign keys e triggers no banco de destino. Desative foreign keys e triggers no banco Oracle de destino antes da migração. Se permanecerem ativos, a tarefa poderá falhar.
-
Configuração REPLICA IDENTITY para migração incremental. Antes de gravar dados nas tabelas migradas, execute o comando abaixo no banco de origem. Faça isso em horários de baixa demanda e evite operações concorrentes de bloqueio de tabela para prevenir deadlocks.
ALTER TABLE schema.table REPLICA IDENTITY FULL;Execute este comando nos seguintes cenários: quando a instância for executada pela primeira vez; quando o objeto de migração for um schema e uma nova tabela for criada nele; ou quando o objeto de migração for um schema e uma tabela existente for recriada com o comando RENAME. Se você pular o item de pré-verificação relacionado, o DTS executa automaticamente esse comando durante a inicialização da instância.
Tabelas particionadas. Inclua tanto a tabela pai quanto todas as tabelas filhas como objetos de migração. No PostgreSQL, tabelas pai de partições não armazenam dados diretamente — todo o conteúdo reside nas tabelas filhas. Omitir as tabelas filhas gera inconsistência de dados.
Limitações gerais
Cada tarefa migra apenas um banco de dados. Configure uma tarefa separada para cada banco que deseja migrar.
O DTS não suporta a migração de tabelas da extensão TimescaleDB, tabelas com herança entre schemas ou tabelas com índices únicos baseados em expressões.
Schemas criados pela instalação de plugins não podem ser migrados e não aparecem no console durante a configuração da tarefa.
Operações de atualização e exclusão em cascata no banco de origem podem gerar inconsistência de dados no destino.
Como a migração completa executa operações INSERT concorrentes, o espaço ocupado pelas tabelas no destino pode ficar maior que na origem após a conclusão.
O DTS valida o conteúdo dos dados, mas não metadados como sequences. Valide sequences e outros metadados separadamente.
Transações longas combinadas com tarefas de migração incremental provocam acúmulo de write-ahead logs (WAL), podendo esgotar o espaço em disco do banco de origem.
Gerenciamento de slots de replicação
Durante a migração incremental, o DTS cria um slot de replicação com o prefixo dts_sync_ no banco de origem. Esse slot retém logs incrementais dos últimos 15 minutos. Quando a migração falha ou a instância é liberada, o DTS tenta limpar o slot automaticamente.
A limpeza automática falha nos casos abaixo, exigindo remoção manual do slot para evitar acúmulo em disco:
A senha da conta do banco de origem é alterada durante a migração.
O endereço IP do DTS é removido da lista de permissões de endereços IP do banco de origem durante a migração.
Ocorre um failover no banco de origem — faça login no banco secundário para limpar o slot.
Tabelas temporárias do DTS
O DTS cria as seguintes tabelas temporárias no banco de origem durante a migração. Não as exclua, pois isso causa falha na tarefa. O DTS as remove automaticamente quando a instância de migração é liberada.
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
Faturamento
|
Tipo de migração |
Taxa de configuração da instância |
Taxa de tráfego de internet |
|
Migração completa de dados |
Gratuita |
Cobrada quando o Access Method do destino é Public IP Address. Consulte Billing overview. |
|
Migração incremental de dados |
Cobrada. Consulte Billing overview. |
— |
Operações SQL suportadas para migração incremental
|
Tipo de operação |
Instruções SQL |
|
DML |
INSERT, UPDATE, DELETE |
Migrar dados
Etapa 1: Abrir a página de configuração da tarefa de migração
Use um dos pontos de entrada abaixo.
Pelo console do DTS:
Faça login no console do Data Transmission Service (DTS).
No painel de navegação à esquerda, clique em Data Migration.
No canto superior esquerdo, selecione a região onde a instância de migração estará localizada.
Clique em Create Task.
Pelo console do DMS:
A navegação real pode variar conforme o modo e o layout do console do DMS. Para detalhes, consulte Simple mode console e Customize the layout and style of the DMS console .
Faça login no console do Data Management (DMS).
Na barra de menu superior, escolha Data + AI > Data Transmission (DTS) > Data Migration.
À direita de Data Migration Tasks, selecione a região de destino.
Clique em Create Task.
Etapa 2: Configurar bancos de dados de origem e destino
Na página de configuração da tarefa, defina Task Name com um nome descritivo para facilitar a identificação. O nome não precisa ser único.
Banco de dados de origem (PolarDB for PostgreSQL):
|
Parâmetro |
Valor |
|
Select Existing Connection |
Selecione uma instância registrada anteriormente ou deixe em branco para configurar manualmente. |
|
Database Type |
PolarDB for PostgreSQL |
|
Access Method |
Alibaba Cloud Instance |
|
Instance Region |
Selecione a região do cluster PolarDB for PostgreSQL de origem. |
|
Replicate Data Across Alibaba Cloud Accounts |
Selecione No se estiver usando uma instância da conta atual da 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 migrados. |
|
Database Account |
Insira a conta privilegiada. Consulte Pré-requisitos. |
|
Database Password |
Insira a senha da conta. |
Banco de dados de destino (Oracle):
|
Parâmetro |
Valor |
|
Select Existing Connection |
Selecione uma instância registrada anteriormente ou deixe em branco para configurar manualmente. |
|
Database Type |
Oracle |
|
Access Method |
Escolha conforme o local de implantação. Este guia usa Self-managed Database on ECS como exemplo. Para outros tipos de implantação, consulte Preparations overview. |
|
Instance Region |
Selecione a região do banco de dados Oracle de destino. |
|
ECS Instance ID |
Selecione a instância ECS que hospeda o banco de dados Oracle. |
|
Port Number |
Insira a porta do service Oracle. Padrão: 1521. |
|
Oracle Type |
Selecione Non-RAC Instance (insira o SID) ou RAC or PDB Instance (insira o Service Name). Neste exemplo, selecione RAC or PDB Instance e insira o Service Name. |
|
Database Account |
Insira a conta Oracle com permissões de proprietário do schema. |
|
Database Password |
Insira a senha da conta. |
Após concluir a configuração, clique em Test Connectivity and Proceed. Na caixa de diálogo CIDR Blocks of DTS Servers, clique em Test Connectivity.
Certifique-se de que os intervalos de endereços IP dos servidores DTS foram adicionados às configurações de segurança dos bancos de origem e destino. Consulte Add DTS server IP addresses to a whitelist .
Etapa 3: Configurar objetos de migração
Na página Configure Objects, defina os seguintes parâmetros:
| Parâmetro | Descrição |
|---|---|
| Migration Types | Selecione Full Data Migration para uma cópia única. Marque tanto Full Data Migration quanto Incremental Data Migration para migração sem tempo de inatividade. Caso selecione apenas a migração completa, não grave novos dados no banco de origem durante o processo para manter a consistência. |
| Processing Mode of Conflicting Tables | Precheck and Report Errors (padrão): a pré-verificação falha se existir uma tabela com o mesmo nome no destino. Ignore Errors and Proceed: ignora a verificação de conflitos. Use com cautela — essa opção pode sobrescrever dados no destino ou causar falhas se os schemas das tabelas forem diferentes. |
| Capitalization of object names in destination instance | Define a política de diferenciação de maiúsculas e minúsculas para os nomes dos objetos migrados. O padrão é DTS default policy. Consulte Case sensitivity of object names in the destination database. |
| Source Objects | Clique nos objetos na caixa Source Objects e mova-os para Selected Objects usando a seta. É possível selecionar schemas ou tabelas. |
| Selected Objects | Clique com o botão direito em um objeto de migração para usar o mapeamento de nomes (mapear para um schema, tabela ou coluna específica no banco Oracle de destino), selecionar operações SQL no nível da tabela ou definir condições de filtro. Consulte Database, Table, and Column Name Mapping e Set filter conditions. Nota
|
Clique em Next: Advanced Settings.
Etapa 4: Configurar definições avançadas
|
Parâmetro |
Descrição |
|
Dedicated Cluster for Task Scheduling |
Por padrão, o DTS agenda tarefas em um cluster compartilhado. Para maior estabilidade, adquira um dedicated cluster. |
|
Retry Time for Failed Connections |
Tempo durante o qual o DTS tenta reconectar após falha de conexão. Padrão: 720 minutos. Defina um valor entre 10 e 1.440 minutos. Em produção, configure acima de 30 minutos. A tarefa é faturada durante esse período. |
|
Retry Time for Other Issues |
Tempo de nova tentativa após erros não relacionados à conectividade (exceções DDL ou DML). Padrão: 10 minutos. Defina entre 1 e 1.440 minutos. Deve ser menor que Retry Time for Failed Connections. |
|
Enable Throttling for Full Data Migration |
Limita o QPS no banco de origem, o RPS da migração completa e a velocidade de transferência (MB/s) para reduzir a carga no banco. Disponível apenas quando Full Data Migration estiver selecionado. Também é possível adjust throttling após o início da tarefa. |
|
Enable Throttling for Incremental Data Migration |
Limita o RPS da migração incremental e a velocidade de transferência (MB/s). Disponível apenas quando Incremental Data Migration estiver selecionado. Você também pode adjust throttling após o início da tarefa. |
|
Environment Tag |
(Opcional) Selecione uma tag para identificar a instância. |
|
Configure ETL |
Selecione Yes para configurar o ETL feature e inserir data processing statements. Escolha No para ignorar o ETL. |
|
Monitoring and Alerting |
Selecione Yes para definir um alert threshold e notificações de alerta para falhas de migração ou latência acima do limiar. |
Etapa 5: Executar a pré-verificação
Clique em Next: Save Task Settings and Precheck.
Para visualizar os parâmetros da API desta configuração, passe o mouse sobre o botão Next: Save Task Settings and Precheck e clique em Preview OpenAPI parameters .
O DTS executa uma pré-verificação antes de iniciar a migração. Se a pré-verificação falhar:
Clique em View Details ao lado do item com falha, corrija o problema e execute a pré-verificação novamente.
Para avisos que podem ser ignorados, clique em Confirm Alert Details > Ignore > OK > Precheck Again. Ignorar avisos pode causar inconsistência de dados.
Etapa 6: Adquirir a instância e iniciar a migração
Quando a Success Rate atingir 100%, clique em Next: Purchase Instance.
Na página Purchase, selecione o grupo de recursos e a classe da instância. A classe da instância influencia a velocidade da migração. Consulte Data migration link specifications.
Leia e aceite os Data Transmission Service (Pay-as-you-go) Service Terms.
Clique em Buy and Start e depois em OK na caixa de diálogo de confirmação.
A tarefa de migração aparece na lista Data Migration Tasks. Tarefas de migração completa param automaticamente ao terminar (status: Completed). Tarefas de migração incremental continuam em execução (status: Running) até que você as interrompa.
Alternar sua aplicação para o banco de dados de destino
Em migrações incrementais, aguarde até que a fase Incremental Data Migration da tarefa apresente latência de 0s e então:
Interrompa a gravação de dados no banco de origem.
Aguarde alguns minutos para que a latência retorne a 0s.
Pare a tarefa de migração.
Redirecione as conexões da sua aplicação para o banco de dados Oracle de destino.
O DTS tenta recuperar automaticamente tarefas com falha dentro de sete dias. Antes de alternar sua aplicação para o destino, encerre ou libere a tarefa de migração, ou revogue as permissões de escrita da conta do DTS no banco de destino. Isso evita que dados da origem sobrescrevam os do destino caso a tarefa seja recuperada automaticamente.
O suporte técnico do DTS tentará recuperar tarefas com falha em até 8 horas. Durante a recuperação, o DTS pode reiniciar a tarefa ou ajustar seus parâmetros. Apenas parâmetros da tarefa DTS são modificados — os parâmetros do banco de dados permanecem inalterados. Para ver os parâmetros modificáveis, consulte Modify instance parameters .