Migre 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 uma cópia de segurança do Cloud SQL para um de avaliação gratuitado AlloyDB para PostgreSQL. A cópia de uma cópia de segurança do Cloud SQL para um cluster do AlloyDB permite-lhe carregar rapidamente dados para o AlloyDB para PostgreSQL, o que lhe permite avaliar ou migrar para o AlloyDB.

Esta página pressupõe que tem conhecimentos do Cloud SQL. Se não tem experiência com o AlloyDB, consulte a vista geral do AlloyDB.

Para saber como migrar os seus dados do Cloud SQL para o AlloyDB através da replicação contínua de dados, consulte o artigo Database Migration Service para PostgreSQL para AlloyDB.

As seguintes funcionalidades não são suportadas:

  • Instâncias da edição Cloud SQL Enterprise Plus
  • Restauros entre projetos e regiões
  • Instâncias com chaves de encriptação geridas pelo cliente (CMEK)
  • Instâncias com autenticação de grupo da gestão de identidade e de acesso (IAM)

Antes de começar

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  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 (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 (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. Enable the AlloyDB, Compute Engine, and Service Networking APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  7. Certifique-se de que tem o seguinte:

    Funções necessárias

    Para receber as autorizações necessárias para copiar uma cópia de segurança do Cloud SQL para PostgreSQL para um cluster do AlloyDB, atribua a si mesmo as seguintes funções da IAM no seu projeto:

    Copie uma cópia de segurança do Cloud SQL para um cluster do AlloyDB

    A cópia de uma cópia de segurança do Cloud SQL para um cluster deTenha em atenção que as versões das extensões e as versões secundárias do PostgreSQL podem ser diferentes.

    A cópia de uma cópia de segurança do Cloud SQL só suporta a configuração dos itens suportados no cluster de avaliação gratuita do AlloyDB.

    Para copiar uma cópia de segurança do Cloud SQL para um cluster de avaliação free do AlloyDB, siga estes passos:

    Consola

    1. Na Google Cloud consola, aceda à página Clusters.

      Aceda a Clusters

    2. Se ainda não tiver aprovisionado um cluster, clique em Iniciar uma avaliação gratuita. Se tiver um cluster existente, clique em Migrar dados.
    3. Clique em Copiar a partir da cópia de segurança do Cloud SQL.
    4. Na página Copiar a partir da cópia de segurança do Cloud SQL, ative as APIs necessárias. Se já ativou as APIs, não precisa de as reativar.
    5. Na página Selecionar tipo de cluster, clique em Cluster de avaliação gratuita. Se não for elegível para um cluster de avaliação gratuita, este campo é apresentado a cinzento.
    6. Clique em Selecionar tipo de cluster.
    7. Selecione a instância do Cloud SQL a partir da qual quer fazer uma cópia e, de seguida, clique em Selecionar instância. Pode filtrar instâncias do Cloud SQL.
      Apenas são apresentadas as versões de base de dados compatíveis. As réplicas não têm cópias de segurança e não são apresentadas na lista de instâncias disponíveis.
    8. Selecione a cópia de segurança a partir da qual quer importar e, de seguida, clique em Selecionar cópia de segurança. Esta página apresenta as 1000 cópias de segurança mais recentes.
    9. Na página Crie o seu cluster gratuito, introduza o ID do cluster e as informações de rede.
    10. Clique em Iniciar avaliação gratuita.

    Após a conclusão da operação, é criada automaticamente uma instância principal. É apresentado um novo cluster do AlloyDB com os dados copiados da cópia de segurança do Cloud SQL for PostgreSQL que selecionou.

    Quando copia uma cópia de segurança do Cloud SQL para PostgreSQL para um cluster do AlloyDB, os flags da base de dados e as autorizações ao nível do recurso não são migrados automaticamente. Após a conclusão da cópia, tem de configurar estas flags e autorizações manualmente.

    Pode verificar que flags de base de dados no Cloud SQL para PostgreSQL são suportadas no AlloyDB na página Crie o seu cluster gratuito.

    gcloud

    Para usar a CLI do Google Cloud, pode instalar e inicializar a CLI do Google Cloud ou usar a Cloud Shell.

    1. Execute o comando gcloud beta alloydb clusters migrate-cloud-sql:
            gcloud beta alloydb clusters migrate-cloud-sql CLUSTER_ID
      --cluster-id=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=TRIAL

      Substitua o seguinte:

      • CLUSTER: ID do cluster do AlloyDB.
      • CLOUD_SQL_BACKUP_ID: ID da cópia de segurança do CloudSQL a partir da qual migrar. Tem de ser o ID alternativo.
      • CLOUD_SQL_INSTANCE_ID: ID da instância do Cloud SQL a partir da qual migrar. Tem de ser o ID da instância.
      • CLOUD_SQL_PROJECT_ID: projeto do Cloud SQL a partir do qual migrar. Tem de ser o ID do projeto.
      • PASSWORD: palavra-passe inicial do utilizador do PostgreSQL a configurar durante a criação do cluster.
      • REGION: localização, por exemplo, asia-east1 ou us-east1. Consulte a lista completa de regiões em localizações regionais.
      • DATABASE_VERSION: versão da base de dados do cluster. Tem de ser um dos seguintes: POSTGRES_14, POSTGRES_15 ou POSTGRES_16. A versão da base de dados tem de ser igual à versão da cópia de segurança do Cloud SQL.
      • SUBSCRIPTION_TYPE: tipo de subscrição do cluster. Tem de ser um dos seguintes valores: STANDARD ou TRIAL.
    2. Execute o comando gcloud beta alloydb operations describe para confirmar o estado da operação de cópia de segurança:
            gcloud beta alloydb operations describe OPERATION_ID \
              --region=REGION_ID \
              --project=PROJECT_ID
            

      Substitua o seguinte:

      • OPERATION_ID: o nome da operação do AlloyDB.
      • REGION_ID: a região na qual o cluster do AlloyDB está implementado.
      • PROJECT_ID: o ID do projeto.
    3. Use o comando gcloud alloydb instances create para criar uma instância principal.

    API REST

    1. Para obter uma lista de cópias de segurança da instância a partir da qual quer restaurar a sua cópia de segurança, chame o método backupsRuns.list:
            GET "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/backupRuns"
            

      Substitua o seguinte:

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

      Corpo JSON do pedido:

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

      Para enviar o seu pedido, use uma destas opções:

      curl (Linux, macOS ou Cloud Shell)

      O comando seguinte pressupõe que iniciou sessão no Google Cloud CLI com a sua conta de utilizador executando gcloud init ou gcloud auth login, ou usando Cloud Shell, que inicia automaticamente sessão no gcloud CLI.

      Pode verificar a conta ativa executando o comando gcloud auth list.

      Guarde o corpo do pedido num ficheiro com o nome request.json e execute o seguinte comando:

              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 seguinte pressupõe que iniciou sessão no gcloud CLI com a sua conta de utilizador executando gcloud init ou gcloud auth login, ou usando Cloud Shell, que inicia automaticamente sessão no gcloud CLI.

      Pode verificar a conta ativa executando gcloud auth list.

      Guarde o corpo do pedido num ficheiro com o nome request.json e execute o seguinte comando:

               $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
            

      Recebe uma resposta JSON semelhante à seguinte:

      Resposta

      Se for bem-sucedido, o corpo da resposta contém uma lista de BackupRun.

      A resposta da API devolve uma lista de cópias de segurança da instância como uma lista de matrizes, incluindo "id": string,.

    2. Chame o método restoreFromCloudSQL:

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

      Substitua o seguinte:

      • PROJECT_ID: o ID do projeto.
      • REGION: a região na qual o cluster do AlloyDB está implementado.

      Corpo JSON do pedido:

            {
              "clusterId": string,
              "cluster": {
                "databaseVersion": "POSTGRES_14/POSTGRES_15/POSTGRES_16",
                "subscriptionType": "TRIAL"
              },
              // 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 o seu pedido, use uma destas opções:

      curl (Linux, macOS ou Cloud Shell)

      O comando seguinte pressupõe que iniciou sessão no gcloud CLI com a sua conta de utilizador executando gcloud init ou gcloud auth login, ou usando Cloud Shell, que inicia automaticamente sessão no gcloud CLI.

      Pode verificar a conta ativa executando gcloud auth list.

      Guarde o corpo do pedido num ficheiro com o nome request.json e execute o seguinte comando:

              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 seguinte pressupõe que iniciou sessão no gcloud CLI com a sua conta de utilizador executando gcloud init ou gcloudauth login, ou usando Cloud Shell, que inicia automaticamente sessão no gcloud CLI.

      Pode verificar a conta ativa executando gcloud auth list.

      Guarde o corpo do pedido num ficheiro com o nome request.json e execute o seguinte comando:

              $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
            

      Recebe uma resposta JSON semelhante à seguinte:

      Resposta

      Se for bem-sucedido, o corpo da resposta contém uma instância de Operation.

      É criado um novo cluster no projeto e na localização especificados, com um volume restaurado a partir da cópia de segurança indicada na mensagem CloudSQLBackupRunSource.

    3. Quando o cluster está 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 o seguinte:

      • PROJECT_ID: o ID do projeto.
      • REGION: a região na qual o cluster do AlloyDB está implementado.
      • CLUSTER_ID: o ID do cluster.

      Corpo JSON do pedido:

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

      O corpo do pedido contém uma instância de Instance.

      Para enviar o seu pedido, use uma destas opções:

      curl (Linux, macOS ou Cloud Shell)

      O comando seguinte pressupõe que iniciou sessão no gcloud CLI com a sua conta de utilizador executando gcloud init ou gcloud auth login, ou usando Cloud Shell, que inicia automaticamente sessão no gcloud CLI.

      Pode verificar a conta ativa executando gcloud auth list.

      Guarde o corpo do pedido num ficheiro com o nome request.json e execute o seguinte comando:

              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 seguinte pressupõe que iniciou sessão no gcloud CLI com a sua conta de utilizador executando gcloud init ou gcloud auth login, ou usando Cloud Shell, que inicia automaticamente sessão no gcloud CLI.

      Pode verificar a conta ativa executando gcloud auth list.

      Guarde o corpo do pedido num ficheiro com o nome request.json e execute o seguinte comando:

               $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
            

      Recebe uma resposta JSON semelhante à seguinte:

      Resposta

      Se for bem-sucedido, o corpo da resposta contém uma instância recém-criada de Operation.

    4. Depois de a instância ser atualizada para o estado READY, ligue-se à instância e aceda aos dados restaurados a partir da cópia instantânea do Cloud SQL.

    O que se segue?