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 cluster de avaliação sem custo financeiro do 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 no 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 está a usar o AlloyDB pela primeira vez, consulte a vista geral do AlloyDB.

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

As seguintes funcionalidades não são compatíveis:

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

Antes de começar

  1. Inicie sessão na sua Google Cloud conta. Se está a usar o Google Cloudpela primeira vez, crie uma conta para avaliar o desempenho dos nossos produtos em cenários reais. Os novos clientes também recebem 300 USD em créditos sem custo financeiro para executar, testar e implementar 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 APIs, precisa da função do IAM de administrador da utilização de serviços (roles/serviceusage.serviceUsageAdmin), que contém a autorização serviceusage.services.enable. Saiba como atribuir funções.

    Ativar as APIs

  7. Certifique-se de que tem o seguinte:

Funções necessárias

Para receber as autorizações de que precisa 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 do 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 padrão do AlloyDB restaura a cópia de segurança para a mesma versão do PostgreSQL no AlloyDB. Por exemplo, uma cópia de segurança do Cloud SQL do PostgreSQL 14 é restaurada para um cluster 14 padrão do PostgreSQL. Tenha 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ó é compatível com a configuração dos itens compatíveis no AlloyDB padrão .

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

Consola

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

    Aceder a Clusters

  2. Clique em Migrar dados e, de seguida, selecione Copiar a partir da cópia de segurança do Cloud SQL.
  3. 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 ativar novamente.
  4. Na página Selecionar o tipo de cluster, selecione Cluster aprovisionado.
  5. Clique em Selecionar tipo de cluster.
  6. Selecione a instância do Cloud SQL a partir da qual quer copiar uma cópia de segurança e, de seguida, clique em Selecionar instância. Pode filtrar instâncias do Cloud SQL.
    Só são apresentadas as versões de bases 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.
  7. 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.
  8. Na página Crie o seu cluster aprovisionado, introduza as suas informações de rede. O ID do cluster é preenchido por predefinição, mas também pode personalizar o cluster aprovisionado.
  9. Clique em Criar cluster.

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 para PostgreSQL que selecionou.

Quando copia uma cópia de segurança do Cloud SQL para PostgreSQL para um cluster do AlloyDB, as sinalizações da base de dados são migradas se estiverem no Cloud SQL para PostgreSQL e no AlloyDB. As autorizações ao nível do recurso não são migradas automaticamente. Após a conclusão da cópia, tem de configurar manualmente as autorizações e as sinalizações da base de dados que não foram migradas devido a uma incompatibilidade.

Pode verificar que sinalizações da base de dados no Cloud SQL para PostgreSQL são compatíveis com o AlloyDB na página Crie o seu cluster aprovisionado.

gcloud

Para usar a CLI do Google Cloud, 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 o seguinte:

    • CLUSTER_ID: ID do cluster do AlloyDB.
    • CLOUD_SQL_BACKUP_ID: ID da cópia de segurança do Cloud SQL a partir da qual migrar. Tem de ser o ID da cópia de segurança.
    • 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: ID do 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 uma das seguintes: POSTGRES_14, POSTGRES_15, POSTGRES_16 ou POSTGRES_17. A versão da base de dados tem de ser a mesma que a versão da cópia de segurança do Cloud SQL.
    • SUBSCRIPTION_TYPE: tipo de subscrição do cluster. Tem de ser uma das seguintes: 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 ver 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 backupsRuns.listmétodo:
          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 o Cloud Shell, que inicia sessão automaticamente 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 the following command:

            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 na gcloud CLI com a sua conta de utilizador executando gcloud init ou gcloud auth login, ou usando o Cloud Shell, que inicia sessão automaticamente na 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 a seguinte instrução:

             $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 restoreFromCloudSQL método:

            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/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 o seu pedido, use uma destas opções:

    curl (Linux, macOS ou Cloud Shell)

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

            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 o Cloud Shell, que inicia sessão automaticamente 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 a seguinte instrução:

            $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 na localização e no projeto especificados, com um volume restaurado a partir da cópia de segurança indicada 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 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 na gcloud CLI com a sua conta de utilizador executando gcloud init ou gcloud auth login, ou usando o Cloud Shell, que inicia sessão automaticamente na 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 a seguinte instrução:

            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 na gcloud CLI com a sua conta de utilizador executando gcloud init ou gcloud auth login, ou usando o Cloud Shell, que inicia sessão automaticamente na 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 a seguinte instrução:

             $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 de Operation criada recentemente.

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

O que se segue?