Usar migrações de início rápido com o Database Migration Service

Nesta página, descrevemos como realizar migrações de início rápido para migrações homogêneas do PostgreSQL para o Cloud SQL para PostgreSQL.

Visão geral

As migrações de início rápido são um fluxo de migração contínua leve para cenários homogêneos do PostgreSQL. Com as migrações de início rápido, o Database Migration Service pode configurar automaticamente tudo o que você precisa para migrar seus bancos de dados: componentes de rede (anexos de rede, sub-redes, configurações de conectividade privada), perfis de conexão e jobs de migração.

Com as migrações de início rápido, é possível mover seus dados para uma instância do Cloud SQL para PostgreSQL ou criar uma nova ao configurar a migração. As migrações de início rápido são mais adequadas para:

  • Migrações básicas, em que não é necessário controle preciso sobre as configurações de paralelismo de despejo de dados.
  • Migrar seu banco de dados de um projeto Google Cloud para outro. Ao configurar uma migração de início rápido, é possível criar a instância de destino em um projeto diferente da origem e definir o Database Migration Service para criar o anexo de rede e a sub-rede na rede de nuvem privada virtual (VPC) de outro projeto.
  • Migrar de fontes que têm um endereço IP particular na sua rede de nuvem privada virtual (VPC) Google Cloud, como bancos de dados autogerenciados no Compute Engine ou instâncias do Cloud SQL para PostgreSQL ativadas para rede particular.

    Fontes hospedadas fora do Google Cloud podem precisar de componentes de rede adicionais (como uma conexão do Cloud VPN) para que possam ser acessadas em um endereço IP privado na sua rede VPC.

  • O único método compatível para conectividade de banco de dados são as interfaces do Private Service Connect com configurações de conectividade particular do Database Migration Service. O banco de dados de origem precisa ter um IP privado atribuído na rede VPC. Outros métodos de conectividade de origem homogêneos (como listas de permissões de IP público, túneis SSH reversos ou peering de VPC) não são compatíveis com migrações de início rápido.

Para saber mais sobre migrações de início rápido, consulte Migrações de início rápido na documentação do Database Migration Service.

Antes de começar

  1. Verifique se as migrações de início rápido podem oferecer suporte total ao seu cenário. Consulte Limitações da migração de início rápido na documentação do Database Migration Service.
  2. Faça login na sua Conta do Google.

    Se você ainda não tiver uma, inscreva-se agora.

  3. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  4. Verify that billing is enabled for your Google Cloud project.

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  6. Verify that billing is enabled for your Google Cloud project.

  7. Ative as APIs Database Migration Service, Compute Engine, Network Connectivity Center e Cloud SQL Admin.

    Ativar as APIs

Funções exigidas

Para receber as permissões necessárias para executar migrações de início rápido para o Cloud SQL para PostgreSQL com o Database Migration Service, peça ao administrador para conceder os papéis de Identity and Access Management (IAM) necessários para as contas envolvidas na migração nos projetos relevantes. Para mais informações sobre como conceder papéis, consulte Gerenciar o acesso na documentação do IAM.

Papéis e permissões no projeto de origem

Conceda os seguintes papéis a contas específicas no projeto Google Cloud em que reside o banco de dados origem:

  • Para a conta de usuário que realiza a migração: Administrador de rede do Compute (roles/compute.networkAdmin)
  • Para a conta de serviço do Database Migration Service do projeto de destino: Leitor da rede do Compute(roles/compute.networkViewer)

    A conta de serviço do Database Migration Service é criada quando você ativa a API Database Migration Service. O endereço de e-mail associado a essa conta é gerado automaticamente e não pode ser alterado. Esse endereço de e-mail usa o seguinte formato:

    service-DESTINATION_PROJECT_NUMBER@gcp-sa-datamigration.iam.gserviceaccount.com

Esses papéis predefinidos contêm as permissões necessárias para configurar a conectividade no projeto de banco de dados de origem como parte de uma migração de início rápido com o Database Migration Service. Para conferir as permissões exatas necessárias, expanda a seção Permissões necessárias (fonte):

Permissões necessárias (fonte)

As permissões a seguir são necessárias para realizar migrações de início rápido homogêneas com o Database Migration Service:

Para a conta de usuário que realiza a migração:

  • compute.networks.*
  • compute.subnetworks.*
  • compute.networkAttachments.*

Para a conta de serviço do Database Migration Service do projeto de destino: compute.networkAttachments.get.

Papéis e permissões no projeto de destino

Conceda os seguintes papéis à conta de usuário que realiza a migração no projeto Google Cloud em que o banco de dados de destino está localizado:

Esses papéis predefinidos contêm as permissões necessárias para configurar os componentes de migração necessários no projeto de banco de dados de destino como parte de uma migração de início rápido com o Database Migration Service. Para conferir as permissões exatas necessárias, expanda a seção Permissões necessárias (destino):

Permissões necessárias (destino)

As permissões a seguir são necessárias para realizar migrações de início rápido homogêneas com o Database Migration Service:

  • datamigration.*
  • cloudsql.instances.create
  • cloudsql.instances.delete
  • cloudsql.instances.get
  • cloudsql.instances.list
  • cloudsql.instances.update
  • cloudsql.instances.connect
  • cloudsql.instances.executeSql
  • cloudsql.instances.export
  • cloudsql.instances.import
  • cloudsql.instances.login
  • cloudsql.operations.get
  • cloudsql.users.get
  • cloudsql.users.list
  • cloudsql.users.create
  • cloudsql.users.update
  • cloudsql.users.delete

Configurar o banco de dados de origem

Para configurar o banco de dados de origem do PostgreSQL, faça o seguinte:

  1. Crie uma conta de usuário de migração dedicada na instância.
    • Para fontes do Cloud SQL para PostgreSQL, consulte Criar um usuário na documentação do Cloud SQL para PostgreSQL.
    • Para outras fontes, consulte a documentação do provedor de banco de dados ou crie e gerencie usuários na documentação do PostgreSQL.
  2. Atribua os privilégios necessários à conta de usuário de migração dedicada. Execute os seguintes comandos para cada banco de dados que você quer migrar:
    -- Grant the REPLICATION attribute
    ALTER ROLE MIGRATION_USER REPLICATION;
    
    -- Grant database-level permissions.
    -- Repeat for each database you want to migrate.
    GRANT CONNECT, CREATE ON DATABASE DATABASE_NAME TO MIGRATION_USER;
    
    -- Grant schema-level usage.
    -- Repeat for each schema in each database you want to migrate.
    GRANT USAGE ON SCHEMA SCHEMA_NAME TO MIGRATION_USER;

    Substitua:

    • MIGRATION_USER com o nome da conta de usuário de migração.
    • DATABASE_NAME com o nome do banco de dados que você quer migrar.
    • SCHEMA_NAME com o nome do esquema no banco de dados que você quer migrar.
  3. A conta de usuário de migração precisa ter acesso de propriedade às tabelas que você migra. Para conceder esse nível de acesso, faça o seguinte:
    • Atribua a função SUPERUSER do PostgreSQL à conta de migração.
      • Para fontes do Cloud SQL para PostgreSQL, atribua a função cloudsqlsuperuser.
      • Para outras fontes, atribua a função SUPERUSER ou consulte a documentação do provedor de banco de dados para um conjunto equivalente de permissões.
    • Adicione a conta de usuário de migração ao grupo de usuários proprietário das tabelas. Execute este comando:
      -- Grant table ownership.
      GRANT TABLE_OWNER_GROUP_NAME TO MIGRATION_USER;

      Substitua:

      • TABLE_OWNER_GROUP_NAME com o nome do grupo de usuários proprietário de cada tabela que você quer migrar.
      • MIGRATION_USER com o nome da conta de usuário de migração.
  4. Para tabelas sem chaves primárias: o Database Migration Service não replica operações UPDATE ou DELETE para tabelas sem chaves primárias durante a fase de captura de dados alterados (CDC). Se você quiser incluir essas operações na sua replicação, modifique as tabelas sem chaves primárias com REPLICA IDENTITY:
    ALTER TABLE TABLE_NAME REPLICA IDENTITY FULL;
    ALTER TABLE TABLE_NAME REPLICA IDENTITY USING INDEX INDEX_NAME;

    Substitua:

    • TABLE_NAME é o nome da tabela que não tem chaves primárias.
    • INDEX_NAME é o índice exclusivo que pode rastrear linhas de tabelas sem chaves primárias.
  5. Configure as configurações de replicação usando flags de banco de dados.

    Fontes autogerenciadas

    Para salvar as mudanças nas flags do banco de dados, é necessário reiniciar o banco de dados por completo. Os exemplos a seguir usam consultas SQL para mudar valores de flags. Se não for possível executar consultas SQL diretamente, consulte a documentação do provedor para saber como mudar essas flags.

    1. Defina o parâmetro wal_level como logical. Execute este comando:
      ALTER SYSTEM SET wal_level = 'logical';
    2. Defina o parâmetro wal_sender_timeout como 0. Esse valor desativa o mecanismo de tempo limite usado para encerrar conexões de replicação inativas. Execute este comando:
      ALTER SYSTEM SET wal_sender_timeout = 0;
          
    3. Configure o número máximo de slots de replicação com o parâmetro max_replication_slots. Esse parâmetro precisa ser definido como pelo menos o número de bancos de dados que você está migrando por job de migração, mais algumas reservas para sincronização de tabelas.

      Por exemplo, se você estiver migrando cinco bancos de dados e houver dois jobs de migração criados para a instância de origem, o número de slots de replicação precisará ser pelo menos 5 * 2 = 10, além do número de slots de replicação já usados por você.

      Para definir esse parâmetro, execute o seguinte comando:

      ALTER SYSTEM SET max_replication_slots = NUMBER_OF_SLOTS;
          
      em que NUMBER_OF_SLOTS representa o número máximo de slots de replicação.
    4. Configure o parâmetro max_wal_senders com pelo menos o mesmo valor de max_replication_slots, além do número de remetentes já usados na sua instância.

      Por exemplo, se o parâmetro max_replication_slots estiver definido como 10 e você já estiver usando dois remetentes, o número de processos de remetentes WAL em execução ao mesmo tempo será 10 + 2 = 12.

      Para definir esse parâmetro, execute o seguinte comando:

      ALTER SYSTEM SET max_wal_senders = NUMBER_OF_SENDERS;
          
      Em que NUMBER_OF_SENDERS representa o número de processos de remetente WAL em execução simultânea.
    5. Defina o max_worker_processes como pelo menos o número de bancos de dados que você quer migrar, mais o número de max_worker_processes já usados na sua instância. Para definir esse parâmetro, execute o seguinte comando:
      ALTER SYSTEM SET max_worker_processes = NUMBER_OF_PROCESSES;
          
      em que NUMBER_OF_PROCESSES representa o número de bancos de dados que serão migrados.

    Fontes do Cloud SQL para PostgreSQL

    Para origens do Cloud SQL, configure as flags do banco de dados no console Google Cloud . É necessário reiniciar a instância depois de modificar as flags do banco de dados para que a configuração entre em vigor. Para mais informações sobre como definir flags de banco de dados no Cloud SQL, consulte Configurar flags de banco de dados na documentação do Cloud SQL.

    1. Defina a flag cloudsql.logical_decoding como on.
    2. Defina o parâmetro wal_sender_timeout como 0. Esse valor desativa o mecanismo de tempo limite usado para encerrar conexões de replicação inativas.
    3. Configure o número máximo de slots de replicação com o parâmetro max_replication_slots. Esse parâmetro precisa ser definido como pelo menos o número de bancos de dados que você está migrando por job de migração, mais algumas reservas para sincronização de tabelas.

      Por exemplo, se você estiver migrando cinco bancos de dados e houver dois jobs de migração criados para a instância de origem, o número de slots de replicação precisará ser pelo menos 5 * 2 = 10, além do número de slots de replicação já usados por você.

    4. Configure o parâmetro max_wal_senders com pelo menos o mesmo valor de max_replication_slots, mais o número de remetentes já usados na sua instância.

      Por exemplo, se o parâmetro max_replication_slots estiver definido como 10 e você já estiver usando dois remetentes, o número de processos de remetentes WAL em execução ao mesmo tempo será 10 + 2 = 12.

    5. Defina max_worker_processes como, pelo menos, o número de bancos de dados que você quer migrar, mais o número de max_worker_processes já usados na sua instância.

Criar e executar uma migração de início rápido

Ao usar migrações de início rápido, é possível criar uma nova instância do Cloud SQL e migrar seus bancos de dados para ela ou migrar bancos de dados para uma instância já existente.

Migrações de início rápido para novas instâncias

Para criar uma instância do Cloud SQL para PostgreSQL e migrar imediatamente seus bancos de dados para ela, siga estas etapas:

  1. Acessar a página Instâncias

    Acesse "Instâncias"

  2. Clique em Criar instância > De um banco de dados atual.
  3. Na janela Migrar banco de dados atual, selecione Migração rápida do PostgreSQL e clique em Continuar.

    O formulário de migração de início rápido do Database Migration Service é aberto.

  4. Na seção Configurar migração, faça o seguinte:
    1. No menu Região de destino, selecione a região da instância de destino do Cloud SQL para PostgreSQL.
    2. Na caixa Prefixo da migração, insira uma string fácil de entender que será adicionada aos nomes de todas as entidades de migração criadas para a migração de início rápido: perfis de conexão, configuração de conectividade privada, anexo de rede e sub-rede, além do job de migração.
    3. No menu Tipo de configuração, selecione uma das seguintes opções:
      1. Configuração de conectividade atual: selecione essa opção se você já tiver um anexo de rede e uma configuração de conectividade privada que use o método de interfaces do Private Service Connect. Essa opção é melhor se você já usou migrações de início rápido e quer reutilizar os mesmos recursos de rede.
      2. Nova configuração de conectividade: selecione essa opção para criar um novo anexo de rede e a sub-rede de anexo de rede na rede VPC do banco de dados de origem. A configuração de conectividade privada será criada no mesmo projeto da instância de destino.
    4. Clique em Continuar.
  5. Na seção Conectar origem, faça o seguinte:
    1. Insira um nome do host ou o endereço IP particular do banco de dados de origem. O endereço do banco de dados de origem precisa estar acessível na rede VPC de origem.
    2. Insira a porta usada para acessar o host. A porta padrão do PostgreSQL é 5432.
    3. Digite o nome de usuário e a senha da conta de migração dedicada no banco de dados de origem.
    4. No menu Tipo de criptografia, selecione uma das seguintes opções:
      • Nenhum: se o banco de dados de origem não exigir conexões criptografadas com SSL/TLS.
      • Obrigatório: se o banco de dados de origem exigir conexões criptografadas com SSL/TLS. Essa opção não exige verificação de certificado.
    5. No menu Bancos de dados a serem migrados, clique em Personalizar. Use o painel lateral para selecionar apenas os bancos de dados que você quer migrar para o Cloud SQL para PostgreSQL.
    6. Clique em Continuar.
  6. Na seção Configurar destino, faça o seguinte:
    1. No menu Tipo de instância de destino, selecione Nova instância.

      O Database Migration Service usa a configuração padrão do Cloud SQL para PostgreSQL para uma nova instância. Clique em Personalizar para ajustar os recursos da instância, como tipo de máquina, disponibilidade zonal ou configurações de proteção de dados. Para mais informações sobre a configuração de instâncias, consulte Criar instâncias.

    2. No campo Senha, insira uma senha para o usuário administrador postgresql padrão. O Database Migration Service se conecta como esse usuário para migrar seus dados.
  7. Clique em Iniciar migração.

    O Database Migration Service cria o job de migração e inicia o processo de migração. É possível monitorar o progresso da migração nos detalhes do job de migração do Database Migration Service. Para mais informações, consulte Gerenciar jobs de migração na documentação do Database Migration Service.

Migrações de início rápido para instâncias atuais

Para migrar bancos de dados para uma instância do Cloud SQL, siga estas etapas:

  1. Acessar a página Instâncias

    Acesse "Instâncias"

  2. Selecione a instância do Cloud SQL em que você quer migrar seus bancos de dados.
  3. Na página de detalhes da instância, clique em Migrar banco de dados.

    O formulário de migração de início rápido do Database Migration Service é aberto.

  4. Na seção Configurar migração, faça o seguinte:
    1. No menu Região de destino, selecione a região da instância de destino do Cloud SQL para PostgreSQL.
    2. Na caixa Prefixo da migração, insira uma string fácil de entender que será adicionada aos nomes de todas as entidades de migração criadas para a migração de início rápido: perfis de conexão, configuração de conectividade privada, anexo de rede e sub-rede, além do job de migração.
    3. No menu Tipo de configuração, selecione uma das seguintes opções:
      1. Configuração de conectividade atual: selecione essa opção se você já tiver um anexo de rede e uma configuração de conectividade particular que use interfaces do Private Service Connect na rede VPC do banco de dados de origem. Essa opção é melhor se você já usou migrações de início rápido e quer reutilizar os mesmos recursos de rede.
      2. Nova configuração de conectividade: selecione essa opção para criar um novo anexo de rede, uma sub-rede de anexo de rede e uma configuração de conectividade privada na rede VPC do banco de dados de origem.
    4. Clique em Continuar.
  5. Na seção Conectar origem, faça o seguinte:
    1. Insira um nome do host ou o endereço IP particular do banco de dados de origem. O endereço do banco de dados de origem precisa estar acessível na rede VPC de origem.
    2. Insira a porta usada para acessar o host. A porta padrão do PostgreSQL é 5432.
    3. Digite o nome de usuário e a senha da conta de migração dedicada no banco de dados de origem.
    4. No menu Tipo de criptografia, selecione uma das seguintes opções:
      • Nenhum: se o banco de dados de origem não exigir conexões criptografadas com SSL/TLS.
      • Obrigatório: se o banco de dados de origem exigir conexões criptografadas com SSL/TLS. Essa opção não exige verificação de certificado.
    5. No menu Bancos de dados a serem migrados, clique em Personalizar. Use o painel lateral para selecionar apenas os bancos de dados que você quer migrar para o Cloud SQL para PostgreSQL.
  6. Clique em Iniciar migração.

    O Database Migration Service cria o job de migração e inicia o processo de migração. É possível monitorar o progresso da migração nos detalhes do job de migração do Database Migration Service. Para mais informações, consulte Gerenciar jobs de migração na documentação do Database Migration Service.

Finalizar a migração

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

  1. Interrompa todas as operações de gravação no banco de dados de origem. Você pode mudar para o modo somente leitura para manter a funcionalidade operacional.
  2. Promova o job de migração.
  3. Opcional: Verifique se os dados de migração estão completos.

A seguir