Migra 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 de prueba gratuita de AlloyDB para PostgreSQL. Copiar una copia de seguridad de Cloud SQL en un clúster de AlloyDB te permite cargar datos rápidamente en Cloud SQL para PostgreSQL, lo que te permite evaluar o migrar a AlloyDB.

En esta página, se supone que tienes conocimientos sobre Cloud SQL. Si es la primera vez que usas AlloyDB, consulta la descripción general de AlloyDB.

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

Las siguientes opciones no son compatibles:

  • Instancias de la edición Enterprise Plus de Cloud SQL
  • Restablecimientos entre proyectos y regiones
  • Instancias con claves de encriptación administradas por el cliente (CMEK)
  • Instancias con autenticación de grupos de Identity and Access Management (IAM)

Antes de comenzar

  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.

    Go to project selector

  3. Make sure 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.

    Go to project selector

  5. Make sure that billing is enabled for your Google Cloud project.

  6. Enable the AlloyDB, Compute Engine, and Service Networking APIs.

    Enable the APIs

  7. Asegúrate de tener 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, otórgate los siguientes roles de IAM en tu proyecto:

    Copia 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úster de prueba gratuitade AlloyDB, se restablecerá la copia de seguridad en la misma versión de PostgreSQL en AlloyDB. Por ejemplo, una copia de seguridad de Cloud SQL de PostgreSQL 14 se restablecerá en un clúster de prueba gratuita de PostgreSQL 14. Ten en cuenta que las versiones de extensión y las versiones secundarias de PostgreSQL pueden ser diferentes.

    La copia de una copia de seguridad de Cloud SQL solo admite la configuración de los elementos compatibles con el clúster deestándar de AlloyDB.

    Para copiar una copia de seguridad de Cloud SQL en un clúster de pruebagratuitode AlloyDB, sigue estos pasos:

    Console

    1. En la consola de Google Cloud , ve a la página Clústeres.

      Ir a los clústeres

    2. Si aún no aprovisionaste un clúster, haz clic en Iniciar una prueba gratuita. Si tienes un clúster existente, haz clic en Migrar datos.
    3. Haz clic en Copiar desde la copia de seguridad de Cloud SQL.
    4. En la página Copiar desde la copia de seguridad de Cloud SQL, habilita las APIs requeridas. Si ya habilitaste las APIs, no es necesario que lo hagas de nuevo.
    5. En la página Selecciona el tipo de clúster, haz clic en Clúster de prueba gratuita. Si no cumples con los requisitos para obtener un clúster de prueba gratuita, este campo aparecerá atenuado.
    6. Haz clic en Select Cluster Type.
    7. Selecciona la instancia de Cloud SQL desde la que deseas hacer una copia y, luego, haz clic en Seleccionar instancia. Puedes filtrar instancias de Cloud SQL.
      Solo se muestran las versiones de bases de datos compatibles. Las réplicas no tienen copias de seguridad y no se muestran en la lista de instancias disponibles.
    8. Selecciona la copia de seguridad desde la que deseas importar y, luego, haz clic en Seleccionar copia de seguridad. En esta página, se muestran las 1,000 copias de seguridad más recientes.
    9. En la página Create your free cluster, ingresa el ID del clúster y tu información de redes.
    10. Haz clic en Iniciar prueba gratuita.

    Una vez que se completa 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 seleccionaste.

    Cuando copias una copia de seguridad de Cloud SQL para PostgreSQL en un clúster de AlloyDB, no se migran automáticamente las marcas de bases de datos ni los permisos a nivel de recursos. Una vez que se complete la copia, deberás configurar estos permisos y marcas de forma manual.

    Puedes verificar qué marcas de bases de datos en Cloud SQL para PostgreSQL son compatibles con AlloyDB en la página Crea tu clúster gratuito.

    gcloud

    Para usar la CLI de gcloud, puedes instalarla y, luego, inicializarla, o bien usar Cloud Shell.

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

      Reemplaza lo siguiente:

      • CLUSTER: Es el ID del clúster de Cloud SQL para PostgreSQL.
      • CLOUD_SQL_BACKUP_ID: Es el ID de la copia de seguridad de Cloud SQL desde la que se migrará. Debe ser el ID de la copia de seguridad.
      • CLOUD_SQL_INSTANCE_ID: Es el ID de la instancia de Cloud SQL desde la que se realizará la migración. Debe ser el ID de la instancia.
      • CLOUD_SQL_PROJECT_ID: Es el proyecto de Cloud SQL desde el que se realizará la migración. Debe ser el ID del proyecto.
      • PASSWORD: Contraseña inicial del usuario de PostgreSQL que se 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: Es la versión de la base de datos del clúster. Debe ser uno de los siguientes: POSTGRES_14, POSTGRES_15 o POSTGRES_16. La versión de la base de datos debe ser la misma que la de la copia de seguridad de Cloud SQL.
      • SUBSCRIPTION_TYPE: Es el tipo de suscripción del clúster. Debe ser uno de los siguientes: 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
            

      Reemplaza lo siguiente:

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

    API de REST

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

      Reemplaza lo siguiente:

      • PROJECT_ID: El ID del proyecto.
      • INSTANCE_ID: El ID de la instancia.

      Cuerpo JSON de la solicitud:

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

      Para enviar tu solicitud, usa una de estas opciones:

      curl (Linux, macOS o Cloud Shell)

      Con el siguiente comando, se supone que accediste a gcloud CLI con tu cuenta de usuario ejecutando gcloud init o gcloud auth login, o bien usando Cloud Shell, que accede automáticamente a gcloud CLI.

      Para comprobar la cuenta activa, ejecuta 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)

      Con el siguiente comando, se supone que accediste a gcloud CLI con tu cuenta de usuario a través de la ejecución de gcloud init o gcloud auth login, o a través del uso de Cloud Shell, que accede de forma automática a gcloud CLI.

      Para comprobar la cuenta activa, ejecuta 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 se ejecuta 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
            

      Reemplaza lo siguiente:

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

      Cuerpo JSON de la solicitud:

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

      curl (Linux, macOS o Cloud Shell)

      Con el siguiente comando, se supone que accediste a gcloud CLI con tu cuenta de usuario a través de la ejecución de gcloud init o gcloud auth login, o a través del uso de Cloud Shell, que accede de forma automática a gcloud CLI.

      Para comprobar la cuenta activa, ejecuta 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)

      Con el siguiente comando, se supone que accediste a gcloud CLI con tu cuenta de usuario a través de la ejecución de gcloud init o gcloudauth login, o a través del uso de Cloud Shell, que accede de forma automática a gcloud CLI.

      Para comprobar la cuenta activa, ejecuta 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 se ejecuta de forma correcta, el cuerpo de la respuesta contiene una instancia de Operation.

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

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

      Reemplaza lo siguiente:

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

      Cuerpo JSON de la solicitud:

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

      El cuerpo de la solicitud contiene una instancia de Instance.

      Para enviar tu solicitud, usa una de estas opciones:

      curl (Linux, macOS o Cloud Shell)

      Con el siguiente comando, se supone que accediste a gcloud CLI con tu cuenta de usuario a través de la ejecución de gcloud init o gcloud auth login, o a través del uso de Cloud Shell, que accede de forma automática a gcloud CLI.

      Para comprobar la cuenta activa, ejecuta 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)

      Con el siguiente comando, se supone que accediste a gcloud CLI con tu cuenta de usuario a través de la ejecución de gcloud init o gcloud auth login, o a través del uso de Cloud Shell, que accede de forma automática a gcloud CLI.

      Para comprobar la cuenta activa, ejecuta 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 el proceso se realiza correctamente, el cuerpo de la respuesta contiene una instancia recién creada de Operation.

    4. Después de que la instancia se actualice al estado READY, conéctate a ella y accede a los datos restablecidos desde la instantánea de Cloud SQL.

    ¿Qué sigue?