Use o Data Transmission Service (DTS) para migrar dados entre clusters do PolarDB for PostgreSQL com tempo de inatividade mínimo ou nulo.
Pré-requisitos
Antes de começar, verifique se você possui:
Um cluster de destino do PolarDB for PostgreSQL com espaço de armazenamento maior que o do cluster de origem. Consulte Create a database cluster.
O parâmetro
wal_levelno cluster de origem definido comological. Consulte Set cluster parameters.Um banco de dados criado no cluster de destino para receber os dados migrados. Consulte Database management.
Faturamento
|
Tipo de migração |
Taxa de configuração de link |
Custo de transferência de dados |
|
Migração de schema e migração de dados completa |
Gratuita |
Gratuita para este exemplo |
|
Migração de dados incremental |
Paga. Consulte Billing overview |
— |
Objetos de migração compatíveis
SCHEMA, TABLE — incluindo PRIMARY KEY, UNIQUE KEY, FOREIGN KEY, DATATYPE (tipos de dados integrados) e DEFAULT CONSTRAINT.
Os recursos compatíveis para este tipo de banco de dados como origem variam de acordo com o tipo de banco de dados de destino. O console exibe os recursos aplicáveis.
Operações SQL compatíveis para migração incremental
|
Tipo de operação |
Instruções SQL |
|
DML |
INSERT, UPDATE, DELETE |
|
DDL |
CREATE TABLE, DROP TABLE, ALTER TABLE (RENAME TABLE, ADD COLUMN, ADD COLUMN DEFAULT, ALTER COLUMN TYPE, DROP COLUMN, ADD CONSTRAINT, ADD CONSTRAINT CHECK, ALTER COLUMN DROP DEFAULT), TRUNCATE TABLE (apenas PostgreSQL 11 e posterior), CREATE INDEX ON TABLE |
A migração de DDL é compatível apenas para tarefas criadas após 1º de outubro de 2020.
Para tarefas criadas antes de 12 de maio de 2023, crie triggers e functions no banco de dados de origem para capturar alterações de DDL antes de configurar a tarefa. Consulte Usar triggers e functions para migração incremental de DDL do PostgreSQL.
A migração de DDL requer uma conta privilegiada no banco de dados de origem.
A migração incremental não é compatível com o tipo de dados BIT.
Instruções DDL com cláusulas CASCADE ou RESTRICT não são compatíveis.
Instruções DDL executadas em sessões onde
SET session_replication_role = replicaestá definido não são compatíveis.Instruções DDL executadas pela chamada de functions não são compatíveis.
Se uma única transação contiver instruções DML e DDL, a instrução DDL não será migrada.
Se uma única transação contiver instruções DDL para objetos não selecionados para migração, essas instruções DDL não serão migradas.
Permissões da conta do banco de dados
|
Banco de dados |
Permissões necessárias |
Como criar |
|
PolarDB for PostgreSQL de origem |
Conta privilegiada |
|
|
PolarDB for PostgreSQL de destino |
Conta privilegiada ou superusuário |
Limitações
Analise as seguintes limitações antes de iniciar a tarefa de migração.
Banco de dados de origem:
As tabelas a serem migradas devem ter uma chave primária ou um índice exclusivo não nulo.
Transações de longa duração durante a migração incremental causam acúmulo de write-ahead log (WAL), o que pode esgotar o espaço em disco no banco de dados de origem.
O cluster de origem deve ser compatível e ativar o Failover de slot de replicação lógica. Se o cluster não for compatível (por exemplo, o Database Engine é PostgreSQL 14), um failover de alta disponibilidade (HA) no banco de dados de origem pode fazer com que a instância de migração falhe de forma irrecuperável.
Durante a migração de schema e a migração completa, não execute operações DDL que alterem a estrutura do banco de dados ou da tabela. Caso contrário, a tarefa de migração falhará.
Durante a migração apenas completa, não grave novos dados na instância de origem, pois ocorrerá inconsistência de dados. Para manter a consistência em tempo real, execute a migração de schema, a migração de dados completa e a migração de dados incremental juntas.
Se uma única alteração incremental exceder 256 MB, a instância de migração falhará e não poderá ser recuperada. Será necessário reconfigurar a instância de migração.
Migration scope:
Uma única tarefa de migração pode migrar apenas um banco de dados. Configure uma tarefa separada para cada banco de dados que você precisa migrar.
O DTS não é compatível com: tabelas de extensão do TimescaleDB, tabelas com herança entre schemas ou tabelas com índices exclusivos baseados em expressões.
Schemas criados pela instalação de plugins não podem ser migrados e não ficam visíveis no console ao configurar uma tarefa.
Requisitos para migração incremental:
-
Execute
ALTER TABLE schema.table REPLICA IDENTITY FULL;em todas as tabelas a serem migradas no banco de dados de origem antes de gravar dados nelas. Não execute operações de bloqueio de tabela ao executar este comando, pois isso pode causar deadlocks. O DTS executa este comando automaticamente durante a inicialização da instância se você pular a pré-verificação. Execute este comando nas seguintes situações:Quando a instância é executada pela primeira vez.
Quando o objeto de migração é um schema e uma nova tabela é criada no schema, ou quando uma tabela existente é reconstruída usando RENAME.
Substitua
schemaetablepelos nomes reais. Execute este comando fora dos horários de pico. Se uma tabela contiver um campo SERIAL e você selecionar Schema Migration para Migration Types, selecione também Sequence ou migre o schema inteiro. Caso contrário, a instância de migração poderá falhar.
-
O DTS cria um slot de replicação com o prefixo
dts_sync_no banco de dados de origem para replicar dados, retendo logs incrementais dos últimos 15 minutos. O DTS tenta limpar esse slot automaticamente quando a migração falha ou a instância é liberada.Se você alterar a senha da conta do banco de dados de origem ou remover endereços IP do DTS da lista de permissões do banco de dados de origem durante a migração, o slot de replicação não poderá ser limpo automaticamente. Limpe o slot manualmente para evitar que ele acumule e consuma espaço em disco, o que pode indisponibilizar o banco de dados de origem. Se ocorrer um failover no banco de dados de origem, faça login no banco de dados secundário para limpar o slot manualmente.
Para tarefas com chaves estrangeiras, triggers ou event triggers, o DTS define
session_replication_rolecomoreplicano nível da sessão se a conta do banco de dados de destino for uma conta privilegiada ou tiver permissões de superusuário. Se a conta de destino não tiver essas permissões, definasession_replication_rolecomoreplicamanualmente no banco de dados de destino. Após a liberação da tarefa de migração, altere o parâmetro de volta paraorigin.
Banco de dados de destino:
A migração de dados completa executa operações INSERT simultâneas, o que causa fragmentação da tabela. O espaço da tabela no banco de dados de destino será maior do que no banco de dados de origem após a migração.
O DTS valida o conteúdo dos dados, mas não valida metadados como sequences. Valide os metadados por conta própria.
Após o cutover para o banco de dados de destino, as sequences não começam a partir do valor máximo da sequence do banco de dados de origem. Antes do cutover, atualize o valor da sequence no banco de dados de destino. Consulte Atualizar o valor da sequence do banco de dados de destino.
Tabelas particionadas:
Inclua tanto a tabela pai quanto todas as tabelas filhas como objetos de migração. No PostgreSQL, as tabelas pai não armazenam dados diretamente — todos os dados residem nas tabelas filhas. Se as tabelas filhas não forem incluídas, ocorrerá inconsistência de dados.
Recuperação de tarefas:
O DTS tenta recuperar automaticamente tarefas com falha em até sete dias. Antes de transferir seus negócios para a instância de destino, encerre ou libere a tarefa, ou use o comando
revokepara revogar as permissões de gravação da conta do DTS na instância de destino. Isso evita que os dados de origem sobrescrevam os dados de destino após uma recuperação automática.Se uma tarefa falhar, a equipe de suporte do DTS tentará restaurá-la em até oito horas. Eles podem reiniciar a tarefa ou, se preferir, modifique os parâmetros da tarefa do DTS (não parâmetros do banco de dados). Consulte Modify instance parameters para ver os parâmetros que podem ser ajustados.
Tabelas temporárias:
O DTS cria as seguintes tabelas temporárias no banco de dados de origem para capturar instruções DDL, estruturas de tabelas incrementais e informações de heartbeat. Não as exclua durante a migração, pois a tarefa do DTS falhará. O DTS as exclui automaticamente após a liberação da instância:
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
Comportamento da migração de schema:
O DTS migra chaves estrangeiras do banco de dados de origem para o banco de dados de destino durante a migração de schema.
Durante a migração completa e incremental, o DTS desativa temporariamente as verificações de restrições e as operações em cascata de chaves estrangeiras no nível da sessão. Se ocorrerem operações de atualização ou exclusão em cascata no banco de dados de origem enquanto a tarefa estiver em execução, poderá haver inconsistência de dados.
Criar uma tarefa de migração
Etapa 1: Acessar a migração de dados
Para iniciar, acesse a lista de tarefas de migração de dados usando um dos seguintes métodos.
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 está localizada.
Pelo console do DMS
Nota
As operações reais podem variar com base no modo e no layout do console do DMS. Para mais informações, consulte Console do modo simples e Personalizar o layout e o estilo do console do DMS.
Faça login no Data Management (DMS) console.
Na barra de menu superior, escolha > > .
À direita de Data Migration Tasks, selecione a região onde a instância de migração está localizada.
Etapa 2: Configurar os bancos de dados de origem e de destino
Para começar, clique em Create Task.
-
Configure as conexões dos bancos de dados de origem e de destino.
Parâmetro
Descrição
Task Name
O DTS gera um nome de tarefa automaticamente. Para fácil identificação, especifique um nome descritivo. O nome não precisa ser exclusivo.
Source Database — Select Existing Connection
Selecione uma instância de banco de dados já adicionada ao sistema. Os detalhes da conexão são preenchidos automaticamente. Se não houver nenhuma instância registrada ou se você não quiser usar uma, preencha os detalhes da conexão manualmente.
Database Type (origem)
Selecione PolarDB for PostgreSQL.
Access Method (origem)
Selecione Alibaba Cloud Instance.
Instance Region (origem)
Selecione a região onde o cluster de origem reside.
Replicate Data Across Alibaba Cloud Accounts
Selecione No para migração dentro da mesma conta da Alibaba Cloud.
Instance ID (origem)
Selecione o ID do cluster de origem do PolarDB for PostgreSQL.
Database Name (origem)
Agora, insira o nome do banco de dados de origem (
source) que contém os objetos a serem migrados.Database Account (origem)
Insira a conta do banco de dados. Consulte Database account permissions para ver as permissões necessárias.
Database Password (origem)
Insira a senha da conta do banco de dados.
Destination Database — Select Existing Connection
Selecione uma instância de banco de dados registrada ou preencha os detalhes da conexão manualmente.
Database Type (destino)
Selecione PolarDB for PostgreSQL.
Access Method (destino)
Selecione Alibaba Cloud Instance.
Instance Region (destino)
Selecione a região onde o cluster de destino reside.
Instance ID (destino)
Selecione o ID do cluster de destino do PolarDB for PostgreSQL.
Database Name (destino)
Insira o nome do banco de dados de destino que receberá os dados.
Database Account (destino)
Insira a conta do banco de dados para o cluster de destino.
Database Password (destino)
Insira a senha da conta do banco de dados de destino.
-
Clique em Test Connectivity and Proceed.
Certifique-se de que os intervalos de IP dos servidores do DTS estejam adicionados às configurações de segurança dos bancos de dados de origem e de destino. Consulte Adicionar endereços IP do servidor DTS a uma lista de permissões .
Etapa 3: Configurar objetos de migração
Na página Configure Objects, configure o que será migrado.
|
Parâmetro |
Descrição |
|
Migration Types |
Selecione os tipos de migração com base no seu cenário: Schema Migration copia apenas o schema. Schema Migration + Full Data Migration copia o schema e todos os dados existentes — ideal para uma migração única com tempo de inatividade planejado. Schema Migration + Full Data Migration + Incremental Data Migration copia o schema, todos os dados existentes e as alterações contínuas — use esta opção para migração sem tempo de inatividade. |
|
Processing Mode of Conflicting Tables |
Precheck and Report Errors: o DTS verifica se há tabelas com os mesmos nomes no banco de dados de destino. Se existirem conflitos, a pré-verificação falha e a tarefa não é iniciada. Para resolver conflitos sem excluir ou renomear tabelas de destino, use o mapeamento de nomes de objetos. Ignore Errors and Proceed: o DTS ignora a verificação de conflitos. Durante a migração completa, os registros conflitantes no destino são mantidos. Durante a migração incremental, os registros de origem sobrescrevem os registros de destino. Se os schemas das tabelas forem inconsistentes, apenas algumas colunas poderão ser migradas ou a migração poderá falhar. |
|
Capitalization of Object Names in Destination Instance |
Defina a política de diferenciação de maiúsculas e minúsculas para os nomes dos objetos migrados (bancos de dados, tabelas, colunas). O padrão é DTS default policy. Consulte Diferenciação de maiúsculas e minúsculas em nomes de objetos. |
|
Source Objects |
Clique nos objetos na caixa Source Objects e clique na seta para a direita para movê-los para a caixa Selected Objects. Você pode selecionar no nível do schema ou da tabela. Selecionar tabelas não migra views, triggers ou stored procedures. Se uma tabela tiver um campo SERIAL e você selecionar Schema Migration, selecione também Sequence ou migre o schema inteiro. |
|
Selected Objects |
Para renomear um objeto migrado, edite o nome clicando com o botão direito nele em Selected Objects. Consulte Mapeamento de nomes de objetos. Para renomear vários objetos de uma vez, clique em Batch Edit. Consulte Mapear vários nomes de objetos. Para filtrar linhas, clique com o botão direito em uma tabela e defina uma cláusula WHERE. Consulte Set a filter condition. |
Se você não selecionar Schema Migration , deverá garantir que um banco de dados e tabelas para receber os dados já existam no banco de dados de destino. Você também pode usar o recurso de mapeamento de nomes de objetos na caixa Selected Objects conforme necessário. O uso do mapeamento de nomes de objetos pode fazer com que objetos dependentes falhem na migração.
Etapa 4: Configurar definições avançadas
Clique em Next: Advanced Settings e configure os seguintes parâmetros.
|
Parâmetro |
Descrição |
|
Dedicated Cluster for Task Scheduling |
O DTS agenda tarefas em um cluster compartilhado por padrão. Para tarefas mais estáveis, adquira um dedicated cluster. |
|
Retry Time for Failed Connections |
Se a conexão com o banco de dados de origem ou de destino falhar após o início da tarefa, o DTS tentará novamente imediatamente. Padrão: 720 minutos. Intervalo: 10 a 1.440 minutos. Recomendamos definir isso para mais de 30 minutos. Se o DTS reconectar dentro do período de nova tentativa, a tarefa será retomada automaticamente. |
|
Retry Time for Other Issues |
Se ocorrer um problema que não seja de conectividade (como um erro de execução de DDL ou DML), o DTS tentará novamente imediatamente. Padrão: 10 minutos. Intervalo: 1 a 1.440 minutos. Recomendamos definir isso para mais de 10 minutos. Deve ser menor que Retry Time for Failed Connections. |
|
Enable Throttling for Full Data Migration |
Limite a carga de leitura/gravação nos bancos de dados de origem e de destino durante a migração completa. Defina 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 Migration estiver selecionado. Você também pode ajustar a velocidade da migração completa após o início da tarefa. |
|
Enable Throttling for Incremental Data Migration |
Limite a carga durante a migração incremental. Defina RPS of Incremental Data Migration e Data migration speed for incremental migration (MB/s). Disponível apenas quando Incremental Data Migration estiver selecionado. Você também pode ajustar a velocidade da migração incremental após o início da tarefa. |
|
Environment Tag |
Opcionalmente, aplique uma tag na instância para identificar seu ambiente. |
|
Configure ETL |
Ative o recurso de extração, transformação e carregamento (ETL) para transformar dados durante a migração. Consulte O que é ETL? e Configurar ETL. |
|
Monitoring and Alerting |
Configure alertas para receber notificações quando a migração falhar ou a latência exceder um limiar. Consulte Configurar monitoramento e alertas. |
Etapa 5: Configurar validação de dados (opcional)
Clique em Next: Data Validation para configurar uma tarefa de validação de dados. Consulte Configurar validação de dados.
Etapa 6: Executar a pré-verificação
Para continuar, salve as configurações e clique em Next: Save Task Settings and Precheck.
visualize os parâmetros da API para esta configuração passando o mouse sobre o botão e clicando em Preview OpenAPI parameters .
O DTS executa uma pré-verificação antes de iniciar a tarefa de migração. Se a pré-verificação falhar:
Para itens com falha: clique em View Details, corrija o problema e execute a pré-verificação novamente.
Para avisos que não podem ser ignorados: clique em View Details, 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 para pular o item. Ignorar avisos pode causar inconsistência de dados.
Etapa 7: Adquirir e iniciar a instância
Quando a Success Rate atingir 100%, clique em Next: Purchase Instance.
-
Na página Purchase, configure a classe da instância.
Parâmetro
Descrição
Resource Group Settings
Selecione o grupo de recursos para a instância. Padrão: grupo de recursos padrão. Consulte What is Resource Management?
Instance Class
Selecione uma especificação com base nos seus requisitos de desempenho. A especificação do link afeta a velocidade da migração. Consulte Especificações de link de migração de dados.
Leia e aceite os Data Transmission Service (Pay-as-you-go) Service Terms.
Clique em Buy and Start e, em seguida, confirme a ação clicando em OK na caixa de diálogo.
Verificar a migração
Para acompanhar, verifique o progresso da tarefa na página Data Migration Tasks:
Tarefas sem migração incremental param automaticamente após a conclusão da migração completa. O Status muda para Completed.
Tarefas com migração incremental continuam em execução. O Status mostra Running enquanto a migração incremental estiver ativa.
Próximos passos
Antes de fazer o cutover para o banco de dados de destino:
Atualize o valor da sequence no banco de dados de destino. Após o cutover, as sequences não retomam a partir do valor máximo do banco de dados de origem. Consulte Atualizar o valor da sequence do banco de dados de destino.
Encerre ou libere a tarefa do DTS, ou revogue as permissões de gravação da conta do DTS na instância de destino usando o comando
revoke. Isso evita que tarefas recuperadas automaticamente sobrescrevam os dados de destino.