Migre dados entre instâncias do ApsaraDB RDS for PostgreSQL com o Data Transmission Service (DTS). O DTS oferece suporte à migração de schema, migração completa de dados e migração incremental de dados. A execução combinada desses três tipos permite que sua aplicação permaneça online durante todo o processo, com tempo de inatividade mínimo.
Pré-requisitos
Antes de começar, verifique se:
As instâncias de origem e de destino do ApsaraDB RDS for PostgreSQL já foram criadas. Consulte Criar uma instância.
A versão do banco de dados de destino é igual ou superior à da origem. Versões anteriores no destino podem causar problemas de compatibilidade.
A instância de destino tem mais espaço de armazenamento disponível que o tamanho total dos dados na instância de origem.
Para verificar as versões de banco de dados de origem e de destino suportadas, consulte Visão geral dos cenários de migração de dados .
Tipos de migração
O DTS oferece três tipos de migração combináveis conforme suas necessidades.
|
Tipo de migração |
Descrição |
|
Migração de schema |
Copia os schemas dos objetos selecionados (tabelas, views, índices, entre outros) da origem para o destino. |
|
Migração completa de dados |
Copia todos os dados existentes da origem para o destino. |
|
Migração incremental de dados |
Replica continuamente as alterações de dados da origem para o destino após a conclusão da migração completa, mantendo o destino sincronizado enquanto a aplicação está em execução. |
Escolha uma estratégia de migração:
Apenas migração completa (com tempo de inatividade): Selecione Schema Migration e Full Data Migration. Interrompa as gravações na origem antes do início da migração para garantir a consistência dos dados.
Migração online (tempo de inatividade mínimo): Selecione Schema Migration, Full Data Migration e Incremental Data Migration. Sua aplicação permanece online durante a migração. Interrompa as gravações na origem apenas no momento do cutover.
Objetos suportados
Os seguintes tipos de objetos podem ser migrados:
SCHEMA e TABLE — incluindo PRIMARY KEY, UNIQUE KEY, FOREIGN KEY, tipos de dados integrados e restrições DEFAULT.
VIEW
PROCEDURE — somente PostgreSQL V11 ou posterior.
FUNCTION, RULE, SEQUENCE, EXTENSION, TRIGGER, AGGREGATE, INDEX, OPERATOR, DOMAIN
Operações SQL suportadas para migração incremental
|
Tipo de operação |
Instruções suportadas |
|
DML |
INSERT, UPDATE, DELETE |
|
DDL |
Consulte os detalhes abaixo. |
Detalhes da migração de DDL:
A migração de DDL está disponível apenas para tarefas criadas após 1º de outubro de 2020.
Para migrar operações DDL em tarefas criadas antes de 12 de maio de 2023, crie primeiro um trigger e uma função no banco de dados de origem. Consulte Usar triggers e funções para implementar migração incremental de DDL para bancos de dados PostgreSQL.
Se o banco de dados de origem utilizar uma conta privilegiada e a versão secundária do mecanismo for 20210228 ou posterior, haverá suporte às seguintes instruções 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 — a origem deve ser PostgreSQL V11 ou posterior.
CREATE INDEX ON TABLE
Limitações da migração de DDL:
Dados do tipo BIT não são migrados durante a migração incremental.
Modificadores CASCADE e RESTRICT em instruções DDL não são migrados.
Instruções DDL executadas em uma sessão onde
SET session_replication_role = replicafoi executado não são migradas.Instruções DDL invocadas por meio de funções não são migradas.
Se um envio em lote contiver instruções DML e DDL, as instruções DDL serão ignoradas.
Se um envio em lote contiver instruções DDL sem suporte para migração, essas instruções serão ignoradas.
Permissões necessárias
Conceda as seguintes permissões às contas de banco de dados utilizadas pelo DTS. Siga o princípio do menor privilégio: evite usar uma conta de superusuário, a menos que seja impossível conceder as permissões necessárias separadamente.
|
Banco de dados |
Migração de schema |
Migração completa de dados |
Migração incremental de dados |
|
ApsaraDB RDS for PostgreSQL de origem |
USAGE no schema |
SELECT nos objetos a serem migrados |
Conta privilegiada proprietária do banco de dados. Para PostgreSQL 9.4 com migração apenas de DML, somente a permissão REPLICATION é necessária. |
|
ApsaraDB RDS for PostgreSQL de destino |
CREATE e USAGE nos objetos a serem migrados |
Permissões de proprietário do schema |
— |
Para criar contas e conceder permissões, consulte Criar uma conta e Criar um banco de dados.
Limitações
Revise estas limitações antes de configurar uma tarefa de migração. Ignorá-las pode causar falhas na tarefa ou inconsistência de dados.
Limitações do banco de dados de origem
|
Limitação |
Detalhes |
Impacto se violada |
|
Chave primária ou restrição única obrigatória |
As tabelas devem ter restrições PRIMARY KEY ou UNIQUE com todos os campos únicos. Se uma tabela no destino foi criada sem a migração de schema do DTS, certifique-se de que sua restrição PRIMARY KEY ou NOT NULL UNIQUE corresponda à tabela de origem. As tabelas a serem migradas também devem ter restrições PRIMARY KEY, FOREIGN KEY, UNIQUE ou CHECK. |
O destino pode conter registros duplicados. |
|
Proibido uso de hífens no nome do banco de dados |
O nome do banco de dados de origem não pode conter hífens ( |
Falha ao iniciar a tarefa de migração. |
|
Limite de 1.000 tabelas por tarefa ao editar nomes de tabelas |
Se você selecionar tabelas como objetos de migração e precisar renomear tabelas ou colunas no destino, uma única tarefa poderá migrar até 1.000 tabelas. Para mais de 1.000 tabelas, crie várias tarefas ou migre o banco de dados inteiro. |
Ocorre erro de solicitação. |
|
Sem tabelas temporárias ou procedimentos internos em linguagem C |
O DTS não migra tabelas temporárias, triggers internos ou procedimentos e funções internos escritos em C. |
Esses objetos são ignorados silenciosamente. |
|
Suporte a tipos personalizados |
O DTS migra parâmetros personalizados dos tipos COMPOSITE, ENUM e RANGE. |
Outros tipos personalizados não são migrados. |
|
|
Defina |
A migração incremental não inicia. |
|
Retenção de logs WAL |
Para migração apenas incremental: retenha logs de write-ahead logging (WAL) por mais de 24 horas. Para migração completa + incremental: retenha logs WAL por pelo menos 7 dias. Após a conclusão da migração completa, reduza a retenção para mais de 24 horas. |
Retenção insuficiente causa falha na tarefa, inconsistência de dados ou perda de dados. |
|
Sem DDL durante a migração de schema ou migração completa |
Não execute operações DDL que alterem schemas de banco de dados ou tabelas enquanto a migração de schema ou a migração completa de dados estiver em execução. |
Falha na tarefa de migração. |
|
Sem gravações na origem durante migração apenas completa |
Se executar apenas a migração completa de dados (sem incremental), não grave no banco de dados de origem durante a migração. Para evitar essa restrição, selecione a migração completa + incremental. |
Gravações simultâneas causam inconsistência de dados. |
|
Limite de 256 MB por registro único para migração incremental |
Se uma única alteração incremental exceder 256 MB, a tarefa falhará e não poderá ser recuperada. Será necessário reconfigurar a tarefa. |
Falha na tarefa sem opção de recuperação. |
|
Transações de longa duração acumulam logs WAL |
Transações de longa duração no banco de dados de origem impedem a limpeza de logs WAL. Confirme (commit) ou encerre transações de longa duração antes da migração. |
O espaço em disco da origem pode se esgotar durante a migração incremental. |
|
Atualizações de versão principal interrompem tarefas em execução |
Uma atualização de versão principal no banco de dados de origem durante a execução de uma tarefa de migração causa a falha da tarefa sem possibilidade de recuperação. Reconfigure a tarefa após a atualização. |
Falha na tarefa sem opção de recuperação. |
Outras limitações
|
Limitação |
Detalhes |
|
Failover primário/secundário requer Logical Replication Slot Failover |
Antes de realizar um failover primário/secundário na instância de origem, ative o recurso Logical Replication Slot Failover. Isso evita a interrupção das assinaturas lógicas. Consulte Logical Replication Slot Failover. |
|
Um banco de dados por tarefa |
Uma única tarefa migra dados de apenas um banco de dados. Crie tarefas separadas para cada banco de dados. |
|
Tabelas herdadas entre schemas não suportadas |
Tabelas herdadas entre schemas não são migradas. |
|
Campo SERIAL requer migração de sequence |
Se uma tabela tiver um campo SERIAL e você selecionar Schema Migration, selecione também Sequence ou migre o schema inteiro. Caso contrário, a tarefa falhará. |
|
Novas tabelas criadas durante a migração incremental |
Se adicionar uma nova tabela a um schema ou renomear uma tabela usando RENAME durante a migração incremental, execute |
|
Validade de metadados não verificada |
O DTS não valida metadados como sequences. Verifique os metadados manualmente após a migração. |
|
Sequences no destino não iniciam a partir do valor máximo da origem |
Após alternar as cargas de trabalho para o destino, novas sequences começam a partir de seus valores iniciais, e não do valor máximo na origem. Atualize os valores iniciais das sequences no destino antes do cutover. |
|
Tabelas temporárias criadas pelo DTS |
O DTS cria as seguintes tabelas temporárias no banco de dados de origem para dar suporte à migração incremental. Não as exclua durante a migração — elas são removidas automaticamente após a liberação da instância do DTS: |
|
|
Se a conta de destino for privilegiada ou tiver a função de superusuário, o DTS define |
|
Tabela de heartbeat criada na origem |
O DTS cria uma tabela de heartbeat chamada |
|
Slot de replicação criado na origem |
O DTS cria um slot de replicação com o prefixo |
|
Migração completa causa fragmentação de tabela |
Operações INSERT simultâneas durante a migração completa causam fragmentação de tabela no destino. O tablespace de destino será maior que o da origem após a conclusão da migração completa. |
|
Precisão FLOAT e DOUBLE |
O DTS usa |
|
Tarefas com falha podem ser retomadas e sobrescrever dados no destino |
O DTS tenta repetir uma tarefa com falha por até 7 dias. Antes de alternar as cargas de trabalho para o destino, pare ou libere tarefas com falha, ou execute |
|
O suporte do DTS pode modificar parâmetros da tarefa |
Se uma tarefa falhar, o suporte técnico do DTS tentará restaurá-la em até 8 horas. A tarefa pode ser reiniciada e os parâmetros da tarefa (não os parâmetros do banco de dados) podem ser modificados. |
Casos especiais
Não modifique o endpoint ou a zona da instância de origem do ApsaraDB RDS for PostgreSQL enquanto uma tarefa de migração estiver em execução. Essa ação causa a falha da tarefa.
Configurar uma tarefa de migração
Etapa 1: Acessar a página Data Migration
Use o console do DTS ou o console do DMS.
Console do DTS:
Faça login no console do 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 residirá.
Console do DMS:
As etapas reais podem variar conforme o modo e o layout do seu console do DMS. Consulte Modo simples para referência de layout, ou veja como personalizar o layout do console do DMS .
Faça login no console do DMS.
Na barra de navegação superior, passe o ponteiro sobre Data + AI > DTS (DTS) > Data Migration.
Na lista suspensa à direita de Data Migration Tasks, selecione a região onde a instância de migração residirá.
Etapa 2: Criar uma tarefa
Clique em Create Task para abrir a página de configuração da tarefa.
Etapa 3: Configurar bancos de dados de origem e de destino
Após configurar os bancos de dados de origem e de destino, leia os Limits exibidos na parte superior da página. Pular esta etapa pode causar falhas na tarefa ou inconsistência de dados.
Configure os seguintes parâmetros para os bancos de dados de origem e de destino.
|
Seção |
Parâmetro |
Descrição |
|
N/A |
Task Name |
Nome da tarefa do DTS. O DTS gera um nome automaticamente. Especifique um nome descritivo para facilitar a identificação da tarefa. O nome não precisa ser único. |
|
Source Database |
Select Existing Connection |
Se a instância já estiver registrada no DTS, selecione-a na lista suspensa. O DTS preenche automaticamente os parâmetros restantes. Caso contrário, configure os parâmetros abaixo. No console do DMS, selecione a instância na lista suspensa Select a DMS database instance. |
|
Database Type |
Selecione PostgreSQL. |
|
|
Access Method |
Selecione Alibaba Cloud Instance. |
|
|
Instance Region |
Região da instância de origem. |
|
|
Instance ID |
ID da instância de origem. |
|
|
Database Name |
Nome do banco de dados que contém os objetos a serem migrados. |
|
|
Database Account |
Conta da instância de origem. Consulte Permissões necessárias. |
|
|
Database Password |
Senha da conta do banco de dados. |
|
|
Encryption |
Selecione Non-encrypted (padrão) ou SSL-encrypted. Para criptografia ssl, faça upload do CA Certificate e, opcionalmente, do Client Certificate, Private Key of Client Certificate e Private Key Password of Client Certificate. Consulte Criptografia SSL para instruções de configuração. |
|
|
Destination Database |
Select Existing Connection |
Igual à origem. |
|
Database Type |
Selecione PostgreSQL. |
|
|
Access Method |
Selecione Alibaba Cloud Instance. |
|
|
Instance Region |
Região da instância de destino. |
|
|
Instance ID |
ID da instância de destino. |
|
|
Database Name |
Nome do banco de dados de destino. |
|
|
Database Account |
Conta da instância de destino. Consulte Permissões necessárias. |
|
|
Database Password |
Senha da conta do banco de dados. |
|
|
Encryption |
Mesmas opções da origem. |
Etapa 4: Testar conectividade
Clique em Test Connectivity and Proceed na parte inferior da página.
Adicione os blocos CIDR dos servidores do DTS às configurações de segurança dos bancos de dados de origem e de destino. Para obter instruções, consulte Adicionar os blocos CIDR dos servidores do DTS . Se a origem ou o destino usar um método de acesso diferente de Alibaba Cloud Instance , clique em Test Connectivity na caixa de diálogo CIDR Blocks of DTS Servers .
Etapa 5: Configurar objetos para migração
Na página Configure Objects, configure as definições de migração.
Tipos de migração:
|
Objetivo |
Selecionar |
|
Migração completa (com tempo de inatividade) |
Schema Migration e Full Data Migration |
|
Migração online (tempo de inatividade mínimo) |
Schema Migration, Full Data Migration e Incremental Data Migration |
Se não selecionar Incremental Data Migration , não grave dados na origem durante a migração para garantir a consistência dos dados. A Migração de Schema copia chaves estrangeiras para o destino.
Modo de processamento de tabelas conflitantes:
|
Modo |
Comportamento |
|
Precheck and Report Errors |
Verifica se existem tabelas com nomes idênticos na origem e no destino antes da migração. Se houver conflitos, a pré-verificação falha e a tarefa não inicia. Para resolver conflitos sem excluir tabelas de destino, use o mapeamento de nomes de objetos para renomear as tabelas migradas. Consulte Mapear nomes de objetos. |
|
Ignore Errors and Proceed |
Ignora a verificação de conflitos. Durante a migração completa, registros conflitantes não são migrados (os registros existentes no destino são mantidos). Durante a migração incremental, registros conflitantes sobrescrevem os registros existentes no destino. Use este modo com cautela — ele pode expor seus dados a riscos de inconsistência. |
Source Objects:
Selecione um ou mais schemas ou tabelas em Source Objects e clique em
para adicioná-los aos Selected Objects.
Se selecionar tabelas (em vez de schemas), o DTS não migrará outros objetos, como views, triggers e stored procedures. Se uma tabela tiver um tipo de dados SERIAL e a Migração de Schema estiver selecionada, selecione também Sequence ou migre o schema completo.
Selected Objects:
Para renomear um único objeto no destino, clique com o botão direito nele em Selected Objects. Consulte Mapear o nome de um único objeto.
Para renomear vários objetos simultaneamente, clique em Batch Edit. Consulte Mapear vários nomes de objetos simultaneamente.
Para filtrar linhas por condição, clique com o botão direito em uma tabela e especifique uma condição WHERE. Consulte Especificar condições de filtro.
Para selecionar operações SQL específicas a serem migradas para uma tabela, clique com o botão direito na tabela e escolha as operações. Consulte Operações SQL suportadas para migração incremental.
Renomear um objeto com mapeamento de nomes de objetos pode causar falha na migração de objetos dependentes.
Clique em Next: Advanced Settings.
Configurações avançadas:
| Parâmetro | Descrição |
|---|---|
| Dedicated Cluster for Task Scheduling | Por padrão, o DTS usa o cluster compartilhado. Para maior estabilidade, adquira um cluster dedicado. Consulte O que é um cluster dedicado do DTS. |
| Retry Time for Failed Connections | Tempo durante o qual o DTS tenta reconectar após uma falha de conexão. Intervalo: 10–1.440 minutos. Padrão: 720. Defina este valor como pelo menos 30. Se o DTS se reconectar dentro da janela de tentativa, a tarefa será retomada; caso contrário, ela falhará. Nota
Se várias tarefas compartilharem a mesma origem ou destino, o tempo de tentativa definido mais recentemente se aplicará a todas. As cobranças do DTS continuam durante as tentativas. |
| Retry Time for Other Issues | Tempo durante o qual o DTS tenta novamente após falhas em operações DDL ou DML. Intervalo: 1–1.440 minutos. Padrão: 10. Defina este valor como maior que 10. Este valor deve ser menor que Retry Time for Failed Connections. |
| Enable Throttling for Full Data Migration | Limita o throughput da migração para reduzir a carga na origem e no destino. Configure 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. |
| Enable Throttling for Incremental Data Migration | Limita o throughput da migração incremental. Configure RPS of Incremental Data Migration e Data migration speed for incremental migration (MB/s). Disponível apenas quando Incremental Data Migration estiver selecionado. |
| Environment Tag | Uma tag opcional para identificar a instância do DTS por ambiente. |
| Configure ETL | Ative a extração, transformação e carga (ETL) para processar dados durante a migração. Selecione Yes para inserir instruções de processamento de dados. Consulte Configurar ETL em uma tarefa de migração ou sincronização de dados. |
| Monitoring and Alerting | Configure alertas para falhas de tarefa ou alta latência de migração. Selecione Yes e configure o limiar de alerta e as configurações de notificação. Consulte Configurar monitoramento e alertas ao criar uma tarefa do DTS. |
Clique em Next Step: Data Verification para configurar a verificação de dados. Consulte Configurar uma tarefa de verificação de dados.
Etapa 6: Executar a pré-verificação
Clique em Next: Save Task Settings and Precheck.
Para visualizar os parâmetros da API para esta configuração de tarefa, passe o mouse sobre Next: Save Task Settings and Precheck e clique em Preview OpenAPI parameters antes de prosseguir.
O DTS executa uma pré-verificação antes de iniciar a tarefa. A tarefa só inicia após a aprovação na pré-verificação.
Se algum item da pré-verificação falhar, clique em View Details para ver a causa. Corrija o problema e clique em Precheck Again.
-
Se um item gerar um alerta:
Se o alerta não puder ser ignorado, corrija o problema e execute a pré-verificação novamente.
Se o alerta puder ser ignorado, clique em Confirm Alert Details, depois clique em Ignore > OK > Precheck Again. Ignorar um alerta pode causar inconsistência de dados.
Etapa 7: Adquirir uma instância e iniciar a tarefa
Aguarde até que Success Rate atinja 100% e clique em Next: Purchase Instance.
-
Na página Purchase Instance, configure a instância:
Seção
Parâmetro
Descrição
New Instance Class
Resource Group
Grupo de recursos para a instância de migração. Padrão: default resource group. Consulte O que é Resource Management?.
Instance Class
Controla a velocidade da migração. Selecione com base no volume de dados e nos requisitos de tempo. Consulte Classes de instância de instâncias de migração de dados.
Leia e aceite os Data Transmission Service (Pay-as-you-go) Service Terms marcando a caixa de seleção.
Clique em Buy and Start e, em seguida, clique em OK na caixa de diálogo de confirmação.
A tarefa aparece na página Data Migration.
Se a tarefa não incluir migração incremental, ela será interrompida automaticamente quando concluída. O status mostra Completed.
Se a tarefa incluir migração incremental, ela será executada continuamente. O status mostra Running.
Fazer cutover para o banco de dados de destino
Para migrações online que utilizam migração incremental de dados, siga estas etapas para realizar o cutover com perda mínima de dados.
Monitore a latência da migração. Na página Data Migration, verifique a latência da tarefa de migração incremental. Aguarde até que a latência caia para 0 ou próximo de 0, indicando que o destino está quase totalmente sincronizado com a origem.
Interrompa as gravações na origem. Assim que a latência estiver próxima de 0, impeça que sua aplicação grave no banco de dados de origem.
Confirme que a latência atingiu 0. Após interromper as gravações, confirme se a latência da migração incremental atingiu 0. Isso garante que todas as alterações foram replicadas para o destino.
Atualize as sequences no destino. Novas sequences no destino não incrementam a partir do valor máximo das sequences na origem. Antes de alternar o tráfego, atualize os valores iniciais de todas as sequences no destino para evitar conflitos de ID.
Verifique os dados. Se configurou a verificação de dados, analise os resultados para confirmar a consistência entre a origem e o destino.
Alterne sua aplicação. Atualize a string de conexão da sua aplicação para apontar para a instância de destino.
Libere a tarefa do DTS. Após confirmar que a aplicação está funcionando corretamente no destino, pare e libere a tarefa de migração do DTS. O DTS remove automaticamente as tabelas temporárias e o slot de replicação da origem após a liberação da tarefa.
O DTS tenta repetir uma tarefa com falha por até 7 dias. Antes de alternar as cargas de trabalho para o destino, pare ou libere quaisquer tarefas com falha, ou execute REVOKE para remover as permissões de gravação da conta do DTS no banco de dados de destino. Caso contrário, uma tarefa com falha retomada pode sobrescrever dados no destino.
Próximos passos
Logical Replication Slot Failover — ative este recurso antes de realizar um failover primário/secundário na instância de origem.
Mapear nomes de objetos — renomeie objetos no destino durante a migração.
Configurar uma tarefa de verificação de dados — verifique a consistência dos dados após a migração.
Classes de instância de instâncias de migração de dados — escolha a classe de instância adequada para seus requisitos de velocidade de migração.