Migrar de Cloud SQL para PostgreSQL a AlloyDB para PostgreSQL

En esta página se describe cómo migrar una instancia de Cloud SQL para PostgreSQL copiando una copia de seguridad de Cloud SQL en un clúster de de AlloyDB para PostgreSQL. Si copias una copia de seguridad de Cloud SQL en un clúster de AlloyDB, podrás cargar datos rápidamente en Cloud SQL para PostgreSQL, lo que te permitirá evaluar o migrar a AlloyDB.

En esta página se da por hecho que ya conoces Cloud SQL. Si no conoces AlloyDB, consulta la información general sobre AlloyDB.

Para saber cómo migrar tus datos de Cloud SQL a AlloyDB mediante la replicación continua de datos, consulta Database Migration Service para migrar de PostgreSQL a AlloyDB.

No se admiten los siguientes elementos:

  • Restauraciones entre proyectos y entre regiones
  • Instancias con claves de cifrado gestionadas por el cliente (CMEK)
  • Instancias con autenticación de grupo de Gestión de Identidades y Accesos (IAM)

Antes de empezar

  1. In the Cloud de Confiance console, on the project selector page, select or create a Cloud de Confiance 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

  2. Verify that billing is enabled for your Cloud de Confiance project.

  3. Habilita las APIs AlloyDB, Compute Engine y Service Networking.

    Roles necesarios para habilitar las APIs

    Para habilitar APIs, necesitas el rol de gestión de identidades y accesos Administrador de uso de servicio (roles/serviceusage.serviceUsageAdmin), que contiene el permiso serviceusage.services.enable. Consulta cómo conceder roles.

    Habilita las APIs

  4. Comprueba que tengas lo siguiente:

Roles obligatorios

Para obtener los permisos que necesitas para copiar una copia de seguridad de Cloud SQL para PostgreSQL en un clúster de AlloyDB, asigna las siguientes funciones de gestión de identidades y accesos a tu proyecto:

Copiar una copia de seguridad de Cloud SQL en un clúster de AlloyDB

Si copias una copia de seguridad de Cloud SQL en un clústerestándar de AlloyDB, la copia de seguridad se restaurará en la misma versión de PostgreSQL en AlloyDB. Por ejemplo, una copia de seguridad de PostgreSQL 14 de Cloud SQL se restaurará en un clúster estándar de PostgreSQL 14. Ten en cuenta que las versiones de la extensión y las versiones secundarias de PostgreSQL pueden ser diferentes.

Al copiar una copia de seguridad de Cloud SQL, solo se admite la configuración de los elementos que se admiten en el clúster estándar de lade AlloyDB.

Para copiar una copia de seguridad de Cloud SQL en un clúster estándar de lade AlloyDB, sigue estos pasos:

Consola

  1. En la Cloud de Confiance consola, ve a la página Clusters.

    Ir a Clústeres

  2. Haz clic en Migrar datos y, a continuación, selecciona Copiar desde copia de seguridad de Cloud SQL.
  3. En la página Copiar de copia de seguridad de Cloud SQL, habilita las APIs necesarias. Si ya has habilitado las APIs, no es necesario que lo hagas de nuevo.
  4. En la página Seleccionar el tipo de clúster, selecciona Clúster aprovisionado.
  5. Haz clic en Seleccionar tipo de clúster.
  6. Selecciona la instancia de Cloud SQL de la que quieras copiar una copia de seguridad y, a continuación, haz clic en Seleccionar instancia. Puedes filtrar instancias de Cloud SQL.
    Solo se muestran las versiones de la base de datos compatibles. Las réplicas no tienen copias de seguridad y no se muestran en la lista de instancias disponibles.
  7. Selecciona la copia de seguridad que quieras importar y, a continuación, haz clic en Seleccionar copia de seguridad. En esta página se muestran las 1000 copias de seguridad más recientes.
  8. En la página Crea tu clúster aprovisionado, introduce la información de red. El ID del clúster se rellena de forma predeterminada, pero también puedes personalizar el clúster aprovisionado.
  9. Haz clic en Crear clúster.

Una vez completada la operación, se crea automáticamente una instancia principal. Verás un nuevo clúster de AlloyDB con los datos copiados de la copia de seguridad de Cloud SQL para PostgreSQL que hayas seleccionado.

Cuando copias una copia de seguridad de Cloud SQL para PostgreSQL en un clúster de AlloyDB, las marcas de la base de datos se migran si están en Cloud SQL para PostgreSQL y en AlloyDB. Los permisos a nivel de recurso no se migran automáticamente. Una vez completada la copia, debes configurar manualmente los permisos y las marcas de la base de datos que no se hayan migrado debido a una discrepancia.

Puedes consultar qué marcas de base de datos de Cloud SQL para PostgreSQL son compatibles con AlloyDB en la página Crear un clúster aprovisionado.

gcloud

Para usar gcloud CLI, puedes instalar e inicializar gcloud CLI o usar Cloud Shell.

  1. Ejecuta el 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
          

    Haz los cambios siguientes:

    • CLUSTER_ID: ID del clúster de Cloud SQL para PostgreSQL.
    • CLOUD_SQL_BACKUP_ID: ID de la copia de seguridad de Cloud SQL desde la que se va a migrar. Debe ser el ID de la copia de seguridad.
    • CLOUD_SQL_INSTANCE_ID: ID de la instancia de Cloud SQL desde la que se va a migrar. Debe ser el ID de instancia.
    • CLOUD_SQL_PROJECT_ID: ID del proyecto de Cloud SQL desde el que se va a migrar. Debe ser el ID del proyecto.
    • PASSWORD: contraseña inicial del usuario de PostgreSQL que se debe configurar durante la creación del clúster.
    • REGION: ubicación, por ejemplo, asia-east1 o us-east1. Consulta la lista completa de regiones en Ubicaciones regionales.
    • DATABASE_VERSION: versión de la base de datos del clúster. Debe ser uno de los siguientes valores: POSTGRES_14, POSTGRES_15, POSTGRES_16 o POSTGRES_17. La versión de la base de datos debe ser la misma que la de la copia de seguridad de Cloud SQL.
    • SUBSCRIPTION_TYPE: tipo de suscripción del clúster. Debe ser uno de los siguientes valores: STANDARD o TRIAL.
  2. Ejecuta el comando gcloud beta alloydb operations describe para confirmar el estado de la operación de copia de seguridad:
          gcloud beta alloydb operations describe OPERATION_ID \
            --region=REGION_ID \
            --project=PROJECT_ID
          

    Haz los cambios siguientes:

    • OPERATION_ID: el nombre de la operación de Cloud SQL para PostgreSQL.
    • REGION_ID: la región en la que se implementa el clúster de Cloud SQL para PostgreSQL.
    • PROJECT_ID: el ID del proyecto.
  3. Usa el comando gcloud alloydb instances create para crear una instancia principal.

API REST

  1. Para obtener una lista de las copias de seguridad de la instancia desde la que quieras restaurar tu copia de seguridad, llama al método backupsRuns.list:
          GET "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/backupRuns"
          

    Haz los cambios siguientes:

    • PROJECT_ID: el ID del proyecto.
    • INSTANCE_ID: el ID de instancia.

    Cuerpo JSON de la solicitud:

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

    Para enviar tu solicitud, utiliza una de estas opciones:

    curl (Linux, macOS o Cloud Shell)

    El siguiente comando presupone que has iniciado sesión en gcloud CLI con tu cuenta de usuario ejecutando gcloud init o gcloud auth login, o bien usando Cloud Shell, que inicia sesión automáticamente en gcloud CLI.

    Puedes comprobar la cuenta activa ejecutando gcloud auth list.

    Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente 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)

    El siguiente comando presupone que has iniciado sesión en gcloud CLI con tu cuenta de usuario ejecutando gcloud init o gcloud auth login, o bien usando Cloud Shell, que inicia sesión automáticamente en gcloud CLI.

    Puedes comprobar la cuenta activa ejecutando gcloud auth list.

    Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente 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
          

    Recibirás una respuesta JSON similar a la siguiente:

    Respuesta

    Si la solicitud se completa correctamente, el cuerpo de la respuesta contiene una lista de BackupRun.

    La respuesta de la API devuelve una lista de copias de seguridad de la instancia como una lista de arrays, incluido "id": string,.

  2. Llama al método restoreFromCloudSQL:

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

    Haz los cambios siguientes:

    • PROJECT_ID: el ID del proyecto.
    • REGION: la región en la que se ha desplegado el clúster de AlloyDB.

    Cuerpo JSON de la solicitud:

          {
            "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 tu solicitud, utiliza una de estas opciones:

    curl (Linux, macOS o Cloud Shell)

    El siguiente comando presupone que has iniciado sesión en gcloud CLI con tu cuenta de usuario ejecutando gcloud init o gcloud auth login, o bien usando Cloud Shell, que inicia sesión automáticamente en gcloud CLI.

    Puedes comprobar la cuenta activa ejecutando gcloud auth list.

    Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente 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)

    El siguiente comando presupone que has iniciado sesión en gcloud CLI con tu cuenta de usuario ejecutando gcloud init o gcloudauth login, o bien usando Cloud Shell, que inicia sesión automáticamente en gcloud CLI.

    Puedes comprobar la cuenta activa ejecutando gcloud auth list.

    Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente 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
          

    Recibirás una respuesta JSON similar a la siguiente:

    Respuesta

    Si la solicitud se hace correctamente, en el cuerpo de la respuesta se incluye una instancia de Operation.

    Se crea un clúster en el proyecto y la ubicación especificados, con un volumen restaurado a partir de la copia de seguridad indicada en el mensaje CloudSQLBackupRunSource.

  3. Cuando el clúster esté en estado READY, crea la instancia principal llamando al método projects.locationsinstances.create:
          POST https://alloydb.googleapis.com/v1beta/{parent=projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID}/instances
          

    Haz los cambios siguientes:

    • PROJECT_ID: el ID del proyecto.
    • REGION: la región en la que se ha desplegado el clúster de AlloyDB.
    • CLUSTER_ID: el ID del clúster.

    Cuerpo JSON de la solicitud:

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

    En el cuerpo de la solicitud se incluye una instancia de Instance.

    Para enviar tu solicitud, utiliza una de estas opciones:

    curl (Linux, macOS o Cloud Shell)

    El siguiente comando presupone que has iniciado sesión en gcloud CLI con tu cuenta de usuario ejecutando gcloud init o gcloud auth login, o bien usando Cloud Shell, que inicia sesión automáticamente en gcloud CLI.

    Puedes comprobar la cuenta activa ejecutando gcloud auth list.

    Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente 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)

    El siguiente comando presupone que has iniciado sesión en gcloud CLI con tu cuenta de usuario ejecutando gcloud init o gcloud auth login, o bien usando Cloud Shell, que inicia sesión automáticamente en gcloud CLI.

    Puedes comprobar la cuenta activa ejecutando gcloud auth list.

    Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente 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
          

    Recibirás una respuesta JSON similar a la siguiente:

    Respuesta

    Si la solicitud se realiza correctamente, en el cuerpo de la respuesta se incluye una instancia recién creada de Operation.

  4. Una vez que la instancia se haya actualizado al estado READY, conéctate a ella y accede a los datos restaurados desde la captura de Cloud SQL.

Siguientes pasos