Usar migrações de início rápido para migrar para o Cloud SQL


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 particular), 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 atual do Cloud SQL 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 você não precisa de controle preciso sobre as configurações de paralelismo de despejo de dados.
  • Migrar o banco de dados de um projeto do 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 configurar o Database Migration Service para criar o anexo de rede e a sub-rede na rede de nuvem privada virtual (VPC) de outro projeto.
  • Migração de origens que têm um endereço IP privado na sua rede de nuvem privada virtual (VPC) do Google Cloud, como bancos de dados autogerenciados no Compute Engine ou instâncias do Cloud SQL para PostgreSQL ativadas para rede privada.

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

  • O banco de dados de origem precisa ter um endereço IP privado atribuído na sua rede VPC. O Database Migration Service se conecta ao banco de dados de origem usando interfaces do Private Service Connect (anexos de rede). A conectividade de IP público não é compatível com migrações de início rápido.

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

Antes de começar

  1. Verifique se as migrações de início rápido são totalmente compatíveis com seu cenário. Consulte Limitações da migração de início rápido.
  2. 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

  3. Ative as APIs Database Migration Service, Compute Engine, Network Connectivity Center e API 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 com o Database Migration Service, peça ao administrador para conceder os papéis necessários do Identity and Access Management (IAM) para as contas envolvidas na migração nos projetos relevantes. Para mais informações sobre como conceder papéis, consulte Gerenciar 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 do Google Cloud em que o banco de dados de origem reside:

  • Para a conta de usuário que realiza a migração: Papel de administrador de rede do Compute (roles/compute.networkAdmin)
  • Para a conta de serviço do Database Migration Service do projeto de destino: Leitor de 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 acessar as permissões exatas necessárias, expanda a seção Permissões necessárias (origem):

Permissões necessárias (origem)

As permissões a seguir são necessárias para realizar migrações homogêneas de início rápido 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 do Google Cloud em que o banco de dados de destino reside:

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 ver 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 homogêneas de início rápido 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.
  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 pelo nome da conta de usuário de migração.
    • DATABASE_NAME pelo nome do banco de dados que você quer migrar.
    • SCHEMA_NAME pelo 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ê migrar. Para conceder esse nível de acesso, siga um destes procedimentos:
    • Somente para origens que não sejam o Cloud SQL para PostgreSQL: atribua o papel SUPERUSER do PostgreSQL à conta de migração.
    • Para todas as origens: adicione a conta de usuário de migração ao grupo de usuários que possui as tabelas. Execute este comando:
      -- Grant table ownership.
      GRANT TABLE_OWNER_GROUP_NAME TO MIGRATION_USER;

      Substitua:

      • TABLE_OWNER_GROUP_NAME pelo nome do grupo de usuários proprietário de cada tabela que você quer migrar.
      • MIGRATION_USER pelo 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 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. Defina as configurações de replicação usando flags de banco de dados.

    Fontes autogerenciadas

    Para salvar as mudanças nas flags de banco de dados, é necessário reiniciar o banco de dados por completo. Os exemplos a seguir usam consultas SQL para alterar os valores das flags. Se não for possível executar consultas SQL diretamente, consulte a documentação do provedor para saber como alterar 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, além de 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 de pelo menos 5 * 2 = 10, além do número de slots de replicação que você já usa.

      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 para 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.

      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 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.

    Origens do Cloud SQL para PostgreSQL

    Para origens do Cloud SQL, configure as flags de banco de dados no console do Google Cloud . É necessário reiniciar a instância depois de modificar as flags de 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. Para ativar essa flag, é necessário reiniciar a instância para que a configuração entre em vigor.
    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, além de 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 de pelo menos 5 * 2 = 10, além do número de slots de replicação que você já usa.

    4. Configure o parâmetro max_wal_senders para 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 instância.

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

Console

Para criar e executar uma migração de início rápido usando o console do Google Cloud , faça o seguinte:

  1. No console do Google Cloud , acesse a página Começar.

    Acesse "Começar"

  2. No menu Mecanismo de origem, selecione PostgreSQL.
  3. No menu Mecanismo de destino, selecione Cloud SQL para PostgreSQL.

    A seção Apresentamos a migração de início rápido do PostgreSQL é exibida.

  4. Na seção Apresentamos a migração de início rápido do PostgreSQL, clique em Iniciar migração.

    A página Migrar para o Cloud SQL para PostgreSQL é aberta.

  5. 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.
    2. Na caixa Prefixo de migração, insira uma string legível 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 particular, anexo de rede e a sub-rede dele, 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 o método de interfaces do Private Service Connect. Essa opção é mais adequada 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 do 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.
  6. 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 ser acessível pela 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:
      • Nenhuma: se o banco de dados de origem não exigir conexões criptografadas por SSL/TLS.
      • Obrigatório: se o banco de dados de origem exigir conexões criptografadas por SSL/TLS. Essa opção não requer nenhuma verificação de certificado.
    5. No menu Bancos de dados para migrar, clique em Personalizar. Use o painel lateral para selecionar apenas os bancos de dados que você quer migrar para o Cloud SQL.
    6. Clique em Continuar.
  7. Na seção Configurar destino, é possível criar uma nova instância de destino ou selecionar uma atual.

    Novas instâncias

    Se você quiser criar uma nova instância de 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 uma nova instância. Clique em Personalizar para ajustar os recursos da instância, como o tipo de máquina, a disponibilidade zonal ou as configurações de proteção de dados. Para mais informações sobre a configuração de instâncias, consulte Criar instâncias na documentação do Cloud SQL.

    2. No campo Senha, insira uma senha para o usuário administrador padrão do postgres. O Database Migration Service se conecta como esse usuário para migrar seus dados.

    Instâncias atuais

    É possível migrar bancos de dados para uma instância que já existe. Verifique se a instância de destino está ativada para o Private Service Connect e não aplica conexões mTLS. Faça o seguinte:

    1. No menu Tipo de instância de destino, selecione Instância atual.
    2. No menu ID da instância atual, selecione o identificador da instância.
  8. 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.

gcloud

Para criar e executar uma migração de início rápido usando a CLI gcloud, faça o seguinte:

  1. Configure o anexo de rede.
    Decida se você quer criar um novo anexo de rede ou reutilizar um que já existe. É preciso ter um anexo de rede na rede em que o IP privado do banco de dados de origem possa ser acessado.

    • Se você quiser criar um novo anexo de rede, execute o comando a seguir (clique para abrir todos os detalhes).

      gcloud compute network-attachments create

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

      • NETWORK_ATTACHMENT pelo nome do anexo de rede que será criado.
      • REGION pela região do anexo de rede.
      • DEST_PROJECT_ID pelo ID do projeto de destino.
      • SOURCE_PROJECT_ID pelo ID do projeto em que a rede de origem está localizada.

      Execute o seguinte comando:

      Linux, macOS ou Cloud Shell

      gcloud compute network-attachments create NETWORK_ATTACHMENT \
        --region=REGION \
        --connection-preference=ACCEPT_MANUAL \
        --producer-accept-list=DEST_PROJECT_ID \
        --subnets=default \
        --project=SOURCE_PROJECT_ID

      Windows (PowerShell)

      gcloud compute network-attachments create NETWORK_ATTACHMENT `
        --region=REGION `
        --connection-preference=ACCEPT_MANUAL `
        --producer-accept-list=DEST_PROJECT_ID `
        --subnets=default `
        --project=SOURCE_PROJECT_ID

      Windows (cmd.exe)

      gcloud compute network-attachments create NETWORK_ATTACHMENT ^
        --region=REGION ^
        --connection-preference=ACCEPT_MANUAL ^
        --producer-accept-list=DEST_PROJECT_ID ^
        --subnets=default ^
        --project=SOURCE_PROJECT_ID
    • Se você quiser reutilizar um anexo de rede, prossiga para a próxima etapa.
  2. Permita que o projeto de locatário do Database Migration Service acesse seu anexo de rede.
    O anexo de rede precisa permitir conexões do projeto de locatário do Database Migration Service. Siga as etapas abaixo:

    1. Recupere o ID do projeto de locatário do Database Migration Service realizando uma simulação de criação de conexão particular (clique para expandir):

      gcloud database-migration private-connections create --validate-only

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

      • PRIVATE_CONN pelo nome do recurso de conexão particular.
      • REGION pela região da conexão particular.
      • NETWORK_ATTACHMENT_URI pelo URI do anexo de rede.

      Execute o seguinte comando:

      Linux, macOS ou Cloud Shell

      gcloud database-migration private-connections create PRIVATE_CONN \
        --region=REGION \
        --network-attachment=NETWORK_ATTACHMENT_URI \
        --display-name=PRIVATE_CONN \
        --format="value(metadata.metadata.tenant_project_id)" \
        --validate-only

      Windows (PowerShell)

      gcloud database-migration private-connections create PRIVATE_CONN `
        --region=REGION `
        --network-attachment=NETWORK_ATTACHMENT_URI `
        --display-name=PRIVATE_CONN `
        --format="value(metadata.metadata.tenant_project_id)" `
        --validate-only

      Windows (cmd.exe)

      gcloud database-migration private-connections create PRIVATE_CONN ^
        --region=REGION ^
        --network-attachment=NETWORK_ATTACHMENT_URI ^
        --display-name=PRIVATE_CONN ^
        --format="value(metadata.metadata.tenant_project_id)" ^
        --validate-only

      Salve o ID do projeto de locatário retornado para usar com os próximos comandos.

    2. Permita que o projeto de locatário do Database Migration Service e o projeto de destino se conectem ao anexo de rede (clique para abrir):

      gcloud compute network-attachments update

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

      • NETWORK_ATTACHMENT pelo nome do anexo de rede.
      • REGION pela região.
      • DEST_PROJECT_ID pelo ID do projeto de destino.
      • DMS_TENANT_ID pelo ID do projeto de locatário do Database Migration Service recuperado.
      • SOURCE_PROJECT_ID pelo ID do projeto em que a rede de origem está localizada.

      Execute o seguinte comando:

      Linux, macOS ou Cloud Shell

      gcloud compute network-attachments update NETWORK_ATTACHMENT \
        --region=REGION \
        --producer-accept-list=DEST_PROJECT_ID,DMS_TENANT_ID \
        --project=SOURCE_PROJECT_ID

      Windows (PowerShell)

      gcloud compute network-attachments update NETWORK_ATTACHMENT `
        --region=REGION `
        --producer-accept-list=DEST_PROJECT_ID,DMS_TENANT_ID `
        --project=SOURCE_PROJECT_ID

      Windows (cmd.exe)

      gcloud compute network-attachments update NETWORK_ATTACHMENT ^
        --region=REGION ^
        --producer-accept-list=DEST_PROJECT_ID,DMS_TENANT_ID ^
        --project=SOURCE_PROJECT_ID
  3. Crie o recurso de conectividade particular do Database Migration Service.
    Execute o seguinte comando (clique para expandir):

    gcloud database-migration private-connections create

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

    • PRIVATE_CONN pelo nome do recurso de conexão particular.
    • REGION pela região da conexão particular.
    • NETWORK_ATTACHMENT_URI pelo URI do anexo de rede.

    Execute o seguinte comando:

    Linux, macOS ou Cloud Shell

    gcloud database-migration private-connections create PRIVATE_CONN \
      --region=REGION \
      --network-attachment=NETWORK_ATTACHMENT_URI \
      --display-name=PRIVATE_CONN

    Windows (PowerShell)

    gcloud database-migration private-connections create PRIVATE_CONN `
      --region=REGION `
      --network-attachment=NETWORK_ATTACHMENT_URI `
      --display-name=PRIVATE_CONN

    Windows (cmd.exe)

    gcloud database-migration private-connections create PRIVATE_CONN ^
      --region=REGION ^
      --network-attachment=NETWORK_ATTACHMENT_URI ^
      --display-name=PRIVATE_CONN
  4. Crie o perfil de conexão de origem.
    Execute o seguinte comando (clique 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:

    • SOURCE_CONN_ID pelo identificador do perfil de conexão de origem.
    • REGION pela região em que você quer salvar o perfil de conexão.
    • SOURCE_PRIVATE_IP pelo endereço IP particular do banco de dados de origem.
    • SOURCE_PORT pela porta do banco de dados de origem (o padrão é 5432).
    • SOURCE_USER pelo nome de usuário da migração no banco de dados de origem.
    • SOURCE_PASSWORD pela senha do usuário de migração no banco de dados de origem.
    • PRIVATE_CONN pelo nome do recurso de conexão particular.

    Execute o seguinte comando:

    Linux, macOS ou Cloud Shell

    gcloud database-migration connection-profiles create postgresql \
      SOURCE_CONN_ID \
      --region=REGION \
      --role=SOURCE \
      --host=SOURCE_PRIVATE_IP \
      --port=SOURCE_PORT \
      --username=SOURCE_USER \
      --password=SOURCE_PASSWORD \
      --private-connection=PRIVATE_CONN \
      --no-async

    Windows (PowerShell)

    gcloud database-migration connection-profiles create postgresql `
      SOURCE_CONN_ID `
      --region=REGION `
      --role=SOURCE `
      --host=SOURCE_PRIVATE_IP `
      --port=SOURCE_PORT `
      --username=SOURCE_USER `
      --password=SOURCE_PASSWORD `
      --private-connection=PRIVATE_CONN `
      --no-async

    Windows (cmd.exe)

    gcloud database-migration connection-profiles create postgresql ^
      SOURCE_CONN_ID ^
      --region=REGION ^
      --role=SOURCE ^
      --host=SOURCE_PRIVATE_IP ^
      --port=SOURCE_PORT ^
      --username=SOURCE_USER ^
      --password=SOURCE_PASSWORD ^
      --private-connection=PRIVATE_CONN ^
      --no-async
  5. Crie o perfil de conexão de destino.
    Selecione a guia com base na migração para uma instância nova ou atual do Cloud SQL:

    Novas instâncias

    Para usar uma nova instância de destino na migração de início rápido, primeiro crie a instância com a CLI do Google Cloud do Cloud SQL e, em seguida, crie o perfil de conexão de destino. Siga estas etapas:

    1. Crie uma instância com a CLI do Google Cloud do Cloud SQL. Use a flag --enable-private-service-connect para ativar a instância de destino para o Private Service Connect. As migrações de início rápido são compatíveis apenas com instâncias que têm o Private Service Connect ativado.
    2. Crie o perfil de conexão de destino para sua nova instância. Abra a seção a seguir para ver todos os detalhes do comando.

      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]
      

    Instâncias atuais

    Para migrar para uma instância de destino, crie o perfil de conexão apontando para a instância pré-criada. Execute o seguinte comando (clique 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]
    
  6. Crie o job de migração.
    Execute o seguinte comando (clique 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 pelo identificador do job de migração.
    • REGION pela região em que você quer salvar o job de migração.
    • SOURCE_CONN_ID pelo identificador do perfil de conexão de origem.
    • DEST_CONN_ID pelo identificador do perfil de conexão de destino.
    • DATABASES_LIST por uma lista separada por vírgulas de bancos de dados que você quer migrar.

    Execute o seguinte comando:

    Linux, macOS ou Cloud Shell

    gcloud database-migration migration-jobs create \
      MIGRATION_JOB_ID \
      --region=REGION \
      --type=CONTINUOUS \
      --source=SOURCE_CONN_ID \
      --destination=DEST_CONN_ID \
      --use-postgres-native \
      --postgres-max-additional-subscriptions=10 \
      --databases-filter=DATABASES_LIST \
      --no-async

    Windows (PowerShell)

    gcloud database-migration migration-jobs create `
      MIGRATION_JOB_ID `
      --region=REGION `
      --type=CONTINUOUS `
      --source=SOURCE_CONN_ID `
      --destination=DEST_CONN_ID `
      --use-postgres-native `
      --postgres-max-additional-subscriptions=10 `
      --databases-filter=DATABASES_LIST `
      --no-async

    Windows (cmd.exe)

    gcloud database-migration migration-jobs create ^
      MIGRATION_JOB_ID ^
      --region=REGION ^
      --type=CONTINUOUS ^
      --source=SOURCE_CONN_ID ^
      --destination=DEST_CONN_ID ^
      --use-postgres-native ^
      --postgres-max-additional-subscriptions=10 ^
      --databases-filter=DATABASES_LIST ^
      --no-async

    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]
    
  7. Execute o job de migração.
    Inicie o job de migração (clique para expandir):

    gcloud database-migration migration-jobs start

    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 pelo identificador do job de migração.

      Se você não souber o identificador, use o comando gcloud database-migration migration-jobs list para listar todos os jobs de migração em uma determinada região e conferir os identificadores deles.

    • REGION pelo identificador da região em que o perfil de conexão está salvo.

    Execute o seguinte comando:

    Linux, macOS ou Cloud Shell

    gcloud database-migration migration-jobs \
    start MIGRATION_JOB_ID \
      --region=REGION

    Windows (PowerShell)

    gcloud database-migration migration-jobs `
    start MIGRATION_JOB_ID `
      --region=REGION

    Windows (cmd.exe)

    gcloud database-migration migration-jobs ^
    start MIGRATION_JOB_ID ^
      --region=REGION

    Resultado

    A ação é realizada de maneira assíncrona. Assim, esse comando retorna uma entidade Operation que representa uma operação de longa duração:

    done: false
    metadata:
      '@type': type.googleapis.com/google.cloud.clouddms.v1.OperationMetadata
      apiVersion: v1
      createTime: '2024-02-20T12:20:24.493106418Z'
      requestedCancellation: false
      target: MIGRATION_JOB_ID
      verb: start
    name: OPERATION_ID
    

    Para ver se a operação foi bem-sucedida, consulte o objeto de operação retornado ou verifique o status do job de migração:

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. É possível alternar para o modo somente leitura para manter a funcionalidade operacional.
  2. Promova o job de migração. Para migrações de início rápido, a instância de destino permanece gravável durante o processo de migração. A promoção do job de migração apenas encerra a replicação e não tem impacto na instância de destino.
  3. Opcional: verifique se os dados de migração estão completos.

A seguir