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 MySQL a varios archivos en paralelo
Las siguientes secciones contienen información sobre la exportación de datos de Cloud SQL para MySQL a varios archivos en paralelo.
Roles y permisos necesarios a fin de exportar datos de Cloud SQL para MySQL 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 utilidaddumpInstance
.
Una vez que los archivos estén en Cloud Storage, puedes importarlos a otra base de datos de Cloud SQL. Si deseas acceder a los datos de los archivos de forma local, descarga los datos de Cloud Storage a tu entorno local.
Si tus archivos contienen cláusulas DEFINER (vistas, activadores, stored_procedures, etc.), según el orden en que se ejecuten estas declaraciones, el uso de estos archivos para la importación puede fallar. Obtén más información sobre el uso de DEFINER y las posibles soluciones en 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 (opcional): el nombre de las bases de datos dentro de la instancia de Cloud SQL desde la que se realiza la exportación. Si no especificas ninguna base de datos, Cloud SQL exporta todas las bases de datos para la instancia.
- 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 herramientamysqldump
.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 volcado de MySQL Shell.
- Si no necesitas el rol de IAM que configuraste en Roles y permisos necesarios para exportar desde Cloud SQL para MySQL, 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 (opcional): el nombre de las bases de datos dentro de la instancia de Cloud SQL desde la que se realiza la exportación. Si no especificas ninguna base de datos, Cloud SQL exporta todas las bases de datos para la instancia.
- 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 MySQL, 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 volcado de MySQL Shell.
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 (opcional): el nombre de las bases de datos dentro de la instancia de Cloud SQL desde la que se realiza la exportación. Si no especificas ninguna base de datos, Cloud SQL exporta todas las bases de datos para la instancia.
- 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 MySQL, 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 volcado de MySQL Shell.
Importa datos de varios archivos en paralelo a Cloud SQL para MySQL
Las siguientes secciones contienen información sobre la importación de datos de varios archivos en paralelo a Cloud SQL para MySQL.
Roles y permisos obligatorios a fin de importar datos de varios archivos en paralelo a Cloud SQL para MySQL
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 MySQL
Puedes importar datos en paralelo desde varios archivos que residen en Cloud Storage a tu base de datos. Para ello, usa la utilidad loadDump
.
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 (opcional): el nombre de las bases de datos dentro de la instancia de Cloud SQL desde la que se realiza la importación. Si no especificas ninguna base de datos, Cloud SQL importa todas las bases de datos para la instancia.
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 MySQL, 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 (opcional): el nombre de las bases de datos dentro de la instancia de Cloud SQL desde la que se realiza la importación. Si no especificas ninguna base de datos, Cloud SQL importa todas las bases de datos para la instancia.
- 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:
Para obtener una lista completa de los parámetros de la solicitud, consulta la página API de Cloud SQL Admin.- Si no necesitas los permisos de IAM que configuraste en Roles y permisos obligatorios para importar a Cloud SQL para MySQL, 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 (opcional): el nombre de las bases de datos dentro de la instancia de Cloud SQL desde la que se realiza la importación. Si no especificas ninguna base de datos, Cloud SQL importa todas las bases de datos para la instancia.
- 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:
Para obtener una lista completa de los parámetros de la solicitud, consulta la página API de Cloud SQL Admin.- Si no necesitas los permisos de IAM que configuraste en Roles y permisos obligatorios para importar a Cloud SQL para MySQL, 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.
- Si escribes declaraciones del lenguaje de definición de datos (DDL), como
CREATE
,DROP
oALTER
durante una operación de exportación, la operación puede fallar o los datos exportados pueden no ser coherentes con la instantánea de recuperación de un momento determinado. - Si una operación de importación falla, es posible que hayas importado parcialmente los datos restantes. En el caso de las declaraciones DDL, MySQL las confirma de forma automática. Si esto ocurre, antes de volver a importar los datos, limpia los datos parciales.
¿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.