Fluxo de migração

Para migrações homogêneas do PostgreSQL para o Cloud SQL, o Database Migration Service se conecta à instância de destino do Cloud SQL para PostgreSQL e gerencia o processo de migração contínua em nome dela. A instância de destino estabelece a conexão com o banco de dados de origem, enquanto o Database Migration Service organiza e monitora o pipeline de dados de ponta a ponta.

Para migrações homogêneas padrão do PostgreSQL para o Cloud SQL, o Database Migration Service é compatível com migrações contínuas. Em uma migração contínua, os dados iniciais são carregados de um despejo de snapshot e, em seguida, as alterações de dados em andamento são replicadas continuamente do registro prévio de escrita (WAL) do banco de dados de origem usando a decodificação lógica e a extensão pglogical. Para migrações contínuas de início rápido, o Database Migration Service usa o pgnative.

Fases da migração contínua

As migrações contínuas passam pelas seguintes fases sequenciais:

Migrações padrão

  1. Configuração e orquestração da replicação: quando você cria o job de migração, o Database Migration Service configura a instância de destino do Cloud SQL para PostgreSQL para atuar como uma réplica e estabelece assinaturas de replicação com a extensão pglogical. Ao migrar para uma instância atual do Cloud SQL, o Database Migration Service rebaixa a instância para configurá-la como uma réplica externa (sem colocar o banco de dados no modo somente leitura).
  2. Fase de snapshot inicial: quando você inicia o job de migração, o Database Migration Service faz um snapshot consistente dos bancos de dados selecionados na instância de origem. Esse processo bloqueia brevemente a tabela (normalmente por menos de 10 segundos por tabela) enquanto o snapshot é inicializado. O banco de dados de origem continua aceitando leituras e gravações durante todo o processo.
  3. Fase de carregamento de dados: o Database Migration Service transmite os dados do snapshot inicial do banco de dados de origem e os carrega na instância de destino do Cloud SQL para PostgreSQL.
  4. Criação de restrições e índices: após o carregamento inicial de dados, as restrições de tabela (incluindo chaves primárias e chaves estrangeiras) e os índices secundários são criados na instância de destino. Separar o carregamento de dados da criação de restrições otimiza a velocidade de ingestão de dados.
  5. Fase de captura de dados alterados (CDC): depois que as restrições são aplicadas, o Database Migration Service entra na fase contínua de CDC. Durante a CDC, o Database Migration Service captura as mudanças de DML em andamento do fluxo de replicação lógica do banco de dados de origem usando pglogical e as aplica à instância de destino quase em tempo real.
  6. Fase de transição e promoção: quando estiver tudo pronto para alternar o tráfego do aplicativo para a instância de destino, interrompa as gravações no banco de dados de origem, verifique se o atraso de replicação chega a zero e inicie a promoção no Database Migration Service. Durante a promoção, o Database Migration Service desconecta a instância de destino da origem, remove os slots de replicação e transforma o destino em uma instância principal independente de leitura/gravação do Cloud SQL para PostgreSQL.

Migrações de início rápido

  1. Configuração e orquestração da replicação: quando você cria o job de migração, o Database Migration Service configura automaticamente a conectividade de rede em IPs particulares usando interfaces do Private Service Connect (criando automaticamente configurações de conectividade particular, anexos de rede e sub-redes). Ele estabelece a replicação entre os bancos de dados de origem e de destino usando a replicação lógica do PostgreSQL (com pgnative), sem exigir a instalação da extensão pglogical na origem ou o rebaixamento da instância de destino. O destino pode ser uma instância ativa que exibe tráfego para outros bancos de dados.
  2. Fase de snapshot inicial: quando você inicia o job de migração, o Database Migration Service cria um snapshot consistente dos bancos de dados selecionados (migrando até 50 bancos de dados por job) no servidor de banco de dados de origem. O banco de dados de origem continua aceitando leituras e gravações durante todo o processo.
  3. Fase de carregamento de dados: o Database Migration Service transmite os dados do snapshot inicial diretamente para a instância de destino do Cloud SQL para PostgreSQL por uma conectividade particular. Os objetos do banco de dados de destino são atribuídos ao usuário de migração gerado pelo Database Migration Service (ao usar o console do Google Cloud ) ou especificado com a Google Cloud CLI.
  4. Criação de restrições e índices: após a conclusão do carregamento inicial de dados, as restrições de tabela e os índices secundários são criados na instância de destino para garantir a fidelidade do esquema e maximizar o desempenho da ingestão.
  5. Fase de captura de dados alterados (CDC): depois que as restrições são aplicadas, o Database Migration Service entra na fase contínua de CDC. Durante a CDC, o Database Migration Service transmite as mudanças de DML em andamento do fluxo de replicação lógica do pgnative PostgreSQL e as aplica à instância de destino quase em tempo real. Para tabelas sem chaves primárias, as operações UPDATE e DELETE podem ser replicadas quando a identidade da réplica da tabela é configurada como INDEX ou FULL.
  6. Fase de transição e promoção: quando estiver tudo pronto para alternar o tráfego do aplicativo para a instância de destino, interrompa as gravações no banco de dados de origem, verifique se o atraso de replicação chega a zero e inicie a promoção no Database Migration Service. Durante a promoção, o Database Migration Service finaliza a replicação de CDC, encerra os slots de replicação e desvincula o pipeline de migração, deixando os bancos de dados de destino do Cloud SQL para PostgreSQL totalmente operacionais para conexões de clientes.

A seguir