Criar um job de migração para uma nova instância de destino

Quando você cria a instância de destino com o Database Migration Service, ela não é rebaixada e não é executada no modo somente leitura, mas a execução de determinadas operações durante o processo de migração pode resultar em erros de migração. Ao migrar para uma nova instância de destino, lembre-se das seguintes considerações operacionais:

  • Evite operações de gravação na migração de dados:não realize operações de gravação (como INSERT, UPDATE, DELETE ou alterações de esquema DDL) na instância de destino em tabelas ou bancos de dados incluídos na migração. Essas operações podem levar a conflitos de replicação com dados provenientes da origem.
  • Gerenciar usuários do banco de dados:é possível criar e gerenciar usuários do banco de dados a qualquer momento usando comandos padrão do psql ou pelo Cloud SQL no console do Google Cloud . Para mais informações, consulte Gerenciar usuários na documentação do Cloud SQL.
  • Backups e réplicas de leitura:os backups automatizados e a recuperação pontual (PITR, na sigla em inglês) são suspensos durante a replicação contínua, e não é possível criar réplicas de leitura do Cloud SQL na instância de destino até que o job de migração seja promovido.

Para mais informações, consulte Limitações conhecidas.

A criação de um job de migração inclui:

  1. Definir as configurações do job de migração.
  2. Definir as configurações de origem e selecionar os bancos de dados a serem migrados.
  3. Definir configurações para a instância de destino do banco de dados do Cloud SQL e criar a instância.
  4. Configurar a conectividade entre as instâncias de banco de dados de origem e destino.
  5. Testar o job de migração para garantir que as informações de conexão fornecidas para o job sejam válidas.

Para criar um job de migração para uma nova instância de destino, faça o seguinte:

Console

Definir configurações para o job de migração

  1. No console do Google Cloud , acesse a página Jobs de migração.

    Acessar Jobs de migração

  2. Clique em Criar job de migração.

    A página do assistente de configuração do job de migração é aberta. Esse assistente contém vários painéis que orientam você em cada etapa da configuração.

    É possível pausar a criação de um job de migração a qualquer momento clicando em Salvar e sair. Todos os dados inseridos até esse ponto são salvos em um rascunho de job de migração. É possível concluir o rascunho do job de migração mais tarde.

  3. Na página Começar, insira as seguintes informações:
    1. Nome do job de migração

      Este é um nome legível por humanos para o job de migração. Esse valor é exibido no console do Google Cloud .

    2. ID da tarefa de migração

      Este é um identificador legível por máquina para seu job de migração. Use esse valor para trabalhar com jobs de migração usando os comandos da CLI do Google Cloud ou a API do Database Migration Service.

    3. Na lista Mecanismo de banco de dados de origem, selecione PostgreSQL.

      O campo Mecanismo de banco de dados de destino é preenchido automaticamente com Cloud SQL para PostgreSQL e não pode ser alterado.

    4. Selecione a região em que você salvou o job de migração.

      O Database Migration Service é um produto totalmente regional, o que significa que todas as entidades relacionadas à sua migração (perfis de conexão de origem e destino, jobs de migração, bancos de dados de destino) precisam ser salvas em uma única região. Selecione a região com base na localização dos serviços que precisam dos seus dados, como instâncias do Compute Engine ou apps do App Engine, entre outros serviços. Depois de escolher a região de destino, essa seleção não poderá ser alterada.

    5. Especifique o tipo de serviço de migração: Único ou Contínuo.
    6. Revise os pré-requisitos gerados para seu ambiente. Verifique se o banco de dados de origem está configurado corretamente. Para mais informações, consulte Configurar o banco de dados de origem.
  4. Clique em Salvar e continuar.

Especificar informações sobre o perfil de conexão de origem

Na página Definir uma origem, siga estas etapas:

  1. No menu suspenso Perfil de conexão de origem, selecione o perfil de conexão do banco de dados de origem (ou clique em Criar um perfil de conexão, consulte Criar um perfil de conexão de origem).
  2. Na seção Personalizar as configurações de paralelismo, clique em Mostrar as configurações de paralelismo.

    A velocidade do paralelismo de despejo de dados está relacionada à quantidade de carga induzida no banco de dados de origem. Você pode usar as seguintes configurações:

    • Ideal (recomendado): desempenho equilibrado com carga ideal no banco de dados de origem.
    • Máximo: fornece as velocidades de despejo mais altas, mas pode causar um aumento da carga no banco de dados de origem.
    • Mínimo: usa a menor quantidade de recursos de computação no banco de dados de origem, mas pode ter uma capacidade de despejo mais lenta.

    Se você escolher configurações de paralelismo ajustadas, aumente os parâmetros max_replication_slots, max_wal_senders e max_worker_processes no banco de dados de origem. Para verificar a configuração, execute o teste do job de migração ao final da criação dele.

  3. Clique em Salvar e continuar.

Configurar e criar a instância de destino do Cloud SQL

  1. Na página Definir um destino, no menu suspenso Tipo de instância de destino, selecione Nova instância. Defina todas as configurações relevantes:
    1. No campo ID da instância de destino, forneça um identificador para a instância do Cloud SQL ou use o identificador gerado automaticamente.

      Não inclua informações sensíveis ou de identificação pessoal no identificador. Não é necessário incluir o ID do projeto no nome da instância. Isso é feito automaticamente quando necessário, como nos arquivos de registros.

    2. No campo Senha, forneça uma senha alfanumérica para a instância de destino do Cloud SQL. Esta é a senha da conta de administrador postgres na instância.

      Insira a senha manualmente ou clique em Gerar para que o Database Migration Service crie uma automaticamente.

    3. No menu suspenso Versão do banco de dados, escolha a versão do banco de dados para a instância de destino.

      Saiba mais sobre o suporte à migração entre versões.

    4. Selecione a edição do Cloud SQL para PostgreSQL da instância de destino. Há duas opções disponíveis: Cloud SQL para PostgreSQL Enterprise e Cloud SQL para PostgreSQL Enterprise Plus.

      As edições do Cloud SQL para PostgreSQL vêm com diferentes conjuntos de recursos, tipos de máquina disponíveis e preços. Consulte a documentação do Cloud SQL para escolher a edição adequada às suas necessidades. Para mais informações, consulte Introdução às edições do Cloud SQL para PostgreSQL.

    5. O menu Região mostra a mesma região que você selecionou na página Começar.

      Se você estiver configurando a instância para alta disponibilidade, selecione Várias zonas (altamente disponível). É possível selecionar as zonas primária e secundária. As condições a seguir se aplicam quando a zona secundária é usada durante a criação da instância:

      • As zonas padrão são Qualquer para a zona primária e Qualquer (diferente da primária) para a zona secundária.
      • Se as zonas primária e secundária forem especificadas, elas precisarão ser zonas diferentes.
    6. Na seção Conexões, escolha se quer adicionar um endereço IP público ou privado à instância de destino. É possível configurar a instância para ter os dois tipos de endereços IP, mas pelo menos um tipo é necessário para a migração. Selecione uma destas opções:
      • Se você quiser migrar usando o peering de VPC ou um túnel SSH reverso, selecione IP privado.
        • Para ativar a conectividade de IP privado, verifique se você atende a todos os requisitos de rede adicionais.

          Abra esta seção para ver todos os requisitos de IP particular.

        • Selecione a rede VPC associada para fazer peering. Se você planeja se conectar à origem da migração usando o peering de VPC, escolha a VPC em que a instância está localizada.
        • Se uma rede de serviço gerenciado nunca tiver sido configurada para a VPC selecionada, você poderá selecionar um intervalo de IP e clicar em Conectar ou usar um intervalo de IP selecionado automaticamente e clicar em Alocar e conectar.
      • Se você quiser migrar pela Internet usando uma lista de permissões de IP, selecione IP público.

        Se quiser, em IP público, clique no campo Redes autorizadas e autorize uma rede ou um proxy a se conectar à instância do Cloud SQL. As redes são autorizadas apenas com os endereços que você fornecer. Consulte Configurar IP público na documentação do Cloud SQL.

      Você vai configurar a conectividade do job de migração em uma etapa posterior. Para saber mais sobre os métodos de rede disponíveis, consulte Configurar conectividade.

  2. Selecione o tipo de máquina para a instância do Cloud SQL. Saiba mais sobre os tipos de máquina do PostgreSQL.
  3. Para o Cloud SQL para PostgreSQL Enterprise Plus: marque a caixa de seleção Ativar cache de dados se quiser usar o recurso de cache de dados no banco de dados de destino.

    O cache de dados é um recurso opcional disponível para instâncias da edição Cloud SQL para PostgreSQL Enterprise Plus que adiciona uma unidade de estado sólido local de alta velocidade ao banco de dados de destino. Esse recurso pode gerar custos adicionais para o Cloud SQL. Para mais informações sobre o cache de dados, consulte Visão geral do cache de dados na documentação do Cloud SQL.

  4. Especifica o tipo de armazenamento da instância do Cloud SQL. É possível escolher uma unidade de estado sólido (SSD) ou uma unidade de disco rígido (HDD).
  5. Especifique a capacidade de armazenamento (em GB) da instância do Cloud SQL.

    Verifique se a instância tem capacidade de armazenamento suficiente para processar os dados do banco de dados de origem. É possível aumentar essa capacidade a qualquer momento, mas não é possível diminuí-la.

  6. (Opcional) Configure as opções de criptografia de dados ou os rótulos de recursos para a instância de destino.

    Abra esta seção para ver as etapas opcionais.

    Clique em Mostrar configurações opcionais e, em seguida:

    1. Especifique se você quer gerenciar a criptografia dos dados migrados da origem para o destino. Por padrão, seus dados são criptografados com uma chave gerenciada pelo Google Cloud. Se você quiser gerenciar a criptografia, use uma chave de criptografia gerenciada pelo cliente (CMEK). Para fazer isso, siga estas etapas:

      1. Marque a caixa de seleção Usar uma chave de criptografia gerenciada pelo cliente (CMEK).
      2. No menu Selecionar uma chave gerenciada pelo cliente, selecione sua CMEK.

      Se você não encontrar sua chave, clique em Inserir nome do recurso da chave para fornecer o nome do recurso da chave que você quer usar. Exemplo de nome de recurso de chave: projects/my-project-name/locations/my-location/keyRings/my-keyring/cryptoKeys/my-key.

    2. Adicione as flags necessárias para serem aplicadas ao servidor de banco de dados. Se possível, verifique se as flags de banco de dados na instância de destino do Cloud SQL criada são as mesmas do banco de dados de origem. Saiba mais sobre as flags de banco de dados compatíveis com o PostgreSQL.
    3. Adicione os rótulos específicos da instância do Cloud SQL.

      Os rótulos ajudam a organizar as instâncias. Por exemplo, é possível organizar rótulos por centro de custos ou por ambiente. Os rótulos também são incluídos na fatura para que você confira a distribuição de custos entre eles.

  7. Clique em Criar destino e continuar. O Database Migration Service está criando sua instância de destino do Cloud SQL. Esse processo pode levar vários minutos.

Configurar a conectividade entre as instâncias de banco de dados de origem e destino

No menu suspenso Método de conectividade, selecione um método de conectividade de rede. Esse método define como a instância recém-criada do Cloud SQL vai se conectar ao banco de dados de origem. Os métodos atuais de conectividade de rede para migrar para uma nova instância incluem lista de permissões de IP, túnel SSH reverso e peering de VPC.

Se você quiser usar…Faça o seguinte:
O método de conectividade de rede de lista de permissões de IP, É preciso especificar o endereço IP de saída da instância de destino. Se a instância do Cloud SQL criada for de alta disponibilidade, inclua os endereços IP de saída das instâncias primária e secundária.
O método de conectividade de rede de túnel SSH reverso, Selecione a instância de VM do Compute Engine que vai hospedar o túnel.

Depois de especificar a instância, o Google vai fornecer um script que executa as etapas para configurar o túnel entre os bancos de dados de origem e de destino. Você precisará executar o script na Google Cloud CLI.

Execute os comandos em uma máquina que tenha conectividade com o banco de dados de origem e com o Google Cloud.

O método de conectividade de rede de peering de VPC, Selecione a rede VPC em que o banco de dados de origem está localizado. A instância do Cloud SQL será atualizada para se conectar a essa rede.

Depois de selecionar e configurar a conectividade de rede, clique em Configurar e continuar.

Configurar bancos de dados de migração

É possível migrar todos os bancos de dados da instância de origem ou escolher apenas bancos de dados específicos. A instância de destino não pode conter bancos de dados que compartilhem o nome com os bancos de dados escolhidos para migração. Se o Database Migration Service encontrar uma colisão de nome de banco de dados, o banco de dados ofensivo será descartado no destino antes da migração.

  1. Na lista Bancos de dados a serem migrados, selecione uma das seguintes opções:
    • Todos os bancos de dados: seleciona todos os bancos de dados que existem na origem.
    • Bancos de dados específicos: permite selecionar bancos de dados específicos de todos os bancos de dados que existem na origem.
  2. Se quiser migrar bancos de dados específicos, filtre a lista que aparece e selecione os bancos de dados que você quer que o Database Migration Service migre para o destino.

    Se a lista não aparecer e um erro de descoberta de banco de dados for exibido, clique em Atualizar. Se a descoberta do banco de dados falhar, o job vai migrar todos os bancos de dados. Você pode continuar criando um job de migração e corrigir os erros de conectividade mais tarde.

  3. Clique em Salvar e continuar.

Testar, criar e executar o job de migração

Nesta etapa final, revise o resumo das configurações do job de migração, da origem, do destino e do método de conectividade e teste a validade da configuração do job de migração. Se houver problemas, modifique as configurações do job de migração. Nem todas as configurações são editáveis.

  1. Na página Testar e criar job de migração, clique em Testar job.

    Se o teste falhar, você pode resolver o problema na parte do fluxo destinada a isso e refazer o teste. Para informações sobre como resolver problemas em um teste de job de migração com falha, consulte Diagnosticar problemas do PostgreSQL.

  2. Quando o teste do job de migração terminar, clique em Criar e iniciar job para criar o job de migração e iniciá-lo imediatamente ou clique em Criar job para criar o job de migração sem iniciá-lo imediatamente.

    Se o job não for iniciado no momento da criação, ele poderá ser iniciado na página Jobs de migração clicando em INICIAR. Independentemente de quando o job de migração começar, sua organização será cobrada pela existência da instância de destino.

    A migração está em andamento. Quando você inicia o job de migração, o Database Migration Service começa o despejo completo inicial e a replicação. Para mais informações, consulte Limitações conhecidas.

  3. Prossiga para Revisar o job de migração.

CLI do Google Cloud

  1. Crie o perfil de conexão de destino.
    Ao migrar para uma nova instância de destino com a Google Cloud CLI, você cria a instância de destino e o perfil de conexão em uma única ação.
    Execute o seguinte comando (clique no link para expandir):

    gcloud database-migration connection-profiles create postgresql

    Este exemplo usa a flag opcional --no-async para que todas as operações sejam realizadas de forma síncrona. Isso significa que alguns comandos podem levar um tempo para serem concluídos. É possível pular a flag --no-async para executar comandos de forma assíncrona. Se você fizer isso, use o comando gcloud database-migration operations describe para verificar se a operação foi bem-sucedida.

    Antes de usar os dados do comando abaixo, faça estas substituições:

    • DEST_CONN_ID pelo identificador do perfil de conexão de destino.
    • REGION pela região em que você quer salvar o perfil de conexão. Essa região precisa ser a mesma da instância de destino.
    • DEST_INSTANCE pelo ID da instância de destino do Cloud SQL pré-criada.
    • DEST_USER pelo nome do usuário de migração no banco de dados de destino.
    • DEST_PASSWORD pela senha do usuário de migração no banco de dados de destino.

    Execute o seguinte comando:

    Linux, macOS ou Cloud Shell

    gcloud database-migration connection-profiles create postgresql DEST_CONN_ID \
      --region=REGION \
      --cloudsql-instance=DEST_INSTANCE \
      --username=DEST_USER \
      --password=DEST_PASSWORD \
      --role=DESTINATION \
      --no-async

    Windows (PowerShell)

    gcloud database-migration connection-profiles create postgresql DEST_CONN_ID `
      --region=REGION `
      --cloudsql-instance=DEST_INSTANCE `
      --username=DEST_USER `
      --password=DEST_PASSWORD `
      --role=DESTINATION `
      --no-async

    Windows (cmd.exe)

    gcloud database-migration connection-profiles create postgresql DEST_CONN_ID ^
      --region=REGION ^
      --cloudsql-instance=DEST_INSTANCE ^
      --username=DEST_USER ^
      --password=DEST_PASSWORD ^
      --role=DESTINATION ^
      --no-async

    Você receberá uma resposta semelhante a esta:

    Waiting for connection profile [CONNECTION_PROFILE_ID]
    to be created with [OPERATION_ID]
    
    Waiting for operation [OPERATION_ID] to complete...done.
    
    Created connection profile CONNECTION_PROFILE_ID [OPERATION_ID]
    
  2. Crie o job de migração.
    Se você usar o peering de VPC ou uma conectividade de túnel SSH reverso, adicione as flags necessárias, como --peer-vpc, ou --vm, --vm-ip, --vm-port, --vpc. Para mais informações, consulte Configurar conectividade e exemplos da Google Cloud CLI.
    Execute o seguinte comando (clique no link para expandir):

    gcloud database-migration migration-jobs create

    Este exemplo usa a flag opcional --no-async para que todas as operações sejam realizadas de forma síncrona. Isso significa que alguns comandos podem levar um tempo para serem concluídos. É possível pular a flag --no-async para executar comandos de forma assíncrona. Se você fizer isso, use o comando gcloud database-migration operations describe para verificar se a operação foi bem-sucedida.

    Antes de usar os dados do comando abaixo, faça estas substituições:

    • MIGRATION_JOB_ID por um identificador legível por máquina para o job de migração. Use esse valor para trabalhar com jobs de migração usando os comandos da CLI do Google Cloud ou a API do Database Migration Service.
    • REGION pelo identificador da região em que você quer salvar o job de migração.
    • MIGRATION_JOB_NAME por um nome legível por humanos para o job de migração. Esse valor é exibido no Database Migration Service no console do Google Cloud .
    • SOURCE_CONNECTION_PROFILE_ID por um identificador legível por máquina do perfil de conexão de origem. Para mais informações, consulte Criar um perfil de conexão de origem.
    • DESTINATION_CONNECTION_PROFILE_ID pelo identificador legível por máquina do perfil de conexão de destino.
    • Opcional: o Database Migration Service migra todos os bancos de dados na origem por padrão. Se você quiser migrar apenas bancos de dados específicos, use a flag --databases-filter e especifique os identificadores como uma lista separada por vírgulas.

      Por exemplo: --databases-filter=my-business-database,my-other-database

      Depois, é possível editar os jobs de migração criados com a flag --databases-filter usando o comando gcloud database-migration migration-jobs update.

    Execute o seguinte comando:

    Linux, macOS ou Cloud Shell

    gcloud database-migration migration-jobs \
    create MIGRATION_JOB_ID \
      --no-async \
      --region=REGION \
      --display-name=MIGRATION_JOB_NAME \
      --source=SOURCE_CONNECTION_PROFILE_ID \
      --destination=DESTINATION_CONNECTION_PROFILE_ID \
      --type=CONTINUOUS

    Windows (PowerShell)

    gcloud database-migration migration-jobs `
    create MIGRATION_JOB_ID `
      --no-async `
      --region=REGION `
      --display-name=MIGRATION_JOB_NAME `
      --source=SOURCE_CONNECTION_PROFILE_ID `
      --destination=DESTINATION_CONNECTION_PROFILE_ID `
      --type=CONTINUOUS

    Windows (cmd.exe)

    gcloud database-migration migration-jobs ^
    create MIGRATION_JOB_ID ^
      --no-async ^
      --region=REGION ^
      --display-name=MIGRATION_JOB_NAME ^
      --source=SOURCE_CONNECTION_PROFILE_ID ^
      --destination=DESTINATION_CONNECTION_PROFILE_ID ^
      --type=CONTINUOUS

    Você receberá uma resposta semelhante a esta:

    Waiting for migration job [MIGRATION_JOB_ID]
    to be created with [OPERATION_ID]
    
    Waiting for operation [OPERATION_ID] to complete...done.
    
    Created migration job MIGRATION_JOB_ID [OPERATION_ID]