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.
- Sigue las prácticas recomendadas para exportar e importar datos.
- Después de completar una operación de importación, verifica los resultados.
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.
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:
- El rol Editor de Cloud SQL
- Un rol personalizado que incluya los siguientes permisos:
cloudsql.instances.get
cloudsql.instances.export
Además, la cuenta de servicio para la instancia de Cloud SQL debe tener uno de los siguientes roles:
- El rol de Identity and Access Management (IAM) llamado
storage.objectAdmin
- 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 utilidadpg_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:
- Crea un bucket de Cloud Storage.
- 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
- Para otorgar el rol de IAM
storage.objectAdmin
a la cuenta de servicio, usa el comandogcloud storage buckets add-iam-policy-binding
. Para obtener ayuda con la configuración de permisos de IAM, consulta Usa permisos de IAM. - 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 herramientapg_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
. - Si no necesitas el rol de IAM que configuraste en Roles y permisos necesarios para exportar desde Cloud SQL para PostgreSQL, revócalo.
Reemplaza INSTANCE_NAME por el nombre de tu instancia de Cloud SQL.
En el resultado, busca el valor asociado con el campo serviceAccountEmailAddress
.
REST v1
Para exportar datos de Cloud SQL a varios archivos en paralelo, completa los siguientes pasos:
- Crea un bucket de Cloud Storage:
Realiza los siguientes reemplazos:gcloud storage buckets create gs://BUCKET_NAME --project=PROJECT_NAME --location=LOCATION_NAME
- BUCKET_NAME: el nombre del bucket, sujeto a los requisitos de nomenclatura. Por ejemplo,
my-bucket
. - 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,
- 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. -
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:
- Si no necesitas el rol de IAM que configuraste en Roles y permisos necesarios para exportar desde Cloud SQL para PostgreSQL, revócalo.
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
.
REST v1beta4
Para exportar datos de Cloud SQL a varios archivos en paralelo, completa los siguientes pasos:
- Crea un bucket de Cloud Storage:
Realiza los siguientes reemplazos:gcloud storage buckets create gs://BUCKET_NAME --project=PROJECT_NAME --location=LOCATION_NAME
- BUCKET_NAME: el nombre del bucket, sujeto a los requisitos de nomenclatura. Por ejemplo,
my-bucket
. - 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,
- 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. -
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:
- Si no necesitas el rol de IAM que configuraste en Roles y permisos necesarios para exportar desde Cloud SQL para PostgreSQL, revócalo.
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
.
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:
- El rol Administrador de Cloud SQL
- Un rol personalizado que incluya los siguientes permisos:
cloudsql.instances.get
cloudsql.instances.import
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:
- Crea buckets de Cloud Storage.
Sube los archivos a tu bucket.
Para obtener ayuda con la carga de archivos en buckets, consulta Sube objetos desde archivos.
- 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
- Para otorgar el rol de IAM
storage.objectAdmin
a la cuenta de servicio, usa la utilidadgcloud storage buckets add-iam-policy-binding
. Para obtener ayuda con la configuración de permisos de IAM, consulta Usa permisos de IAM. - 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. - Si no necesitas los permisos de IAM que configuraste en Roles y permisos obligatorios para importar a Cloud SQL para PostgreSQL, usa
gcloud storage buckets remove-iam-policy-binding
a fin de quitarlos.
Reemplaza INSTANCE_NAME por el nombre de tu instancia de Cloud SQL.
En el resultado, busca el valor asociado con el campo serviceAccountEmailAddress
.
REST v1
Para importar datos de varios archivos en paralelo a Cloud SQL, completa los siguientes pasos:
- Crea un bucket de Cloud Storage:
Realiza los siguientes reemplazos:gcloud storage buckets create gs://BUCKET_NAME --project=PROJECT_NAME --location=LOCATION_NAME
- BUCKET_NAME: el nombre del bucket, sujeto a los requisitos de nomenclatura. Por ejemplo,
my-bucket
. - 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,
Sube los archivos a tu bucket.
Para obtener ayuda con la carga de archivos en buckets, consulta Sube objetos desde archivos.
- 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. 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], "clean": [TRUE|FALSE], "ifExists": [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
A fin de obtener una lista completa de los parámetros de la solicitud, consulta la página API de Cloud SQL Admin.importContext.importUser
.- Si no necesitas los permisos de IAM que configuraste en Roles y permisos obligatorios para importar a Cloud SQL para PostgreSQL, usa
gcloud storage buckets remove-iam-policy-binding
a fin de quitarlos.
REST v1beta4
Para importar datos de varios archivos en paralelo a Cloud SQL, completa los siguientes pasos:
- Crea un bucket de Cloud Storage:
Realiza los siguientes reemplazos:gcloud storage buckets create gs://BUCKET_NAME --project=PROJECT_NAME --location=LOCATION_NAME
- BUCKET_NAME: el nombre del bucket, sujeto a los requisitos de nomenclatura. Por ejemplo,
my-bucket
. - 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,
Sube los archivos a tu bucket.
Para obtener ayuda con la carga de archivos en buckets, consulta Sube objetos desde archivos.
- 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. 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], "clean": [TRUE|FALSE], "ifExists": [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
A fin de obtener una lista completa de los parámetros de la solicitud, consulta la página API de Cloud SQL Admin.importContext.importUser
.- Si no necesitas los permisos de IAM que configuraste en Roles y permisos obligatorios para importar a Cloud SQL para PostgreSQL, usa
gcloud storage buckets remove-iam-policy-binding
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
otables
. - 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?
- Aprende a comprobar el estado de las operaciones de importación y exportación.
- Obtén información sobre cómo cancelar la importación y exportación de datos.
- Obtén información sobre las prácticas recomendadas para importar y exportar datos.
- Obtén información sobre problemas conocidos de las importaciones y exportaciones.