Migrar do Cloud SQL para PostgreSQL para o AlloyDB para PostgreSQL

Esta página descreve como migrar uma instância do Cloud SQL para PostgreSQL copiando um backup do Cloud SQL para um cluster de teste sem custos financeiros do AlloyDB para PostgreSQL. Copiar um backup do Cloud SQL para um cluster do AlloyDB permite carregar dados rapidamente no Cloud SQL para PostgreSQL, o que permite avaliar ou migrar para o AlloyDB.

Esta página pressupõe que você já conhece o Cloud SQL. Se você não conhece o AlloyDB, consulte a visão geral do AlloyDB.

Para saber como migrar dados do Cloud SQL para o AlloyDB usando a replicação contínua de dados, consulte Database Migration Service para PostgreSQL para AlloyDB.

Não há compatibilidade com os seguintes recursos:

  • Restaurações entre projetos e entre regiões
  • Instâncias com chaves de criptografia gerenciadas pelo cliente (CMEK)
  • Instâncias com a autenticação de grupos do Identity and Access Management (IAM)

Antes de começar

  1. Faça login na sua Google Cloud conta do. Se você não conhece o Google Cloud, crie uma conta para avaliar o desempenho dos nossos produtos em situações reais. Clientes novos também recebem US $300 em créditos para executar, testar e implantar cargas de trabalho.
  2. 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

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

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

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

  6. Ative as APIs AlloyDB, Compute Engine e Service Networking.

    Funções necessárias para ativar APIs

    Para ativar as APIs, é necessário ter o papel do IAM de administrador de uso do serviço (roles/serviceusage.serviceUsageAdmin), que contém a permissão serviceusage.services.enable. Saiba como conceder papéis.

    Ativar as APIs

  7. Verifique se você tem o seguinte:

Funções exigidas

Para receber as permissões necessárias e copiar um backup do Cloud SQL para PostgreSQL em um cluster do AlloyDB, conceda a si mesmo os seguintes papéis do IAM no projeto:

Copiar um backup do Cloud SQL para um cluster do AlloyDB

Copiar um backup do Cloud SQL para um cluster padrão do AlloyDB o restaura para a mesma versão do PostgreSQL no AlloyDB. Por exemplo, um backup do PostgreSQL 14 do Cloud SQL é restaurado para um cluster padrão do PostgreSQL 14 . Lembre-se de que as versões de extensão e as versões secundárias do PostgreSQL podem ser diferentes.

A cópia de um backup do Cloud SQL só é compatível com a configuração dos itens aceitos no cluster padrão do AlloyDB .

Para copiar um backup do Cloud SQL para um cluster padrão do AlloyDB, siga estas etapas:

Console

  1. Noconsole, acesse a página Clusters . Google Cloud

    Acessar Clusters

  2. Clique em Migrar dados e selecione Copiar do backup do Cloud SQL.
  3. Na página Copiar do backup do Cloud SQL, ative as APIs necessárias. Se você já as ativou, não é necessário reativá-las.
  4. Na página Selecionar o tipo de cluster, selecione Cluster provisionado.
  5. Clique em Selecionar tipo de cluster.
  6. Selecione a instância do Cloud SQL de que você quer copiar um backup de e clique em Selecionar instância. É possível filtrar as instâncias do Cloud SQL.
    Somente as versões de banco de dados compatíveis são exibidas. As réplicas não têm backups e não aparecem na lista de instâncias disponíveis.
  7. Selecione o backup que você quer importar e clique em Select backup. Esta página mostra os mil backups mais recentes.
  8. Na página Criar cluster provisionado, insira as informações de rede. O ID do cluster é preenchido por padrão, mas também é possível personalizar o cluster provisionado.
  9. Clique em Criar cluster.

Depois que a operação é concluída, uma instância principal é criada automaticamente. Um novo cluster do AlloyDB vai aparecer com os dados copiados do backup do Cloud SQL para PostgreSQL que você selecionou.

Quando você copia um backup do Cloud SQL para PostgreSQL para um cluster do AlloyDB, as flags de banco de dados são migradas se estiverem no Cloud SQL para PostgreSQL e no AlloyDB. As permissões de nível de recurso não são automaticamente migradas. Depois que a cópia é concluída, é necessário configurar manualmente as permissões e as flags de banco de dados que não foram migradas devido a uma incompatibilidade.

É possível verificar quais flags de banco de dados no Cloud SQL para PostgreSQL são compatíveis com o AlloyDB na página Criar cluster provisionado.

gcloud

Para usar a CLI gcloud, você pode instalar e inicializar a CLI gcloud ou usar o Cloud Shell.

  1. Execute o comando gcloud beta alloydb clusters migrate-cloud-sql:
          gcloud beta alloydb clusters migrate-cloud-sql CLUSTER_ID \
            --cloud-sql-backup-id=CLOUD_SQL_BACKUP_ID \
            --cloud-sql-instance-id=CLOUD_SQL_INSTANCE_ID \
            --cloud-sql-project-id=CLOUD_SQL_PROJECT_ID \
            --password=PASSWORD \
            --region=REGION \
            --database-version=DATABASE_VERSION \
            --subscription-type=STANDARD
          

    Substitua:

    • CLUSTER_ID: ID do cluster do Cloud SQL para PostgreSQL.
    • CLOUD_SQL_BACKUP_ID: ID do backup do Cloud SQL de que você quer migrar. Esse precisa ser o ID do backup.
    • CLOUD_SQL_INSTANCE_ID: ID da instância do Cloud SQL de que você quer migrar. Esse precisa ser o ID da instância.
    • CLOUD_SQL_PROJECT_ID: ID do projeto do Cloud SQL de que você quer migrar. Esse precisa ser o ID do projeto.
    • PASSWORD: senha inicial do usuário do PostgreSQL a ser configurada durante a criação do cluster.
    • REGION: local, por exemplo, asia-east1 ou us-east1. Consulte a lista completa de regiões em Locais regionais.
    • DATABASE_VERSION: versão do banco de dados do cluster. Esse precisa ser um destes: POSTGRES_14, POSTGRES_15, POSTGRES_16 ou POSTGRES_17. A versão do banco de dados precisa ser a mesma do backup do Cloud SQL.
    • SUBSCRIPTION_TYPE: tipo de assinatura do cluster. Esse precisa ser um destes: STANDARD ou TRIAL.
  2. Execute o comando gcloud beta alloydb operations describe para confirmar o status da operação de backup:
          gcloud beta alloydb operations describe OPERATION_ID \
            --region=REGION_ID \
            --project=PROJECT_ID
          

    Substitua:

    • OPERATION_ID: o nome da operação do Cloud SQL para PostgreSQL.
    • REGION_ID: a região em que o cluster do Cloud SQL para PostgreSQL está implantado.
    • PROJECT_ID: o ID do projeto.
  3. Use o comando gcloud alloydb instances create para criar uma instância principal.

API REST

  1. Para receber uma lista de backups da instância de que você quer restaurar o backup, chame o backupsRuns.list método:
          GET "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/backupRuns"
          

    Substitua:

    • PROJECT_ID: o ID do projeto.
    • INSTANCE_ID: o ID da instância

    Solicitar corpo JSON:

          {
            "kind": string,
            "items": [
              {
                object (BackupRun)
              }
            ],
            "nextPageToken": string
          }
          

    Para enviar a solicitação, use uma destas opções:

    curl (Linux, macOS ou Cloud Shell)

    O comando a seguir pressupõe que você fez login no gcloud CLI com sua conta de usuário executando gcloud init ou gcloud auth login, ou usando o Cloud Shell, que faz login automaticamente no gcloud CLI.

    É possível verificar a conta ativa executando gcloud auth list.

    Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando abaixo:

            curl -X GET \
                   -H "Authorization: Bearer $(gcloud auth print-access-token)" \
                   -H "Content-Type: application/json; charset=utf-8" \
                   "https://sqladmin.googleapis.com//sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/backupRuns"
            

    PowerShell (Windows)

    O comando a seguir pressupõe que você fez login na gcloud CLI com sua conta de usuário executando gcloud init ou gcloud auth login, ou usando o Cloud Shell, que faz login automaticamente na gcloud CLI.

    É possível verificar a conta ativa executando gcloud auth list.

    Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando abaixo:

             $cred = gcloud auth print-access-token
             $headers = @{ "Authorization" = "Bearer $cred" }
             Invoke-WebRequest \
              -Method GET \
              -Headers $headers \
              -ContentType: "application/json; charset=utf-8" \
              -Uri
              "https://sqladmin.googleapis.com//sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/backupRuns"|Select-Object -Expand Content
          

    Você vai receber uma resposta JSON semelhante a esta:

    Resposta

    Se a solicitação for bem-sucedida, o corpo da resposta vai conter uma lista de BackupRun.

    A resposta da API retorna uma lista de backups da instância como uma lista de matrizes, incluindo "id": string,.

  2. Chame o restoreFromCloudSQL método:

            POST https://alloydb.googleapis.com/v1beta/projects/PROJECT_ID/locations/REGION/clusters:restoreFromCloudSQL
          

    Substitua:

    • PROJECT_ID: o ID do projeto.
    • REGION: a região em que o cluster do AlloyDB está implantado.

    Solicitar corpo JSON:

          {
            "clusterId": string,
            "cluster": {
              "databaseVersion": "POSTGRES_14/POSTGRES_15/POSTGRES_16/POSTGRES_17",
              "subscriptionType": "STANDARD"
            },
            // Union field source can be only one of the following:
            "cloudsqlBackupRunSource": {
              object (CloudSQLBackupRunSource)
            }
            // End of list of possible types for union field source.
          }
          

    Para enviar a solicitação, use uma destas opções:

    curl (Linux, macOS ou Cloud Shell)

    O comando a seguir pressupõe que você fez login no gcloud CLI com sua conta de usuário executando gcloud init ou gcloud auth login, ou usando o Cloud Shell, que faz login automaticamente no gcloud CLI.

    É possível verificar a conta ativa executando gcloud auth list.

    Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando abaixo:

            curl -X POST \
                   -H "Authorization: Bearer $(gcloud auth print-access-token)" \
                   -H "Content-Type: application/json; charset=utf-8" \
                   -d @request.json \
                   "https://alloydb.googleapis.com/v1beta/projects/PROJECT_ID/locations/REGION/clusters:restoreFromCloudSQL"
          

    PowerShell (Windows)

    O comando a seguir pressupõe que você fez login no gcloud CLI com sua conta de usuário executando gcloud init ou gcloudauth login, ou usando o Cloud Shell, que faz login automaticamente no gcloud CLI.

    É possível verificar a conta ativa executando gcloud auth list.

    Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando abaixo:

            $cred = gcloud auth print-access-token
            $headers = @{ "Authorization" = "Bearer $cred" }
            Invoke-WebRequest \
              -Method POST \
              -Headers $headers \
              -ContentType: "application/json; charset=utf-8" \
              -InFile request.json \
              -Uri "https://alloydb.googleapis.com/v1beta/projects/PROJECT_ID/locations/REGION/clusters:restoreFromCloudSQL"|Select-Object -Expand Content
          

    Você vai receber uma resposta JSON semelhante a esta:

    Resposta

    Se a solicitação for bem-sucedida, o corpo da resposta vai conter uma instância de Operation.

    Um novo cluster é criado no projeto e local especificados, com um volume restaurado do backup apontado na mensagem CloudSQLBackupRunSource.

  3. Quando o cluster estiver no estado READY, crie a instância principal chamando o método projects.locationsinstances.create
          POST https://alloydb.googleapis.com/v1beta/{parent=projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID}/instances
          

    Substitua:

    • PROJECT_ID: o ID do projeto.
    • REGION: a região em que o cluster do AlloyDB está implantado.
    • CLUSTER_ID: o ID do cluster.

    Solicitar corpo JSON:

            {
              "instanceId": "string",
              "instance": {
                "object": "Instance"
              }
            }
          

    O corpo da solicitação contém uma instância de Instance.

    Para enviar a solicitação, use uma destas opções:

    curl (Linux, macOS ou Cloud Shell)

    O comando a seguir pressupõe que você fez login no gcloud CLI com sua conta de usuário executando gcloud init ou gcloud auth login, ou usando o Cloud Shell, que faz login automaticamente no gcloud CLI.

    É possível verificar a conta ativa executando gcloud auth list.

    Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando abaixo:

            curl -X POST \
                 -H "Authorization: Bearer $(gcloud auth print-access-token)" \
                 -H "Content-Type: application/json; charset=utf-8" \
                 -d @request.json \
                 "https://alloydb.googleapis.com/v1beta/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID/instances"
          

    PowerShell (Windows)

    O comando a seguir pressupõe que você fez login no gcloud CLI com sua conta de usuário executando gcloud init ou gcloud auth login, ou usando o Cloud Shell, que faz login automaticamente no gcloud CLI.

    É possível verificar a conta ativa executando gcloud auth list.

    Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando abaixo:

             $cred = gcloud auth print-access-token
             $headers = @{ "Authorization" = "Bearer $cred" }
             Invoke-WebRequest \
               -Method POST \
               -Headers $headers \
               -ContentType: "application/json; charset=utf-8" \
               -InFile request.json \
               -Uri "https://alloydb.googleapis.com/v1beta/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID/instances"|Select-Object -Expand Content
          

    Você vai receber uma resposta JSON semelhante a esta:

    Resposta

    Se a solicitação for bem-sucedida, o corpo da resposta vai conter uma instância recém-criada de Operation.

  4. Depois que a instância for atualizada para o estado READY, conecte-se a ela e acesse os dados restaurados do snapshot do Cloud SQL.

A seguir