Migrar para uma instância de destino atual

Nesta página, descrevemos como migrar seus bancos de dados para uma instância preexistente do Cloud SQL para PostgreSQL criada diretamente no Cloud SQL.

Esse caminho é útil para cenários em que a instância de destino é gerenciada por uma equipe diferente ou se você precisa criar a instância fora do Database Migration Service (por exemplo, se você usa o Terraform, precisa de flags personalizadas específicas ou de topologias de rede avançadas). Se a migração tiver requisitos diferentes, considere seguir um fluxo de migração diferente. Para mais informações, consulte Começar a usar as migrações do PostgreSQL.

Em geral, a migração segue estas etapas:

  1. Configure o banco de dados de origem para permitir que o Database Migration Service mova seus dados para os novos bancos de dados.
  2. Configure a conectividade de rede com a instância de origem do PostgreSQL.
  3. Prepare e configure a instância de destino do Cloud SQL.
  4. Crie o perfil de conexão de origem e o job de migração.
  5. Inicie e monitore o job de migração.
  6. Promova o job de migração e mova o aplicativo para usar os novos bancos de dados.

Custos

Neste documento, você usará os seguintes componentes faturáveis do Google Cloud:

Para gerar uma estimativa de custo baseada na projeção de uso deste tutorial, use a calculadora de preços.

Antes de começar

  1. Verifique se esse caminho de migração é totalmente compatível com seu cenário. Consulte as seguintes páginas:
  2. Considere em qual região você quer criar o banco de dados de destino. O Database Migration Service é um produto totalmente regional, o que significa que todas as entidades relacionadas à migração (perfis de conexão de origem e destino, jobs de migração, bancos de dados de destino, espaços de trabalho de conversão) precisam ser salvas em uma única região.
  3. No console do Google Cloud , na página do seletor de projetos, selecione ou crie um projeto do Google Cloud .

    Acessar o seletor de projetos

  4. Ative as APIs Database Migration Service e API Cloud SQL Admin.

    Ative as APIs

Funções exigidas

Para receber as permissões necessárias para realizar migrações homogêneas do PostgreSQL com o Database Migration Service, peça ao administrador para conceder a você os papéis do IAM necessários no projeto:

Para mais informações sobre como conceder papéis, consulte Gerenciar acesso na documentação do Identity and Access Management.

Esses papéis predefinidos contêm as permissões necessárias para realizar migrações homogêneas do PostgreSQL com o Database Migration Service. Para ver as permissões exatas necessárias, expanda a seção Permissões necessárias:

Permissões necessárias

As permissões a seguir são necessárias para realizar migrações homogêneas do PostgreSQL com o Database Migration Service:

  • datamigration.*
  • cloudsql.instances.create
  • cloudsql.instances.get
  • cloudsql.instances.list
  • cloudsql.instances.update
  • cloudsql.instances.delete
  • cloudsql.operations.get
  • cloudsql.users.list
  • cloudsql.users.get
  • cloudsql.users.create
  • cloudsql.users.update
  • cloudsql.users.delete

Essas permissões também podem ser concedidas com papéis personalizados ou outros papéis predefinidos.

Preparar o banco de dados de origem

Para preparar os dados de origem para migração, siga estas etapas:

  1. Escolha e configure o método de conectividade de rede de origem.
  2. Configure a instância do banco de dados de origem. Em geral, isso inclui as seguintes etapas:
    1. Instale a extensão pglogical do PostgreSQL (versão 2.2.1 ou mais recente) no banco de dados de origem e em todos os bancos de dados que serão migrados.
    2. Configure os parâmetros do PostgreSQL: defina wal_level = logical e garanta valores adequados para max_replication_slots, max_wal_senders e max_worker_processes.
    3. Conceda privilégios de replicação ao usuário da migração e configure pg_hba.conf para permitir conexões da instância de destino do Cloud SQL.

    Para instruções detalhadas, consulte Configurar o banco de dados de origem.

  3. Crie o perfil de conexão de origem.

Preparar e configurar a instância de destino

Ao migrar para uma instância atual do Cloud SQL (como uma instância pré-provisionada por outra equipe ou gerenciada com o Terraform), verifique se ela atende a todos os pré-requisitos do Database Migration Service antes de criar o job de migração:

  1. Prontidão da instância e estado dos dados:
    • A instância de destino precisa ser independente (não uma réplica) no estado RUNNABLE.
    • A instância precisa estar na mesma região do Google Cloud job de migração e do perfil de conexão.
    • A instância só pode ser associada a um job de migração ativo por vez.
    • A instância de destino não pode conter dados de usuários, tabelas definidas pelo usuário ou bancos de dados que não sejam do sistema. A verificação do job de migração falhará se houver dados de usuário na instância. Para mais informações, consulte Limitações para migrações para instâncias de destino atuais. Se necessário, limpe os dados atuais da instância de destino.
  2. Configuração da flag de banco de dados: ative a flag cloudsql.enable_pglogical na instância de destino do Cloud SQL para PostgreSQL. Essa flag é obrigatória para a replicação lógica. Para mais informações sobre como definir flags, consulte Como configurar flags de banco de dados.
  3. Credenciais e permissões do usuário do banco de dados: verifique se as contas de usuário do banco de dados administrativo necessárias existem na instância de destino (como o usuário padrão postgres ou um usuário de migração dedicado com o papel cloudsqlsuperuser) para gerenciar bancos de dados e papéis. É possível criar e gerenciar usuários de banco de dados usando comandos psql padrão ou pelo console do Google Cloud . Para mais informações, consulte Gerenciar usuários na documentação do Cloud SQL.
  4. Requisitos de conectividade de rede: verifique se a rede da instância de destino está configurada corretamente para se comunicar com o banco de dados de origem de acordo com o método de conectividade escolhido:
    • Private Service Connect: se a instância de destino estiver ativada para o Private Service Connect, ela precisará ter um anexo de rede de saída do Private Service Connect configurado. Consulte Conexões de saída do Private Service Connect na documentação do Cloud SQL.
    • Peering de nuvem privada virtual (acesso a serviços particulares / IP privado): a instância de destino precisa ter o IP privado ativado na rede de nuvem privada virtual que faz peering ou roteia para o banco de dados de origem. Consulte Configurar IP privado.
    • Lista de permissões de IP público: se você estiver usando a conexão por IP público, verifique se o IP público está ativado na instância de destino e se você incluiu na lista de permissões os endereços IP de saída da instância (incluindo os IPs de saída primários e secundários, se a instância estiver configurada para alta disponibilidade) no firewall de origem. Consulte Autorizar redes para IP público.
  5. Aviso de rebaixamento de instância:
    • Para migrações padrão do PostgreSQL, o Database Migration Service rebaixa a instância de destino independente atual para configurá-la como uma réplica externa do banco de dados de origem. É necessário confirmar esse rebaixamento ao criar o job de migração no console do Google Cloud inserindo o ID da instância de destino.
    • O rebaixamento da instância não coloca o banco de dados do Cloud SQL para PostgreSQL no modo somente leitura, mas é preciso evitar operações de gravação em tabelas ou bancos de dados que participam da migração para evitar conflitos de replicação.
    • Os backups automatizados, a recuperação pontual (PITR, na sigla em inglês) e a criação de réplicas de leitura do Cloud SQL ficam suspensos até que você promova o job de migração. Para mais informações, consulte Limitações para migrações para instâncias de destino atuais.
    • Se você gerenciar sua instância de destino usando infraestrutura como código (como o Terraform), o Database Migration Service vai modificar as configurações de backup e recuperação durante a migração. Para orientações sobre como lidar com o desvio de configuração do Terraform, consulte Diagnosticar problemas.

Criar e executar o job de migração

Para configurar e executar a migração, siga estas etapas:

  1. Opcional: se você quiser gerenciar seus próprios certificados ou chaves de criptografia para o job de migração, prepare as chaves de criptografia necessárias.
  2. Crie e execute o job de migração para uma instância de destino atual.

    É possível monitorar o progresso da migração e a integridade da instância de destino com os recursos de observabilidade do Database Migration Service. Consulte Métricas de job de migração.

Finalizar a migração

Quando você decidir mudar o aplicativo para a nova instância do Cloud SQL para PostgreSQL, conclua a migração seguindo estas etapas:

  1. Opcional: Configure réplicas de leitura em cascata. Se você quiser usar réplicas de leitura em cascata, configure-as quando o job de migração entrar na fase de CDC.
  2. Interrompa todas as operações de gravação no banco de dados de origem. É possível alternar para o modo somente leitura para manter a funcionalidade operacional.
  3. Promova o job de migração.
  4. Opcional: verifique se os dados de migração estão completos.
  5. Se você gerencia o banco de dados de destino usando infraestrutura como código (como o Terraform), reaplique a configuração após a promoção para reconciliar as configurações ajustadas pelo Database Migration Service durante a migração.

A seguir

Saiba mais sobre os recursos do Google Cloud para o Cloud SQL para PostgreSQL. Consulte Recursos do Cloud SQL para PostgreSQL.