Importa y exporta archivos en paralelo

En esta página, se describe cómo importar y exportar archivos a instancias de Cloudu SQL en paralelo.

Antes de comenzar

Antes de comenzar una operación de importación o exportación, haz lo siguiente:

  • Asegúrate de que tu base de datos tenga suficiente espacio libre.
  • Las operaciones de importación y exportación usan recursos de bases de datos, pero no interfieren en las operaciones normales de la base de datos, a menos que la instancia no cuente con el aprovisionamiento suficiente.

  • Sigue las prácticas recomendadas para exportar e importar datos.
  • Después de completar una operación de importación, verifica los resultados.

Exporta datos de Cloud SQL para PostgreSQL a varios archivos en paralelo

Las siguientes secciones contienen información sobre la exportación de datos de Cloud SQL para PostgreSQL a varios archivos en paralelo.

Roles y permisos necesarios a fin de exportar datos de Cloud SQL para PostgreSQL a varios archivos en paralelo

Para exportar datos de Cloud SQL a Cloud Storage, el usuario que inicia la exportación debe tener uno de los siguientes roles:

Además, la cuenta de servicio para la instancia de Cloud SQL debe tener uno de los siguientes roles:

  • El rol storage.objectAdmin de Identity and Access Management (IAM)
  • Un rol personalizado que incluya los siguientes permisos:
    • storage.objects.create
    • storage.objects.list (solo para exportar archivos en paralelo)
    • storage.objects.delete (solo para exportar archivos en paralelo)

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

Exporta datos a varios archivos en paralelo

Puedes exportar datos en paralelo desde varios archivos que residan en Cloud SQL hacia Cloud Storage. Para ello, usa la utilidad pg_dump con la opción --jobs.

Si planeas importar los datos a Cloud SQL, sigue las instrucciones que se proporcionan en Exporta datos desde un servidor de base de datos externo a fin de que tus archivos tengan el formato correcto para Cloud SQL.

gcloud

Para exportar datos de Cloud SQL a varios archivos en paralelo, completa los siguientes pasos:

  1. Crea un bucket de Cloud Storage.
  2. Para encontrar la cuenta de servicio de la instancia de Cloud SQL desde la que exportas los archivos, usa el comando
    gcloud sql instances describe.
    gcloud sql instances describe INSTANCE_NAME
    
  3. Reemplaza INSTANCE_NAME por el nombre de tu instancia de Cloud SQL.

    En el resultado, busca el valor asociado con el campo serviceAccountEmailAddress.

  4. Para otorgar el rol de IAM storage.objectAdmin a la cuenta de servicio, usa la utilidad gsutil iam. Para obtener ayuda con la configuración de permisos de IAM, consulta Usa permisos de IAM.
  5. Para exportar datos de Cloud SQL a varios archivos en paralelo, usa el comando gcloud sql export sql:
    gcloud sql export sql INSTANCE_NAME gs://BUCKET_NAME/BUCKET_PATH/FOLDER_NAME \
    --offload \
    --parallel \
    --threads=THREAD_NUMBER \
    --database=DATABASE_NAME \
    --table=TABLE_EXPRESSION
    

    Realiza los siguientes reemplazos:

    • INSTANCE_NAME: el nombre de la instancia de Cloud SQL desde la que exportas archivos en paralelo.
    • BUCKET_NAME: el nombre del bucket de Cloud Storage.
    • BUCKET_PATH: la ruta de acceso al bucket en el que se almacenan los archivos de exportación.
    • FOLDER_NAME: la carpeta en la que se almacenan los archivos de exportación.
    • THREAD_NUMBER: la cantidad de subprocesos que Cloud SQL usa para exportar archivos en paralelo. Por ejemplo, si deseas exportar tres archivos a la vez en paralelo, especifica 3 como el valor para este parámetro.
    • DATABASE_NAME: el nombre de la base de datos dentro de la instancia de Cloud SQL desde la que se realiza la exportación. Debes especificar solo una base de datos.
    • TABLE_EXPRESSION: las tablas que se exportarán desde la base de datos especificada.

    El comando export sql no contiene activadores ni procedimientos almacenados, pero contiene vistas. A fin de exportar activadores o procedimientos almacenados, usa un solo subproceso para la exportación. En este subproceso, se usa la herramienta pg_dump.

    Una vez que se complete la exportación, deberías tener los archivos en una carpeta en el bucket de Cloud Storage con el formato de directorio pg_dump.

  6. Si no necesitas el rol de IAM que configuraste en Roles y permisos necesarios para exportar desde Cloud SQL para PostgreSQL, revócalo.

REST v1

Para exportar datos de Cloud SQL a varios archivos en paralelo, completa los siguientes pasos:

  1. Crea un bucket de Cloud Storage:
    gsutil mb -p PROJECT_NAME -l LOCATION_NAME gs://BUCKET_NAME
    
    Realiza los siguientes reemplazos:
    • PROJECT_NAME: el nombre del proyecto de Google Cloud que contiene el bucket de Cloud Storage que crearás.
    • LOCATION_NAME: la ubicación del bucket en el que deseas almacenar los archivos que exportarás. Por ejemplo, us-east1
    • BUCKET_NAME: el nombre del bucket, sujeto a los requisitos de nomenclatura. Por ejemplo, my-bucket
  2. Otórgale a tu instancia el rol de IAM legacyBucketWriter para tu bucket. Para obtener ayuda con la configuración de permisos de IAM, consulta Usa permisos de IAM.
  3. Exporta datos de Cloud SQL a varios archivos en paralelo:

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_NAME: el nombre del proyecto de Google Cloud que contiene el bucket de Cloud Storage que creaste.
    • INSTANCE_NAME: el nombre de la instancia de Cloud SQL desde la que exportas archivos en paralelo.
    • BUCKET_NAME: el nombre del bucket de Cloud Storage.
    • BUCKET_PATH: la ruta de acceso al bucket en el que se almacenan los archivos de exportación.
    • FOLDER_NAME: la carpeta en la que se almacenan los archivos de exportación.
    • DATABASE_NAME: el nombre de la base de datos dentro de la instancia de Cloud SQL desde la que se realiza la exportación. Debes especificar solo una base de datos.
    • THREAD_NUMBER: la cantidad de subprocesos que Cloud SQL usa para exportar archivos en paralelo. Por ejemplo, si deseas exportar tres archivos a la vez en paralelo, especifica 3 como el valor para este parámetro.

    HTTP method and URL:

    POST https://sqladmin.googleapis.com/v1/projects/PROJECT_NAME/instances/INSTANCE_NAME/export

    Cuerpo JSON de la solicitud:

    {
     "exportContext":
       {
          "fileType": "SQL",
          "uri": "gs://BUCKET_NAME/BUCKET_PATH/FOLDER_NAME",
          "databases": ["DATABASE_NAME"],
          "offload": [TRUE|FALSE],
          "sqlExportOptions": {
            "parallel": [TRUE|FALSE],
            "threads": [THREAD_NUMBER]
           }
       }
    }
    

    Para enviar tu solicitud, expande una de estas opciones:

    Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

  4. Una vez que se complete la exportación, deberías tener los archivos en una carpeta en el bucket de Cloud Storage con el formato de directorio pg_dump.

  5. Si no necesitas el rol de IAM que configuraste en Roles y permisos necesarios para exportar desde Cloud SQL para PostgreSQL, revócalo.
Para obtener una lista completa de los parámetros de la solicitud, consulta la página API de Cloud SQL Admin.

REST v1beta4

Para exportar datos de Cloud SQL a varios archivos en paralelo, completa los siguientes pasos:

  1. Crea un bucket de Cloud Storage:
    gsutil mb -p PROJECT_NAME -l LOCATION_NAME gs://BUCKET_NAME
    
    Realiza los siguientes reemplazos:
    • PROJECT_NAME: el nombre del proyecto de Google Cloud que contiene el bucket de Cloud Storage que crearás.
    • LOCATION_NAME: la ubicación del bucket en el que deseas almacenar los archivos que exportarás. Por ejemplo, us-east1
    • BUCKET_NAME: el nombre del bucket, sujeto a los requisitos de nomenclatura. Por ejemplo, my-bucket
  2. Otórgale a tu instancia el rol de IAM storage.objectAdmin para tu bucket. Para obtener ayuda con la configuración de permisos de IAM, consulta Usa permisos de IAM.
  3. Exporta datos de Cloud SQL a varios archivos en paralelo:

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_NAME: el nombre del proyecto de Google Cloud que contiene el bucket de Cloud Storage que creaste.
    • INSTANCE_NAME: el nombre de la instancia de Cloud SQL desde la que exportas archivos en paralelo.
    • BUCKET_NAME: el nombre del bucket de Cloud Storage.
    • BUCKET_PATH: la ruta de acceso al bucket en el que se almacenan los archivos de exportación.
    • FOLDER_NAME: la carpeta en la que se almacenan los archivos de exportación.
    • DATABASE_NAME: el nombre de la base de datos dentro de la instancia de Cloud SQL desde la que se realiza la exportación. Debes especificar solo una base de datos.
    • THREAD_NUMBER: la cantidad de subprocesos que Cloud SQL usa para exportar archivos en paralelo. Por ejemplo, si deseas exportar tres archivos a la vez en paralelo, especifica 3 como el valor para este parámetro.

    HTTP method and URL:

    POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_NAME/instances/INSTANCE_NAME/export

    Cuerpo JSON de la solicitud:

    {
     "exportContext":
       {
          "fileType": "SQL",
          "uri": "gs://BUCKET_NAME/BUCKET_PATH/FOLDER_NAME",
          "databases": ["DATABASE_NAME"],
          "offload": [TRUE|FALSE],
          "sqlExportOptions": {
            "parallel": [TRUE|FALSE],
            "threads": [THREAD_NUMBER]
           }
       }
    }
    

    Para enviar tu solicitud, expande una de estas opciones:

    Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

  4. Una vez que se complete la exportación, deberías tener los archivos en una carpeta en el bucket de Cloud Storage con el formato de directorio pg_dump.

  5. Si no necesitas el rol de IAM que configuraste en Roles y permisos necesarios para exportar desde Cloud SQL para PostgreSQL, revócalo.
A fin de obtener una lista completa de los parámetros de la solicitud, consulta la página API de Cloud SQL Admin.

Importa datos de varios archivos en paralelo a Cloud SQL para PostgreSQL

Las siguientes secciones contienen información sobre la importación de datos de varios archivos en paralelo a Cloud SQL para PostgreSQL.

Roles y permisos obligatorios a fin de importar datos de varios archivos en paralelo a Cloud SQL para PostgreSQL

Para importar datos de Cloud Storage a Cloud SQL, el usuario que inicia la importación debe tener uno de los siguientes roles:

Además, la cuenta de servicio para la instancia de Cloud SQL debe tener uno de los siguientes roles:

  • El rol de IAM storage.objectAdmin
  • Un rol personalizado que incluya los siguientes permisos:
    • storage.objects.get
    • storage.objects.list (solo para importar archivos en paralelo)

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

Importa datos a Cloud SQL para PostgreSQL

Puedes importar datos en paralelo desde varios archivos que residen en Cloud Storage a tu base de datos. Para ello, usa la utilidad pg_restore con la opción --jobs.

gcloud

Para importar datos de varios archivos en paralelo a Cloud SQL, completa los siguientes pasos:

  1. Crea buckets de Cloud Storage.
  2. Sube los archivos a tu bucket.

    Para obtener ayuda con la carga de archivos en buckets, consulta Sube objetos desde archivos.

  3. Para encontrar la cuenta de servicio de la instancia de Cloud SQL a la que importas archivos, usa el comando
    gcloud sql instances describe.
    gcloud sql instances describe INSTANCE_NAME
    
  4. Reemplaza INSTANCE_NAME por el nombre de tu instancia de Cloud SQL.

    En el resultado, busca el valor asociado con el campo serviceAccountEmailAddress.

  5. Para otorgar el rol de IAM storage.objectAdmin a la cuenta de servicio, usa la utilidad gsutil iam. Para obtener ayuda con la configuración de permisos de IAM, consulta Usa permisos de IAM.
  6. Para importar datos de varios archivos en paralelo a Cloud SQL, usa el comando gcloud sql import sql:
    gcloud sql import sql INSTANCE_NAME gs://BUCKET_NAME/BUCKET_PATH/FOLDER_NAME \
    --offload \
    --parallel \
    --threads=THREAD_NUMBER \
    --database=DATABASE_NAME
    

    Realiza los siguientes reemplazos:

    • INSTANCE_NAME: el nombre de la instancia de Cloud SQL a la que importas archivos en paralelo.
    • BUCKET_NAME: el nombre del bucket de Cloud Storage.
    • BUCKET_PATH: la ruta de acceso al bucket en el que se almacenan los archivos de importación.
    • FOLDER_NAME: la carpeta en la que se almacenan los archivos de importación.
    • THREAD_NUMBER: la cantidad de subprocesos que Cloud SQL usa para importar archivos en paralelo. Por ejemplo, si deseas importar tres archivos a la vez en paralelo, especifica 3 como el valor para este parámetro.
    • DATABASE_NAME: el nombre de la base de datos dentro de la instancia de Cloud SQL desde la que se realiza la importación. Debes especificar solo una base de datos.

    Si el comando muestra un error como ERROR_RDBMS, revisa los permisos; por lo general, este error se produce por problemas con los permisos.

  7. Si no necesitas los permisos de IAM que configuraste en Roles y permisos obligatorios para importar a Cloud SQL para PostgreSQL, usa gsutil iam a fin de quitarlos.

REST v1

Para importar datos de varios archivos en paralelo a Cloud SQL, completa los siguientes pasos:

  1. Crea un bucket de Cloud Storage:
    gsutil mb -p PROJECT_NAME -l LOCATION_NAME gs://BUCKET_NAME
    
    Realiza los siguientes reemplazos:
    • PROJECT_NAME: el nombre del proyecto de Google Cloud que contiene el bucket de Cloud Storage que crearás.
    • LOCATION_NAME: la ubicación del bucket en el que deseas almacenar los archivos que importas. Por ejemplo, us-east1
    • BUCKET_NAME: el nombre del bucket, sujeto a los requisitos de nomenclatura. Por ejemplo, my-bucket
  2. Sube los archivos a tu bucket.

    Para obtener ayuda con la carga de archivos en buckets, consulta Sube objetos desde archivos.

  3. Otorga a la instancia el rol de IAM storage.objectAdmin para tu bucket. Para obtener ayuda con la configuración de permisos de IAM, consulta Usa permisos de IAM.
  4. Importa datos de varios archivos en paralelo a Cloud SQL:

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_NAME: el nombre del proyecto de Google Cloud que contiene el bucket de Cloud Storage que creaste.
    • INSTANCE_NAME: el nombre de la instancia de Cloud SQL a la que importas archivos en paralelo.
    • BUCKET_NAME: el nombre del bucket de Cloud Storage.
    • BUCKET_PATH: la ruta de acceso al bucket en el que se almacenan los archivos de importación.
    • FOLDER_NAME: la carpeta en la que se almacenan los archivos de importación.
    • DATABASE_NAME: el nombre de la base de datos dentro de la instancia de Cloud SQL desde la que se realiza la importación. Debes especificar solo una base de datos.
    • THREAD_NUMBER: la cantidad de subprocesos que Cloud SQL usa para importar archivos en paralelo. Por ejemplo, si deseas importar tres archivos a la vez en paralelo, especifica 3 como el valor para este parámetro.

    HTTP method and URL:

    POST https://sqladmin.googleapis.com/v1/projects/PROJECT_NAME/instances/INSTANCE_NAME/import

    Cuerpo JSON de la solicitud:

    {
     "importContext":
       {
          "fileType": "SQL",
          "uri": "gs://BUCKET_NAME/BUCKET_PATH/FOLDER_NAME",
          "databases": ["DATABASE_NAME"],
          "offload": [TRUE|FALSE],
          "sqlImportOptions": {
            "parallel": [TRUE|FALSE],
            "threads": [THREAD_NUMBER]
           }
       }
    }
    

    Para enviar tu solicitud, expande una de estas opciones:

    Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

    Si quieres usar un usuario diferente para la importación, especifica la propiedad importContext.importUser.

    A fin de obtener una lista completa de los parámetros de la solicitud, consulta la página API de Cloud SQL Admin.
  5. Si no necesitas los permisos de IAM que configuraste en Roles y permisos obligatorios para importar a Cloud SQL para PostgreSQL, usa gsutil iam a fin de quitarlos.

REST v1beta4

Para importar datos de varios archivos en paralelo a Cloud SQL, completa los siguientes pasos:

  1. Crea un bucket de Cloud Storage:
    gsutil mb -p PROJECT_NAME -l LOCATION_NAME gs://BUCKET_NAME
    
    Realiza los siguientes reemplazos:
    • PROJECT_NAME: el nombre del proyecto de Google Cloud que contiene el bucket de Cloud Storage que crearás.
    • LOCATION_NAME: la ubicación del bucket en el que deseas almacenar los archivos que importas. Por ejemplo, us-east1
    • BUCKET_NAME: el nombre del bucket, sujeto a los requisitos de nomenclatura. Por ejemplo, my-bucket
  2. Sube los archivos a tu bucket.

    Para obtener ayuda con la carga de archivos en buckets, consulta Sube objetos desde archivos.

  3. Otorga a la instancia el rol de IAM storage.objectAdmin para tu bucket. Para obtener ayuda con la configuración de permisos de IAM, consulta Usa permisos de IAM.
  4. Importa datos de varios archivos en paralelo a Cloud SQL:

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_NAME: el nombre del proyecto de Google Cloud que contiene el bucket de Cloud Storage que creaste.
    • INSTANCE_NAME: el nombre de la instancia de Cloud SQL desde la que importas archivos en paralelo.
    • BUCKET_NAME: el nombre del bucket de Cloud Storage.
    • BUCKET_PATH: la ruta de acceso al bucket en el que se almacenan los archivos de importación.
    • FOLDER_NAME: la carpeta en la que se almacenan los archivos de importación.
    • DATABASE_NAME: el nombre de la base de datos dentro de la instancia de Cloud SQL desde la que se realiza la importación. Debes especificar solo una base de datos.
    • THREAD_NUMBER: la cantidad de subprocesos que Cloud SQL usa para importar archivos en paralelo. Por ejemplo, si deseas importar tres archivos a la vez en paralelo, especifica 3 como el valor para este parámetro.

    HTTP method and URL:

    POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_NAME/instances/INSTANCE_NAME/import

    Cuerpo JSON de la solicitud:

    {
     "importContext":
       {
          "fileType": "SQL",
          "uri": "gs://BUCKET_NAME/BUCKET_PATH/FOLDER_NAME",
          "databases": ["DATABASE_NAME"],
          "offload": [TRUE|FALSE],
          "sqlImportOptions": {
            "parallel": [TRUE|FALSE],
            "threads": [THREAD_NUMBER]
           }
       }
    }
    

    Para enviar tu solicitud, expande una de estas opciones:

    Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

    Si quieres usar un usuario diferente para la importación, especifica la propiedad importContext.importUser.

    A fin de obtener una lista completa de los parámetros de la solicitud, consulta la página API de Cloud SQL Admin.
  5. Si no necesitas los permisos de IAM que configuraste en Roles y permisos obligatorios para importar a Cloud SQL para PostgreSQL, usa gsutil iam a fin de quitarlos.

Limitaciones

  • Si especificas demasiados subprocesos cuando importas o exportas datos de varios archivos en paralelo, es posible que uses más memoria de la que tiene tu instancia de Cloud SQL. Si esto ocurre, aparecerá un mensaje de error interno. Verifica el uso de memoria de tu instancia y aumenta el tamaño de la instancia, según sea necesario. Para obtener más información, consulta Información sobre la configuración de instancias.
  • Cuando se realiza una exportación, no se admiten comas en nombres de bases de datos o nombres de tablas en los campos databases o tables.
  • Asegúrate de tener suficiente espacio en el disco para la descarga inicial del archivo de volcado. De lo contrario, aparecerá un error no space left on disk.
  • Si tu instancia tiene solo una CPU virtual, no podrás importar ni exportar varios archivos en paralelo. La cantidad de CPU virtuales para tu instancia no puede ser menor que la cantidad de subprocesos que usas para la operación de importación o exportación, y la cantidad de subprocesos debe ser al menos dos.
  • La utilidad pg_dump no puede fragmentar ninguna tabla que exportes. Por lo tanto, si tienes una tabla muy grande, puede convertirse en un cuello de botella para la velocidad de la operación de exportación.

¿Qué sigue?