Use o DTS para migrar dados incrementais de um banco de dados PostgreSQL autogerenciado (versão 10.1 a 13) para uma instância do ApsaraDB RDS for PostgreSQL. O DTS oferece suporte à migração de schema, migração completa de dados e migração incremental de dados. Você pode combinar os três tipos para migrar seu banco de dados com tempo de inatividade mínimo.
Pré-requisitos
- O banco de dados PostgreSQL autogerenciado de origem executa a versão 10.1 a 13.
- Uma instância do ApsaraDB RDS for PostgreSQL foi criada. Criar uma instância do ApsaraDB RDS for PostgreSQL. Nota Para compatibilidade, recomendamos que a instância RDS de destino use a mesma versão do banco de dados que o banco de dados PostgreSQL autogerenciado de origem.
- A instância RDS de destino deve ter mais espaço de armazenamento do que o banco de dados de origem utiliza.
Observações de uso
-
Durante uma migração completa de dados, o DTS consome recursos de leitura e gravação nos bancos de dados de origem e de destino, aumentando a carga deles. Se seus bancos de dados tiverem desempenho ruim, especificações baixas ou cargas de trabalho elevadas (por exemplo, se o banco de dados de origem tiver muitas consultas SQL lentas ou tabelas sem chaves primárias, ou se ocorrerem deadlocks no banco de dados de destino), o aumento de carga pode sobrecarregar seus bancos de dados ou até causar interrupções de serviço. Execute a migração de dados em horários de baixa demanda, como quando a utilização da CPU de ambos os bancos de dados estiver abaixo de 30%.
-
Se uma tabela de origem não tiver chave primária nem restrição exclusiva e contiver dados não exclusivos, dados duplicados podem ser criados no banco de dados de destino.
- Durante a migração incremental de dados, se você selecionar um schema como objeto de migração e depois criar uma nova tabela ou reconstruir uma tabela usando RENAME, execute
ALTER TABLE schema.table REPLICA IDENTITY FULL;antes de gravar dados na tabela.Nota Substituaschemaetablepelos nomes reais do schema e da tabela. - O DTS adiciona uma tabela de heartbeat chamada dts_postgres_heartbeat ao banco de dados de origem para medir a latência da migração incremental.
- O DTS cria um slot de replicação lógica com o prefixo
dts_sync_no banco de dados de origem. O DTS limpa os slots de replicação históricos a cada 90 minutos para evitar o consumo de espaço em disco.Você pode executarNota Quando uma tarefa de migração é liberada ou falha, o DTS limpa automaticamente o slot de replicação. Se ocorrer um failover primário/secundário na instância RDS, limpe manualmente o slot de replicação na instância secundária.SELECT * FROM pg_replication_slots;para visualizar os slots de replicação. Um slot com slot_name começando comdts_sync_, slot_type igual alogicale status active igual atrueestá em uso. - O failover primário/secundário durante a migração é suportado apenas para o ApsaraDB RDS for PostgreSQL 11. Defina
rds_failover_slot_modecomosync. Failover de slot de replicação lógica.Aviso Um failover primário/secundário em um banco de dados PostgreSQL autogerenciado ou em outras versões do RDS interrompe a migração. - O DTS repete automaticamente as tarefas que falharam. Antes de alternar as aplicações para a instância de destino, pare ou libere a tarefa para evitar a substituição dos dados de destino.
- Transações de longa duração no banco de dados de origem podem impedir a limpeza do WAL, causando o acúmulo de arquivos WAL e o esgotamento do espaço em disco.
Limitações
- Cada tarefa de migração migra apenas um banco de dados. Para migrar vários bancos de dados, crie uma tarefa separada para cada um.
- Os nomes de bancos de dados não podem conter hifens (-). Exemplo: dts-testdata.
- Se ocorrer um failover primário/secundário no banco de dados de origem durante a migração, a migração incremental de dados não poderá ser retomada.
- A latência de replicação pode causar inconsistência de dados entre os nós primário e secundário. Use sempre o nó primário como fonte de dados. Nota Execute a migração em horários de baixa demanda. Você pode ajustar a taxa de migração com base na carga do banco de dados de origem. Modificar a taxa de transferência da migração completa de dados.
- O tipo de dado BIT não é suportado durante a migração incremental de dados.
- Durante a migração incremental de dados, apenas operações DML (INSERT, DELETE, UPDATE) são sincronizadas. Nota Apenas tarefas criadas após 1º de outubro de 2020 suportam sincronização de DDL. Antes de configurar a tarefa, crie triggers e funções no banco de dados de origem para capturar informações de DDL. Usar triggers e funções para implementar a migração incremental de DDL para PostgreSQL.
- Após alternar as cargas de trabalho para o banco de dados de destino, os valores de sequência não começam a partir do valor máximo do banco de dados de origem. Antes do cutover, consulte o valor máximo da sequência no banco de dados de origem e defina-o como valor inicial no banco de dados de destino.
- O DTS valida o conteúdo dos dados, mas não valida metadados como sequências. Valide os metadados de sequência manualmente.
Faturamento
|
Tipo de migração |
Taxa de configuração da tarefa |
Taxa de tráfego de internet |
|
Migração de schema e migração completa de dados |
Gratuito. |
O DTS cobra uma taxa de tráfego de internet quando o Access Method do banco de dados de destino está definido como Public IP Address. Visão geral do faturamento. |
|
Migração incremental de dados |
Cobrado. Visão geral do faturamento. |
Permissões da conta do banco de dados
| Banco de dados | Migração de schema | Migração completa de dados | Migração incremental de dados |
| Banco de dados PostgreSQL autogerenciado | Permissão USAGE no pg_catalog | Permissão SELECT nos objetos de migração | superuser |
| Instância do ApsaraDB for PostgreSQL | Permissões CREATE e USAGE nos objetos de migração | permissão de proprietário do schema | permissão de proprietário do schema |
Para criar uma conta de banco de dados e conceder permissões, consulte os seguintes tópicos:
- Banco de dados PostgreSQL autogerenciado: CREATE USER e GRANT.
- Instância do ApsaraDB for PostgreSQL: Criar uma conta.
Processo de migração de dados
Para resolver dependências de objetos e melhorar a taxa de sucesso da migração, o DTS migra schemas e dados do PostgreSQL na seguinte ordem.
| Processo de migração do DTS | Descrição |
| 1. Migração de schema | O DTS migra as informações de schema de TABLE, VIEW, SEQUENCE, FUNCTION, USER DEFINED TYPE, RULE, DOMAIN, OPERATION e AGGREGATE para o banco de dados de destino. Nota Plug-ins e funções escritas em C não são suportados. |
| 2. Migração completa de dados | O DTS migra todos os dados existentes dos objetos selecionados para o banco de dados de destino. |
| 3. Migração de schema | O DTS migra as informações de schema de TRIGGER e FOREIGN KEY para o banco de dados de destino. |
| 4. Migração incremental de dados | Após a migração completa de dados, o DTS migra as atualizações incrementais dos objetos selecionados para o banco de dados de destino.
A migração incremental de dados permite uma migração suave com tempo de inatividade mínimo.
Nota
|
Preparar para a migração
- Faça login no servidor onde o banco de dados PostgreSQL autogerenciado está localizado.
- Modifique o arquivo postgresql.conf. Defina
wal_levelcomological.# - Settings - wal_level = logical # minimal, replica, or logical # (change requires restart)Nota- Após modificar o arquivo, execute
SELECT pg_reload_conf();ou reinicie o banco de dados PostgreSQL para que as alterações entrem em vigor. - Se você não precisar de migração incremental de dados, pode pular esta etapa.
- Após modificar o arquivo, execute
- Adicione os blocos CIDR dos servidores DTS ao arquivo pg_hba.conf do banco de dados PostgreSQL autogerenciado. Adicione apenas os intervalos de endereços IP do DTS correspondentes à região do banco de dados de destino. Adicionar endereços IP dos servidores DTS a uma lista de permissões.
Nota Para detalhes sobre este arquivo, consulte a documentação oficial do PostgreSQL sobre The pg_hba.conf File. Pule esta etapa se o endereço confiável já estiver definido como
0.0.0.0/0, conforme mostrado abaixo.# "local" is for Unix domain socket connections only local all all peer # IPv4 local connections: host all all 0.0.0.0/0 trust # IPv6 local connections: host all all ::1/128 md5 - Opcional: Para sincronizar operações DDL, crie triggers e funções no banco de dados de origem para capturar informações de DDL. Usar triggers e funções para implementar a migração incremental de DDL para PostgreSQL.
Nota Você pode pular esta etapa se não precisar sincronizar operações DDL.
Procedimento
-
Faça login no console do DTS.
NotaSe você for redirecionado automaticamente para o console do Data Management (DMS), clique no ícone
no canto inferior direito e depois clique em
para retornar ao console clássico do DTS. -
No painel de navegação à esquerda, clique em Data Migration.
-
Na parte superior da página Migration Tasks, selecione a região do cluster de destino.
-
No canto superior direito da página, clique em Create Data Migration Task.
- Configure as informações dos bancos de dados de origem e de destino.
Categoria Configuração Descrição N/D Nome da tarefa O DTS gera automaticamente um nome para a tarefa. Especifique um nome descritivo para facilitar a identificação. O nome não precisa ser exclusivo. Banco de dados de origem Tipo de instância Selecione o local de implantação do banco de dados de origem. Este exemplo usa Self-managed Database with Public IP. Nota Se o banco de dados autogerenciado usar um tipo de instância diferente, uma preparação adicional será necessária. Visão geral da preparação.Região da instância Se você selecionar Self-managed Database with Public IP, não é necessário definir Instance Region. Tipo de banco de dados Selecione PostgreSQL. Nome do host ou endereço IP Insira o endereço IP público do banco de dados PostgreSQL de origem. Porta Insira a porta de serviço do banco de dados PostgreSQL de origem. Esta porta deve estar acessível pela internet pública. Nome do banco de dados Insira o nome do banco de dados a ser migrado. Conta do banco de dados Insira a conta do banco de dados PostgreSQL de origem. Para requisitos de permissão, consulte Permissões da conta do banco de dados. Senha do banco de dados Insira a senha da conta do banco de dados. NotaApós inserir as informações do banco de dados de origem, clique em Test Connectivity ao lado de Database Password para verificar se as informações estão corretas. Se as informações estiverem corretas, a mensagem Passed será exibida. Se a mensagem Failed for exibida, clique em Diagnose ao lado da mensagem Failed e ajuste as informações do banco de dados de origem com base nas orientações.
Banco de dados de destino Tipo de instância Selecione RDS Instance. Região da instância Selecione a região da instância RDS de destino. ID da instância RDS Selecione o ID da instância RDS de destino. Nome do banco de dados Insira o nome do banco de dados de destino. Este pode ser diferente do nome do banco de dados de origem. Nota O banco de dados já deve existir na instância RDS de destino. Caso contrário, crie um banco de dados.Conta do banco de dados Insira a conta da instância RDS de destino. Para requisitos de permissão, consulte Permissões da conta do banco de dados. Senha do banco de dados Insira a senha da conta do banco de dados. NotaApós inserir as informações do banco de dados de destino, clique em Test Connectivity após Database Password para verificar se as informações inseridas estão corretas. Se as informações estiverem corretas, a mensagem Passed será exibida. Se a mensagem Failed for exibida, clique em Diagnose após Failed e ajuste as informações do banco de dados de destino com base nas orientações.
- Clique em Set Whitelist and Next no canto inferior direito.
Se a origem ou o destino for uma instância de banco de dados da Alibaba Cloud (como ApsaraDB RDS for MySQL ou ApsaraDB for MongoDB), o DTS adiciona automaticamente os blocos CIDR dos servidores DTS na região correspondente à lista de permissões da instância. Se a origem ou o destino for um banco de dados autogerenciado em uma instância ECS, o DTS adiciona automaticamente os blocos CIDR dos servidores DTS às regras do grupo de segurança da instância ECS. Você também deve garantir que o banco de dados autogerenciado não restrinja o acesso da instância ECS. Se o banco de dados for um cluster implantado em várias instâncias ECS, adicione manualmente os blocos CIDR dos servidores DTS da região às regras do grupo de segurança de cada instância ECS adicional. Se a origem ou o destino for um banco de dados autogerenciado em um data center ou em outra plataforma de nuvem, adicione manualmente os blocos CIDR dos servidores DTS da região correspondente para permitir o acesso. Para obter a lista de blocos CIDR dos servidores DTS, consulte Blocos CIDR dos servidores DTS.Aviso
Adicionar os blocos CIDR públicos dos servidores DTS, seja automaticamente ou manualmente, pode introduzir riscos de segurança. Ao usar este produto, você reconhece e aceita esses riscos potenciais. Você é responsável por implementar medidas básicas de segurança, incluindo, mas não se limitando a, usar senhas fortes, restringir portas abertas, usar autenticação para chamadas de API internas, revisar e restringir regularmente segmentos de rede desnecessários, ou conectar-se por redes privadas como Express Connect, VPN Gateway ou Smart Access Gateway.
- Selecione os tipos de migração e os objetos de migração.
Configuração Descrição Tipos de migração - Para realizar apenas uma migração completa, selecione Schema Migration e Full Data Migration.
- Para migrar com tempo de inatividade mínimo, selecione Schema Migration, Full Data Migration e Incremental Data Migration. Este exemplo seleciona os três.
Nota Se você não selecionar Incremental Data Migration, evite gravar novos dados no banco de dados de origem durante a migração para garantir a consistência dos dados.Objetos de migração Na caixa Available Objects, selecione os objetos a serem migrados e clique em
para movê-los para a caixa Selected Objects.Nota- Você pode selecionar objetos no nível de schema, tabela ou coluna.
- Por padrão, os nomes dos objetos migrados permanecem iguais no destino. Para renomear objetos, use o recurso de mapeamento de nomes de objetos. Mapeamento de nomes de objetos.
- O mapeamento de nomes de objetos pode fazer com que objetos dependentes falhem na migração.
Editar nomes mapeados Para renomear os objetos de migração no destino, use o recurso de mapeamento de nomes de objetos. Mapeamento de nomes de objetos. Duração da retentativa de conexão de origem e destino O período de retentativa padrão é de 12 horas. Você pode personalizá-lo. Se o DTS reconectar dentro desse período, a tarefa será retomada automaticamente. Caso contrário, a tarefa falhará. Nota Você será cobrado pela instância DTS durante a retentativa. Personalize o período de retentativa de acordo com suas necessidades ou libere a instância DTS imediatamente após as instâncias de origem e de destino serem liberadas. -
Após concluir a configuração, clique em Precheck and Start no canto inferior direito da página.
Nota-
Antes de a tarefa de migração iniciar, o DTS executa uma pré-verificação. A tarefa só pode iniciar após passar na pré-verificação.
-
Se a pré-verificação falhar, clique no ícone
ao lado do item com falha para ver os detalhes.-
Corrija os problemas conforme indicado e execute a pré-verificação novamente.
-
Se você não precisar corrigir os itens de aviso, selecione Ignore e depois clique em Ignore Warnings and Rerun Precheck para executar a pré-verificação novamente.
-
-
-
Após a tarefa passar na pré-verificação, clique em Next.
-
Na caixa de diálogo Confirm Settings que aparece, selecione uma Instance Class e marque a caixa de seleção Data Transmission Service (pay-as-you-go) Service Terms.
- Clique em Buy and Start para iniciar a tarefa de migração.
Parar a tarefa de migração
- Migração completa de dados
Não pare manualmente uma tarefa durante a migração completa de dados. Caso contrário, o sistema pode não conseguir migrar todos os dados. Aguarde até que a tarefa de migração termine automaticamente.
- Migração incremental de dados
Este tipo de tarefa não para automaticamente; você deve pará-la manualmente.
- Aguarde até que a tarefa entre no estágio de Incremental Data Migration com status Undelayed. Em seguida, pare as gravações no banco de dados de origem por alguns minutos. Durante esse período, o status de Incremental Data Migration pode apresentar latência.
- Aguarde até que o status de Incremental Data Migration retorne a Undelayed. Após confirmar isso na lista, marque a caixa de seleção da tarefa e clique no botão StopEnd na barra de operações em lote na parte inferior.