Esegui la migrazione da Cloud SQL per PostgreSQL ad AlloyDB per PostgreSQL

Questa pagina descrive come eseguire la migrazione di un'istanza Cloud SQL per PostgreSQL copiando un backup di Cloud SQL in un cluster in prova senza costi di AlloyDB per PostgreSQL. La copia di un backup di Cloud SQL in un cluster AlloyDB consente di caricare rapidamente i dati in Cloud SQL per PostgreSQL, il che ti permette di valutare o eseguire la migrazione ad AlloyDB.

Questa pagina presuppone la conoscenza di Cloud SQL. Se non conosci AlloyDB, consulta la panoramica di AlloyDB.

Per scoprire come eseguire la migrazione dei dati da Cloud SQL ad AlloyDB utilizzando la replica continua dei dati, consulta Database Migration Service per PostgreSQL ad AlloyDB.

Le seguenti opzioni non sono supportate:

  • Ripristini tra progetti e tra regioni
  • Istanze con chiavi di crittografia gestite dal cliente (CMEK)
  • Istanze con autenticazione del gruppo Identity and Access Management (IAM)

Prima di iniziare

  1. Accedi al tuo Google Cloud account. Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti senza costi per l'esecuzione, il test e il deployment dei carichi di lavoro.
  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. Abilita le API AlloyDB, Compute Engine e Service Networking.

    Ruoli richiesti per abilitare le API

    Per abilitare le API, devi disporre del ruolo IAM Amministratore utilizzo servizi (roles/serviceusage.serviceUsageAdmin), che contiene l'autorizzazione serviceusage.services.enable. Scopri come concedere i ruoli.

    Abilita le API

  7. Assicurati di avere quanto segue:

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per copiare un backup di Cloud SQL per PostgreSQL in un cluster AlloyDB, concediti i seguenti ruoli IAM nel progetto:

Copiare un backup di Cloud SQL in un cluster AlloyDB

La copia di un backup di Cloud SQL in un cluster AlloyDB in prova senza costi consente di ripristinare il backup nella stessa versione di PostgreSQL su AlloyDB, ad esempio un backup di Cloud SQL di PostgreSQL 14 viene ripristinato in un cluster PostgreSQL 14 in prova senza costi. Tieni presente che le versioni di estensione e le versioni minori di PostgreSQL potrebbero essere diverse.

La copia di un backup da Cloud SQL supporta solo la configurazione di quegli elementi supportati nel cluster standard di AlloyDB .

Per copiare un backup di Cloud SQL in un cluster AlloyDB in prova senza costi:

Console

  1. Nella Google Cloud console, vai alla pagina Cluster.

    Vai a Cluster

  2. Fai clic su Migra dati e poi seleziona Copia dal backup di Cloud SQL.
  3. Nella pagina Copia dal backup di Cloud SQL, abilita le API richieste. Se hai già abilitato le API, non devi riabilitarle.
  4. Nella pagina Seleziona il tipo di cluster, seleziona Cluster di cui è stato eseguito il provisioning.
  5. Fai clic su Seleziona il tipo di cluster.
  6. Seleziona l'istanza Cloud SQL da cui vuoi copiare un backup da e poi fai clic su Seleziona istanza. Puoi filtrare le istanze Cloud SQL.
    Vengono visualizzate solo le versioni del database compatibili. Le repliche non hanno backup e non vengono visualizzate nell'elenco delle istanze disponibili.
  7. Seleziona il backup da cui vuoi eseguire l'importazione e poi fai clic su Select backup. Questa pagina mostra gli ultimi 1000 backup.
  8. Nella pagina Crea il tuo cluster di cui è stato eseguito il provisioning, inserisci le informazioni sulla rete. L'ID cluster viene compilato per impostazione predefinita, ma puoi anche personalizzare il cluster di cui è stato eseguito il provisioning.
  9. Fai clic su Crea cluster.

Al termine dell'operazione, viene creata automaticamente un'istanza principale. Viene visualizzato un nuovo cluster AlloyDB con i dati copiati dal backup di Cloud SQL per PostgreSQL selezionato.

Quando copi un backup di Cloud SQL per PostgreSQL in un cluster AlloyDB, i flag del database vengono migrati se sono presenti sia in Cloud SQL per PostgreSQL sia in AlloyDB. Le autorizzazioni a livello di risorsa non vengono migrate automaticamente migrate. Al termine della copia, devi configurare manualmente le autorizzazioni e i flag del database che non sono stati migrati a causa di una mancata corrispondenza.

Puoi controllare quali flag del database in Cloud SQL per PostgreSQL sono supportati in AlloyDB nella pagina Crea il tuo cluster di cui è stato eseguito il provisioning.

gcloud

Per utilizzare gcloud CLI, puoi installarlo e inizializzarlo o utilizzare Cloud Shell.

  1. Esegui il 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
          

    Sostituisci quanto segue:

    • CLUSTER_ID: ID cluster Cloud SQL per PostgreSQL.
    • CLOUD_SQL_BACKUP_ID: ID backup Cloud SQL da cui eseguire la migrazione. Deve essere l'ID backup.
    • CLOUD_SQL_INSTANCE_ID: ID istanza Cloud SQL da cui eseguire la migrazione. Deve essere l'ID istanza.
    • CLOUD_SQL_PROJECT_ID: ID progetto Cloud SQL da cui eseguire la migrazione. Deve essere l'ID progetto.
    • PASSWORD: password iniziale dell'utente PostgreSQL da configurare durante la creazione del cluster.
    • REGION: località, ad esempio asia-east1 o us-east1. Visualizza l'elenco completo delle regioni in Località regionali.
    • DATABASE_VERSION: versione del database del cluster. Deve essere uno dei seguenti valori: POSTGRES_14, POSTGRES_15, POSTGRES_16 o POSTGRES_17. La versione del database deve essere la stessa del backup di Cloud SQL.
    • SUBSCRIPTION_TYPE: tipo di abbonamento del cluster. Deve essere uno dei seguenti valori: STANDARD o TRIAL.
  2. Esegui il comando gcloud beta alloydb operations describe per verificare lo stato dell'operazione di backup:
          gcloud beta alloydb operations describe OPERATION_ID \
            --region=REGION_ID \
            --project=PROJECT_ID
          

    Sostituisci quanto segue:

    • OPERATION_ID: il nome dell'operazione Cloud SQL per PostgreSQL.
    • REGION_ID: la regione in cui è stato eseguito il deployment del cluster Cloud SQL per PostgreSQL.
    • PROJECT_ID: l'ID progetto.
  3. Utilizza il gcloud alloydb instances create comando per creare un'istanza principale.

API REST

  1. Per ottenere un elenco dei backup dell'istanza da cui vuoi ripristinare il backup, chiama il backupsRuns.listmetodo:
          GET "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/backupRuns"
          

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID progetto.
    • INSTANCE_ID: l'ID istanza.

    Corpo JSON della richiesta:

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

    Per inviare la richiesta, utilizza una di queste opzioni:

    curl (Linux, macOS o Cloud Shell)

    Il seguente comando presuppone che tu abbia eseguito l'accesso a gcloud CLI con il tuo account utente eseguendo gcloud init o gcloud auth login, oppure utilizzando Cloud Shell, che esegue automaticamente l'accesso a gcloud CLI.

    Puoi controllare l'account attivo eseguendo gcloud auth list.

    Salva il corpo della richiesta in un file denominato request.json ed esegui il seguente 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)

    Il seguente comando presuppone che tu abbia eseguito l'accesso a gcloud CLI con il tuo account utente eseguendo gcloud init o gcloud auth login, oppure utilizzando Cloud Shell, che esegue automaticamente l'accesso a gcloud CLI.

    Puoi controllare l'account attivo eseguendo gcloud auth list.

    Salva il corpo della richiesta in un file denominato request.json ed esegui il seguente 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
          

    Riceverai una risposta JSON simile alla seguente:

    Risposta

    In caso di esito positivo, il corpo della risposta contiene un elenco di BackupRun.

    La risposta dell'API restituisce un elenco di backup per l'istanza come un elenco di array, incluso "id": string,.

  2. Chiama il restoreFromCloudSQL method:

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

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID progetto.
    • REGION: la regione in cui è stato eseguito il deployment del cluster AlloyDB.

    Corpo JSON della richiesta:

          {
            "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.
          }
          

    Per inviare la richiesta, utilizza una di queste opzioni:

    curl (Linux, macOS o Cloud Shell)

    Il seguente comando presuppone che tu abbia eseguito l'accesso a gcloud CLI con il tuo account utente eseguendo gcloud init o gcloud auth login, oppure utilizzando Cloud Shell, che esegue automaticamente l'accesso a gcloud CLI.

    Puoi controllare l'account attivo eseguendo gcloud auth list.

    Salva il corpo della richiesta in un file denominato request.json ed esegui il seguente 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)

    Il seguente comando presuppone che tu abbia eseguito l'accesso a gcloud CLI con il tuo account utente eseguendo gcloud init o gcloudauth login, oppure utilizzando Cloud Shell, che esegue automaticamente l'accesso a gcloud CLI.

    Puoi controllare l'account attivo eseguendo gcloud auth list.

    Salva il corpo della richiesta in un file denominato request.json ed esegui il seguente 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
          

    Riceverai una risposta JSON simile alla seguente:

    Risposta

    In caso di esito positivo, il corpo della risposta contiene un'istanza di Operation.

    Viene creato un nuovo cluster nel progetto e nella località specificati, con un volume ripristinato dal backup indicato nel messaggio CloudSQLBackupRunSource.

  3. Quando il cluster è nello stato READY, crea l'istanza principale chiamando il projects.locationsinstances.create metodo:
          POST https://alloydb.googleapis.com/v1beta/{parent=projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID}/instances
          

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID progetto.
    • REGION: la regione in cui è stato eseguito il deployment del cluster AlloyDB.
    • CLUSTER_ID: l'ID cluster.

    Corpo JSON della richiesta:

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

    Il corpo della richiesta contiene un'istanza di Instance.

    Per inviare la richiesta, utilizza una di queste opzioni:

    curl (Linux, macOS o Cloud Shell)

    Il seguente comando presuppone che tu abbia eseguito l'accesso a gcloud CLI con il tuo account utente eseguendo gcloud init o gcloud auth login, oppure utilizzando Cloud Shell, che esegue automaticamente l'accesso a gcloud CLI.

    Puoi controllare l'account attivo eseguendo gcloud auth list.

    Salva il corpo della richiesta in un file denominato request.json ed esegui il seguente 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)

    Il seguente comando presuppone che tu abbia eseguito l'accesso a gcloud CLI con il tuo account utente eseguendo gcloud init o gcloud auth login, oppure utilizzando Cloud Shell, che esegue automaticamente l'accesso a gcloud CLI.

    Puoi controllare l'account attivo eseguendo gcloud auth list.

    Salva il corpo della richiesta in un file denominato request.json ed esegui il seguente 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
          

    Riceverai una risposta JSON simile alla seguente:

    Risposta

    In caso di esito positivo, il corpo della risposta contiene un'istanza di Operation appena creata.

  4. Dopo che l'istanza è stata aggiornata allo stato READY, connettiti all'istanza e accedi ai dati ripristinati dallo snapshot di Cloud SQL.

Passaggi successivi