Exporta 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 base de datos compatible a una instancia nueva de AlloyDB, consulta Cómo migrar una base de datos a AlloyDB con Database Migration Service. Si exportas porque quieres crear una instancia nueva desde el archivo exportado, considera restablecer un clúster desde 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 Cancela la exportación de datos.

Antes de comenzar

  • Antes de comenzar una operación de exportación, ten en cuenta que las operaciones de exportación usan recursos de bases de datos, pero no interfieren en las operaciones normales de las bases de datos, a menos que la instancia no cuente con el aprovisionamiento suficiente.
  • Los cargos por transferencia de datos entre regiones se aplican cuando el bucket de destino se encuentra en una región diferente 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. Luego, el objeto se exporta en formato .gz a Cloud Storage.
  • Se pueden ejecutar varias operaciones de exportación en paralelo.

Roles y permisos obligatorios para la exportación desde AlloyDB

Para exportar datos de AlloyDB a Cloud Storage, el usuario que inicia la exportación debe tener uno de los siguientes roles de Identity and Access Management (IAM):

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

  • El rol de IAM storage.objectAdmin o storage.objectCreator
  • Un rol personalizado que incluya el permiso storage.objects.create

Para obtener ayuda con los roles de IAM, consulta Identity and Access Management.

Exporta datos de AlloyDB a un archivo de volcado de SQL

Cuando usas AlloyDB para ejecutar una exportación, ya sea desde la CLI de gcloud o la API, se usa la pg_dump utilidad, con las opciones necesarias para garantizar que el archivo de exportación resultante sea válido para que se pueda volver a importar a AlloyDB.

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

gcloud

  1. Asegúrate de que haya un bucket de Cloud Storage existente para almacenar el archivo exportado o crea uno nuevo.
  2. Usa el formato proporcionado para identificar la cuenta de servicio del proyecto desde el que exportas. El formato de la cuenta de servicio es el siguiente:

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

    Otorga permisos a la cuenta de servicio en el bucket de Cloud Storage para la operación de exportación.

  3. Usa gcloud storage buckets add-iam-policy-binding para otorgar el rol de storage.objectAdmin IAM a la cuenta de servicio. Para obtener instrucciones para otorgar roles a los buckets, consulta Configura y administra políticas de IAM en buckets.

    Si exportas el archivo a un bucket de Cloud Storage existente que no creaste, es posible que necesites permisos de IAM adicionales para otorgar roles en el bucket. Para obtener más información, consulta Roles obligatorios.

  4. Exporta la base de datos a tu bucket de Cloud Storage. En la siguiente lista, se muestran las opciones para exportar datos en formato de volcado de SQL:

    • --async (opcional): Muestra resultados de inmediato, sin esperar a que se complete la operación en curso.
    • --tables (opcional): Las tablas desde las que se exportarán.
    • --schema-only (opcional): Si se configura, exporta solo el esquema.
    • --clean-target-objects (opcional): Si se configura, 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 configura, usa comandos DROP ... IF EXISTS para verificar la existencia del objeto antes de descartarlo en el modo --clean-target-objects.

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

    De lo contrario, quita 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 contiene vistas. Para exportar activadores o procedimientos almacenados, usa la pg_dump utilidad.

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

  5. Si no necesitas conservar el rol de IAM que configuraste antes, revoca el rol ahora.

REST v1

  1. Asegúrate de que haya un bucket de Cloud Storage existente para almacenar el archivo exportado o crea uno nuevo:

    gcloud storage buckets create gs://BUCKET_NAME --project=PROJECT_NAME --location=LOCATION_NAME
  2. Usa el formato de la cuenta de servicio para identificar la cuenta de servicio del proyecto desde el que exportas.

    El formato de la cuenta de servicio es el siguiente:

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

    Otorga permisos a la cuenta de servicio en el bucket de Cloud Storage para la operación de exportación.

  3. Usa gcloud storage buckets add-iam-policy-binding para otorgar el rol de storage.objectAdmin IAM a la cuenta de servicio. Para obtener instrucciones para otorgar roles a los buckets, consulta Configura y administra políticas de IAM en buckets.

    Si exportas el archivo a un bucket de Cloud Storage existente que no creaste, es posible que necesites permisos de IAM adicionales para otorgar roles en el bucket. Para obtener más información, consulta Roles obligatorios.

  4. Exporta tu base de datos.

    Usa el siguiente método y URL HTTP:

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

    Antes de usar cualquiera de los datos de la solicitud, realiza los siguientes reemplazos:

    • PROJECT_ID: Es 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.
    • BUCKET_NAME: Es el nombre del bucket de Cloud Storage.
    • PATH_TO_SQL_FILE: Es la ruta de acceso al archivo de volcado de SQL.
    • DATABASE_NAME: Es el nombre de una base de datos dentro de la instancia de AlloyDB.
    • TABLES: Las tablas desde las que se exportarán.
    • SCHEMA_ONLY: Si es true, exporta solo el esquema.
    • CLEAN_TARGET_OBJECTS: Si es 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 DROP ... IF EXISTS comandos para verificar la existencia del objeto antes de descartarlo en el modo clean_target_objects.

    Para usar estas funciones, establece los valores de los parámetros en true. De lo contrario, establécelos en false. Si deseas exportar solo definiciones de objetos (esquema) y no datos, usa la marca schema_only. Para especificar qué tablas se exportarán, usa el campo tables. Puedes seleccionar varias tablas si proporcionas una lista separada por comas de nombres de tablas o escribes 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, expande 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 IAM que configuraste antes, quítalo ahora.

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

¿Qué sigue?