En esta página se describe cómo exportar e importar archivos en instancias de Cloud SQL en paralelo.
Antes de empezar
Antes de iniciar una operación de exportación o importación:
- 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 la base de datos, pero no interfieren con las operaciones típicas de la base de datos, a menos que la instancia no tenga suficientes recursos.
Exportar datos de Cloud SQL para MySQL a varios archivos en paralelo
En las secciones siguientes se ofrece información sobre cómo exportar datos de Cloud SQL para MySQL a varios archivos en paralelo.
Roles y permisos necesarios para exportar datos de Cloud SQL para MySQL a varios archivos en paralelo
Para exportar datos de Cloud SQL a Cloud Storage, el usuario que inicie 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 de la instancia de Cloud SQL debe tener uno de los siguientes roles:
- El rol
storage.objectAdmin
Gestión de Identidades y Accesos (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 gestión de identidades y accesos, consulta Gestión de identidades y accesos.
Exportar datos a varios archivos en paralelo
Puede exportar datos en paralelo desde varios archivos que residen en Cloud SQL a Cloud Storage. Para ello, usa la utilidaddumpInstance
.
Una vez que los archivos estén en Cloud Storage, podrás importarlos a otra base de datos de Cloud SQL. Si quieres acceder a los datos de los archivos de forma local, descárgalos de Cloud Storage a tu entorno local.
Si tus archivos contienen cláusulas DEFINER (vistas, activadores, stored_procedures, etc.), es posible que no se puedan importar si se ejecutan en un orden determinado. Consulta más información sobre el uso de DEFINER y las posibles soluciones alternativas en Cloud SQL.
gcloud
Para exportar datos de Cloud SQL a varios archivos en paralelo, sigue estos pasos:
- Crea un segmento de Cloud Storage.
- Para encontrar la cuenta de servicio de la instancia de Cloud SQL desde la que vas a exportar archivos, usa el comando
gcloud sql instances describe
.gcloud sql instances describe INSTANCE_NAME
- Para asignar el
storage.objectAdmin
rol de gestión de identidades y accesos a la cuenta de servicio, usa el comandogcloud storage buckets add-iam-policy-binding
. 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. - 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
Haz las siguientes sustituciones:
- INSTANCE_NAME: el nombre de la instancia de Cloud SQL desde la que vas a exportar archivos en paralelo.
- BUCKET_NAME: el nombre del segmento de Cloud Storage.
- BUCKET_PATH: la ruta al segmento donde se almacenan los archivos de exportación.
- FOLDER_NAME: la carpeta en la que se almacenan los archivos de exportación.
- THREAD_NUMBER: número de subprocesos que usa Cloud SQL para exportar archivos en paralelo. Por ejemplo, si quiere exportar tres archivos a la vez en paralelo, especifique
3
como valor de este parámetro. - DATABASE_NAME (opcional): el nombre de las bases de datos de la instancia de Cloud SQL desde la que se realiza la exportación. Si no especificas ninguna base de datos, Cloud SQL exportará todas las bases de datos de la instancia.
- TABLE_EXPRESSION: las tablas que se van a exportar de la base de datos especificada.
El comando
export sql
no contiene activadores ni procedimientos almacenados, pero sí contiene vistas. Para exportar activadores o procedimientos almacenados, usa un solo subproceso para la exportación. En esta conversación se usa la herramientamysqldump
.Una vez completada la exportación, deberías tener archivos en una carpeta del segmento de Cloud Storage en formato de volcado de MySQL Shell.
- Si no necesitas el rol de gestión de identidades y accesos que has definido en Roles y permisos necesarios para exportar desde Cloud SQL para MySQL, revócalo.
Sustituye INSTANCE_NAME por el nombre de tu instancia de Cloud SQL.
En el resultado, busca el valor asociado al campo serviceAccountEmailAddress
.
REST v1
Para exportar datos de Cloud SQL a varios archivos en paralelo, sigue estos pasos:
- Crea un segmento de Cloud Storage:
Haz las siguientes sustituciones:gcloud storage buckets create gs://BUCKET_NAME --project=PROJECT_NAME --location=LOCATION_NAME
- BUCKET_NAME: el nombre del segmento, sujeto a los requisitos de nomenclatura. Por ejemplo,
my-bucket
. - PROJECT_NAME: el nombre del Google Cloud proyecto que contiene el segmento de Cloud Storage que vas a crear.
- LOCATION_NAME: la ubicación del contenedor en el que quieras almacenar los archivos que vas a exportar. Por ejemplo,
us-east1
.
- BUCKET_NAME: el nombre del segmento, sujeto a los requisitos de nomenclatura. Por ejemplo,
- Asigna a tu instancia el
legacyBucketWriter
rol de gestión de identidades y accesos de tu segmento. Para obtener ayuda sobre cómo definir permisos de gestión de identidades y accesos, consulta Usar permisos de gestión de identidades y accesos. -
Exportar datos de Cloud SQL a varios archivos en paralelo:
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- PROJECT_NAME: el nombre del Google Cloud proyecto que contiene el segmento de Cloud Storage que has creado.
- INSTANCE_NAME: el nombre de la instancia de Cloud SQL desde la que vas a exportar archivos en paralelo.
- BUCKET_NAME: el nombre del segmento de Cloud Storage.
- BUCKET_PATH: la ruta al segmento donde 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 de la instancia de Cloud SQL desde la que se realiza la exportación. Si no especificas ninguna base de datos, Cloud SQL exportará todas las bases de datos de la instancia.
- THREAD_NUMBER: número de subprocesos que usa Cloud SQL para exportar archivos en paralelo. Por ejemplo, si quiere exportar tres archivos a la vez en paralelo, especifique
3
como valor de este parámetro.
Método HTTP y 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, despliega una de estas opciones:
Deberías recibir una respuesta JSON similar a la siguiente:
- Si no necesitas el rol de gestión de identidades y accesos que has definido en Roles y permisos necesarios para exportar desde Cloud SQL para MySQL, revócalo.
Una vez completada la exportación, deberías tener archivos en una carpeta del segmento de Cloud Storage en formato de volcado de MySQL Shell.
REST v1beta4
Para exportar datos de Cloud SQL a varios archivos en paralelo, sigue estos pasos:
- Crea un segmento de Cloud Storage:
Haz las siguientes sustituciones:gcloud storage buckets create gs://BUCKET_NAME --project=PROJECT_NAME --location=LOCATION_NAME
- BUCKET_NAME: el nombre del segmento, sujeto a los requisitos de nomenclatura. Por ejemplo,
my-bucket
. - PROJECT_NAME: el nombre del Google Cloud proyecto que contiene el segmento de Cloud Storage que vas a crear.
- LOCATION_NAME: la ubicación del contenedor en el que quieras almacenar los archivos que vas a exportar. Por ejemplo,
us-east1
.
- BUCKET_NAME: el nombre del segmento, sujeto a los requisitos de nomenclatura. Por ejemplo,
- Asigna a tu instancia el
storage.objectAdmin
rol de gestión de identidades y accesos de tu segmento. Para obtener ayuda sobre cómo definir permisos de gestión de identidades y accesos, consulta Usar permisos de gestión de identidades y accesos. -
Exportar datos de Cloud SQL a varios archivos en paralelo:
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- PROJECT_NAME: el nombre del Google Cloud proyecto que contiene el segmento de Cloud Storage que has creado.
- INSTANCE_NAME: el nombre de la instancia de Cloud SQL desde la que vas a exportar archivos en paralelo.
- BUCKET_NAME: el nombre del segmento de Cloud Storage.
- BUCKET_PATH: la ruta al segmento donde 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 de la instancia de Cloud SQL desde la que se realiza la exportación. Si no especificas ninguna base de datos, Cloud SQL exportará todas las bases de datos de la instancia.
- THREAD_NUMBER: número de subprocesos que usa Cloud SQL para exportar archivos en paralelo. Por ejemplo, si quiere exportar tres archivos a la vez en paralelo, especifique
3
como valor de este parámetro.
Método HTTP y 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, despliega una de estas opciones:
Deberías recibir una respuesta JSON similar a la siguiente:
- Si no necesitas el rol de gestión de identidades y accesos que has definido en Roles y permisos necesarios para exportar desde Cloud SQL para MySQL, revócalo.
Una vez completada la exportación, deberías tener archivos en una carpeta del segmento de Cloud Storage en formato de volcado de MySQL Shell.
Importar datos de varios archivos en paralelo a Cloud SQL para MySQL
En las siguientes secciones se ofrece información sobre cómo importar datos de varios archivos en paralelo a Cloud SQL para MySQL.
Roles y permisos necesarios para importar datos de varios archivos en paralelo a Cloud SQL para MySQL
Para importar datos de Cloud Storage a Cloud SQL, el usuario que inicie 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 de la instancia de Cloud SQL debe tener uno de los siguientes roles:
- Rol de gestión de identidades y accesos
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 gestión de identidades y accesos, consulta Gestión de identidades y accesos.
Importar datos en Cloud SQL para MySQL
Puede importar datos en paralelo desde varios archivos que residan en Cloud Storage a su base de datos. Para ello, usa la utilidad loadDump
.
gcloud
Para importar datos de varios archivos en paralelo a Cloud SQL, siga estos pasos:
- Crea un segmento de Cloud Storage.
Sube los archivos a tu segmento.
Para obtener ayuda sobre cómo subir archivos a los contenedores, consulta Subir objetos desde archivos.
- Para encontrar la cuenta de servicio de la instancia de Cloud SQL a la que vas a importar archivos, usa el comando
gcloud sql instances describe
.gcloud sql instances describe INSTANCE_NAME
- Para asignar el
storage.objectAdmin
rol de gestión de identidades y accesos a la cuenta de servicio, usa la utilidadgcloud storage buckets add-iam-policy-binding
. 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. - 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 \ --parallel \ --threads=THREAD_NUMBER \ --database=DATABASE_NAME
Haz las siguientes sustituciones:
- INSTANCE_NAME: el nombre de la instancia de Cloud SQL a la que vas a importar archivos en paralelo.
- BUCKET_NAME: el nombre del segmento de Cloud Storage.
- BUCKET_PATH: la ruta al segmento 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: número de subprocesos que usa Cloud SQL para importar archivos en paralelo. Por ejemplo, si quiere importar tres archivos a la vez en paralelo, especifique
3
como valor de este parámetro. - DATABASE_NAME (opcional): nombre de las bases de datos de la instancia de Cloud SQL desde la que se realiza la importación. Si no especificas ninguna base de datos, Cloud SQL importará todas las bases de datos de la instancia.
Si el comando devuelve un error como
ERROR_RDBMS
, revisa los permisos, ya que este error suele deberse a problemas con los permisos. - Si no necesitas los permisos de gestión de identidades y accesos que has definido en Roles y permisos necesarios para importar a Cloud SQL para MySQL, usa
gcloud storage buckets remove-iam-policy-binding
para quitarlos.
Sustituye INSTANCE_NAME por el nombre de tu instancia de Cloud SQL.
En el resultado, busca el valor asociado al campo serviceAccountEmailAddress
.
REST v1
Para importar datos de varios archivos en paralelo a Cloud SQL, siga estos pasos:
- Crea un segmento de Cloud Storage:
Haz las siguientes sustituciones:gcloud storage buckets create gs://BUCKET_NAME --project=PROJECT_NAME --location=LOCATION_NAME
- BUCKET_NAME: el nombre del segmento, sujeto a los requisitos de nomenclatura. Por ejemplo,
my-bucket
. - PROJECT_NAME: el nombre del Google Cloud proyecto que contiene el segmento de Cloud Storage que vas a crear.
- LOCATION_NAME: la ubicación del contenedor en el que quieres almacenar los archivos que vas a importar. Por ejemplo,
us-east1
.
- BUCKET_NAME: el nombre del segmento, sujeto a los requisitos de nomenclatura. Por ejemplo,
Sube los archivos a tu segmento.
Para obtener ayuda sobre cómo subir archivos a los contenedores, consulta Subir objetos desde archivos.
- Proporciona a tu instancia el
storage.objectAdmin
rol de gestión de identidades y accesos para tu segmento. Para obtener ayuda sobre cómo definir permisos de gestión de identidades y accesos, consulta el artículo Usar permisos de gestión de identidades y accesos. Importar datos de varios archivos en paralelo en Cloud SQL:
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- PROJECT_NAME: el nombre del Google Cloud proyecto que contiene el segmento de Cloud Storage que has creado.
- INSTANCE_NAME: el nombre de la instancia de Cloud SQL a la que vas a importar archivos en paralelo.
- BUCKET_NAME: el nombre del segmento de Cloud Storage.
- BUCKET_PATH: la ruta al segmento 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): nombre de las bases de datos de la instancia de Cloud SQL desde la que se realiza la importación. Si no especificas ninguna base de datos, Cloud SQL importará todas las bases de datos de la instancia.
- THREAD_NUMBER: número de subprocesos que usa Cloud SQL para importar archivos en paralelo. Por ejemplo, si quiere importar tres archivos a la vez en paralelo, especifique
3
como valor de este parámetro.
Método HTTP y 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, despliega una de estas opciones:
Deberías recibir una respuesta JSON similar a la siguiente:
Para ver la lista completa de parámetros de la solicitud, consulta la página de la API Admin de Cloud SQL.- Si no necesitas los permisos de gestión de identidades y accesos que has definido en Roles y permisos necesarios para importar a Cloud SQL para MySQL, usa
gcloud storage buckets remove-iam-policy-binding
para quitarlos.
REST v1beta4
Para importar datos de varios archivos en paralelo a Cloud SQL, siga estos pasos:
- Crea un segmento de Cloud Storage:
Haz las siguientes sustituciones:gcloud storage buckets create gs://BUCKET_NAME --project=PROJECT_NAME --location=LOCATION_NAME
- BUCKET_NAME: el nombre del segmento, sujeto a los requisitos de nomenclatura. Por ejemplo,
my-bucket
. - PROJECT_NAME: el nombre del Google Cloud proyecto que contiene el segmento de Cloud Storage que vas a crear.
- LOCATION_NAME: la ubicación del contenedor en el que quieres almacenar los archivos que vas a importar. Por ejemplo,
us-east1
.
- BUCKET_NAME: el nombre del segmento, sujeto a los requisitos de nomenclatura. Por ejemplo,
Sube los archivos a tu segmento.
Para obtener ayuda sobre cómo subir archivos a los contenedores, consulta Subir objetos desde archivos.
- Proporciona a tu instancia el
storage.objectAdmin
rol de gestión de identidades y accesos para tu segmento. Para obtener ayuda sobre cómo definir permisos de gestión de identidades y accesos, consulta el artículo Usar permisos de gestión de identidades y accesos. Importar datos de varios archivos en paralelo en Cloud SQL:
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- PROJECT_NAME: el nombre del Google Cloud proyecto que contiene el segmento de Cloud Storage que has creado.
- INSTANCE_NAME: el nombre de la instancia de Cloud SQL desde la que vas a importar archivos en paralelo.
- BUCKET_NAME: el nombre del segmento de Cloud Storage.
- BUCKET_PATH: la ruta al segmento 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): nombre de las bases de datos de la instancia de Cloud SQL desde la que se realiza la importación. Si no especificas ninguna base de datos, Cloud SQL importará todas las bases de datos de la instancia.
- THREAD_NUMBER: número de subprocesos que usa Cloud SQL para importar archivos en paralelo. Por ejemplo, si quiere importar tres archivos a la vez en paralelo, especifique
3
como valor de este parámetro.
Método HTTP y 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, despliega una de estas opciones:
Deberías recibir una respuesta JSON similar a la siguiente:
Para ver la lista completa de parámetros de la solicitud, consulta la página de la API Admin de Cloud SQL.- Si no necesitas los permisos de gestión de identidades y accesos que has definido en Roles y permisos necesarios para importar a Cloud SQL para MySQL, usa
gcloud storage buckets remove-iam-policy-binding
para quitarlos.
Limitaciones
Si especificas demasiados subprocesos al importar o exportar 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. Comprueba el uso de memoria de tu instancia y aumenta su tamaño si es necesario. Para obtener más información, consulta Acerca de la configuración de instancias.
Cuando se realiza una exportación, no se admiten comas en los nombres de las bases de datos ni en los nombres de las tablas de los campos
databases
otables
.Asegúrate de que tienes suficiente espacio en disco para descargar el archivo de volcado inicial. De lo contrario, aparecerá un error
no space left on disk
.Si tu instancia solo tiene una CPU virtual (vCPU), no podrás importar ni exportar varios archivos en paralelo. El número de vCPUs de tu instancia no puede ser inferior al número de hilos que estés usando para la operación de importación o exportación, y el número de hilos debe ser al menos dos.
Las importaciones y exportaciones multiproceso (paralelas) no son compatibles con las importaciones y exportaciones de un solo proceso. Por ejemplo, los archivos de volcado generados por una exportación de un solo subproceso solo se pueden importar mediante importaciones de un solo subproceso. Del mismo modo, los archivos de volcado generados por exportaciones paralelas solo se pueden importar mediante importaciones paralelas.
Si escribes instrucciones de lenguaje de definición de datos (DDL), como
CREATE
,DROP
oALTER
, durante una operación de exportación, es posible que la operación falle o que los datos exportados no sean coherentes con la instantánea de recuperación a un momento dado.Si falla una operación de importación, es posible que queden datos importados parcialmente. MySQL confirma las instrucciones DDL automáticamente. Si esto ocurre, antes de volver a importar los datos, limpia las instrucciones DDL y los datos.
Al igual que en una operación de importación paralela de una sola base de datos, antes de ejecutar una operación de importación paralela de una instancia completa, asegúrate de que se hayan creado todas las bases de datos.
Siguientes pasos
- Obtén más información sobre cómo comprobar el estado de las operaciones de importación y exportación.
- Consulta cómo cancelar la importación y exportación de datos.
- Consulta las prácticas recomendadas para importar y exportar datos.
- Consulta los problemas conocidos de importación y exportación.