Exportar un archivo SQL

En esta página se describe cómo exportar datos de clústeres de AlloyDB para PostgreSQL a archivos de volcado de SQL.

Para obtener información sobre cómo migrar una base de datos completa desde un servidor de bases de datos compatible a una instancia de AlloyDB nueva, consulta Migrar una base de datos a AlloyDB con Database Migration Service. Si vas a exportar un archivo porque quieres crear una instancia a partir de él, te recomendamos que restaures un clúster a partir de una copia de seguridad almacenada.

Puedes cancelar la exportación de datos de clústeres de AlloyDB para PostgreSQL. Para obtener más información, consulta Cancelar la exportación de datos.

Antes de empezar

  • Antes de iniciar una operación de exportación, ten en cuenta que estas operaciones usan recursos de la base de datos, pero no interfieren con las operaciones estándar de la base de datos a menos que la instancia tenga pocos recursos.
  • Se aplican cargos por transferencia de datos entre regiones cuando el segmento de destino se encuentra en una región distinta a la del clúster de origen. Para obtener más información, consulta los precios de AlloyDB para PostgreSQL.
  • La compresión se habilita si el nombre del objeto termina con la extensión .gz. El objeto se exporta en formato .gz a Cloud Storage.
  • Se pueden ejecutar varias operaciones de exportación en paralelo.

Roles y permisos necesarios para exportar datos de AlloyDB

Para exportar datos de AlloyDB a Cloud Storage, el usuario que inicie la exportación debe tener uno de los siguientes roles de Gestión de Identidades y Accesos (IAM):

Además, la cuenta de servicio del clúster de AlloyDB debe tener uno de los siguientes roles:

  • Rol de gestión de identidades y accesos storage.objectAdmin
  • Un rol personalizado que incluya los permisos storage.objects.create

Para obtener ayuda con los roles de Gestión de Identidades y Accesos, consulta Gestión de Identidades y Accesos.

Exportar datos de AlloyDB a un archivo de volcado de SQL

Cuando usas AlloyDB para realizar una exportación, ya sea desde la CLI de gcloud o desde la API, utilizas la utilidad pg_dump con las opciones necesarias para asegurarte de que el archivo de exportación resultante sea válido para volver a importarlo a AlloyDB.

Para exportar datos de una base de datos de un clúster de AlloyDB a un archivo de volcado de SQL en un segmento de Cloud Storage, sigue estos pasos:

gcloud

  1. Crea un segmento de Cloud Storage.
  2. Usa el formato proporcionado para identificar la cuenta de servicio del proyecto del que vas a exportar datos. El formato de la cuenta de servicio es el siguiente:

    service-PROJECT_NUMBER@gcp-sa-alloydb.iam.gserviceaccount.com

    Concede a la cuenta de servicio permisos para el segmento de Cloud Storage de la operación de exportación.

  3. Usa gcloud storage buckets add-iam-policy-binding para asignar el storage.objectAdmin rol de gestión de identidades y accesos a la cuenta de servicio. Para obtener ayuda con la configuración de permisos de gestión de identidades y accesos, consulta Usar permisos de gestión de identidades y accesos.

  4. Exporta la base de datos a tu segmento de Cloud Storage. A continuación, se indican las opciones para exportar datos en formato de volcado de SQL:

    • --async (Opcional): devuelve el valor inmediatamente, sin esperar a que se complete la operación en curso.
    • --tables (Opcional): tablas de las que se van a exportar datos.
    • --schema-only (Opcional): si se define, exporta solo el esquema.
    • --clean-target-objects (Opcional): si se define, genera comandos para DROP todos los objetos de la base de datos volcados antes de generar los comandos para crearlos.
    • --if-exist-target-objects (Opcional): si se define, usa comandos DROP ... IF EXISTS para comprobar si el objeto existe antes de eliminarlo en el modo --clean-target-objects.

    Para usar estas funciones, incluye estas opciones en el comando gcloud. Si solo quieres exportar definiciones de objetos (esquema) y no datos, usa la marca –-schema-only. Para especificar qué tablas se van a exportar, usa la marca --tables=TABLE_NAMES. Puede especificar valores de nombres de tabla separados por comas o patrones de comodines para especificar varias tablas.

    De lo contrario, elimina estos parámetros del siguiente comando:

    gcloud alloydb clusters export CLUSTER_NAME
      --region=REGION
      --database=DATABASE_NAME
      --gcs-uri="gs://BUCKET_NAME/OBJECT_NAME"
      --tables=TABLE_NAMES
      --schema-only
      --clean-target-objects
      --if-exist-target-objects
      --sql

    El comando alloydb clusters export no contiene activadores ni procedimientos almacenados, pero sí vistas. Para exportar activadores o procedimientos almacenados, usa la utilidad pg_dump.

    Para obtener más información sobre el uso del comando alloydb clusters export, consulta la página de referencia del comando alloydb clusters export.

  5. Si no necesitas conservar el rol de gestión de identidades y accesos que has definido anteriormente, revócalo ahora.

REST v1

  1. Crea un segmento para la exportación:

    gcloud storage buckets create gs://BUCKET_NAME --project=PROJECT_NAME --location=LOCATION_NAME
  2. Usa el formato de cuenta de servicio para identificar la cuenta de servicio del proyecto del que vas a hacer la exportación.

    El formato de la cuenta de servicio es el siguiente:

     service-PROJECT_NUMBER@gcp-sa-alloydb.iam.gserviceaccount.com

    Concede permisos a la cuenta de servicio para acceder al segmento de Cloud Storage en el que se va a realizar la exportación.

  3. Usa gcloud storage buckets add-iam-policy-binding para asignar el storage.objectAdmin rol de gestión de identidades y accesos a la cuenta de servicio. Para obtener ayuda con la configuración de permisos de gestión de identidades y accesos, consulta Usar permisos de gestión de identidades y accesos.

  4. Exporta tu base de datos.

    Usa el siguiente método HTTP y la siguiente URL:

    POST https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID:export

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • PROJECT_ID: el ID del proyecto.
    • REGION: la región en la que se despliega el clúster de AlloyDB.
    • CLUSTER_ID: el ID del clúster.
    • BUCKET_NAME: el nombre del segmento de Cloud Storage.
    • PATH_TO_SQL_FILE: la ruta al archivo de volcado de SQL.
    • DATABASE_NAME: el nombre de una base de datos dentro de la instancia de AlloyDB.
    • TABLES: tablas de las que se van a exportar datos.
    • SCHEMA_ONLY: si es true, exporta solo el esquema.
    • CLEAN_TARGET_OBJECTS: si true, genera comandos para DROP todos los objetos de la base de datos volcados antes de generar los comandos para crearlos.
    • IF_EXIST_TARGET_OBJECTS: Si true, usa los comandos de DROP ... IF EXISTS para comprobar si el objeto existe antes de colocarlo en el modo clean_target_objects.

    Para usar estas funciones, asigna el valor true a estos parámetros. De lo contrario, asigna el valor false. Si solo quieres exportar definiciones de objetos (esquema) y no datos, usa la marca schema_only. Para especificar qué tablas se van a exportar, usa el campo tables. Puede seleccionar varias tablas proporcionando una lista de nombres de tabla separados por comas o escribiendo caracteres comodín en el patrón.

    Cuerpo JSON de la solicitud:

    {
      "gcs_destination": {
        "uri": "gs://BUCKET_NAME/PATH_TO_SQL_FILE"
      },
      "database": "DATABASE_NAME",
      "sql_export_options": {
        "schema_only": true,
        "tables": [
         "TABLE1",
         "TABLE2"
        ],
        "clean_target_objects": false,
        "if_exist_target_objects": true
      }
    }
    

    Para enviar tu solicitud, despliega una de estas opciones:

    curl (Linux, macOS o Cloud Shell)

    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/v1/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID:export"
       

    PowerShell (Windows)

    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/v1/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID:export"| Select-Object -Expand Content
       

    Recibirás una respuesta JSON similar a la siguiente:

    Respuesta

    {
      "name": "projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.alloydb.v1.OperationMetadata",
        "createTime": "2024-09-17T06:05:31.244428646Z",
        "target": "projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID",
        "verb": "export",
        "requestedCancellation": false,
        "apiVersion": "v1"
      },
      "done": false
    }
    
  5. Si no necesitas conservar el rol de gestión de identidades y accesos que has configurado anteriormente, quítalo ahora.

Para ver la lista completa de parámetros de la solicitud, consulta clusters:export.

Siguientes pasos