Esta página describe cómo exportar e importar datos a instancias de Cloud SQL mediante archivos de volcado de SQL.
Antes de empezar
Las exportaciones utilizan recursos de la base de datos, pero no interfieren con las operaciones normales de la base de datos a menos que la instancia tenga un suministro insuficiente.
Para conocer las mejores prácticas, consulte Mejores prácticas para importar y exportar datos .
Después de completar una operación de importación, verifique los resultados.
Exportar datos de Cloud SQL para MySQL
Roles y permisos necesarios para exportar desde Cloud SQL para MySQL
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 de editor de Cloud SQL
- Un rol personalizado , que incluye 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:
- La función de administración de identidades y accesos (IAM)
storage.objectAdmin
- Un rol personalizado, que incluye 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, consulte Administración de identidad y acceso .
Exportar a un archivo de volcado de SQL desde Cloud SQL para MySQL
Para crear un archivo de volcado de SQL, exporta los datos de Cloud SQL a Cloud Storage. Una vez que el archivo esté en Cloud Storage, puedes importarlo a otra base de datos de Cloud SQL. También puedes descargar los datos de Cloud Storage a tu entorno local si deseas acceder a ellos localmente. Para exportar desde Cloud SQL, se utiliza la utilidad mysqldump con las opciones --single-transaction
--single-transaction
y --hex-blob
. Con esta opción, mysqldump
inicia una transacción antes de ejecutarse. En lugar de bloquear toda la base de datos, mysqldump
la lee en su estado actual, lo que genera un volcado de datos consistente.
Si su archivo de volcado de SQL contiene cláusulas DEFINER (vistas, disparadores, procedimientos almacenados, etc.), dependiendo del orden en que se ejecuten estas sentencias, el uso de este archivo para la importación podría fallar. Obtenga más información sobre el uso de DEFINER y posibles soluciones alternativas en Cloud SQL.
Para exportar datos desde una base de datos en una instancia de Cloud SQL a un archivo de volcado de SQL en un depósito de Cloud Storage:
Consola
En el Google Cloud consola, vaya a la página Instancias de Cloud SQL .
- Para abrir la página Descripción general de una instancia, haga clic en el nombre de la instancia.
- Haga clic en Exportar .
- En la sección Formato de archivo , haga clic en SQL para crear un archivo de volcado de SQL.
- En la sección Datos a exportar , haga clic en Una o más bases de datos en esta instancia para exportar bases de datos específicas.
- Utilice el menú desplegable para seleccionar las bases de datos que desea exportar.
- En la sección Destino , seleccione Explorar para buscar un depósito o carpeta de Cloud Storage para su exportación.
- Haga clic en Exportar para comenzar la exportación.
nube g
- Crear un depósito de almacenamiento en la nube .
- Busca la cuenta de servicio de la instancia de Cloud SQL desde la que estás exportando. Puedes hacerlo ejecutando el comando
gcloud sql instances describe
. Busca el camposerviceAccountEmailAddress
en la salida.gcloud sql instances describe INSTANCE_NAME
- Use
gcloud storage buckets add-iam-policy-binding
para otorgar el rol de IAMstorage.objectAdmin
a la cuenta de servicio. Para obtener ayuda con la configuración de permisos de IAM, consulte Uso de permisos de IAM . - Exporta la base de datos a tu depósito de Cloud Storage:
gcloud sql export sql INSTANCE_NAME gs://BUCKET_NAME/sqldumpfile.gz \ --database=DATABASE_NAME \ --offload
El comando
export sql
no contiene desencadenadores ni procedimientos almacenados, pero sí vistas. Para exportar desencadenadores o procedimientos almacenados, utilice la herramienta mysqldump .Para obtener más información sobre el uso del comando
export sql
, consulte la página de referencia del comandosql export sql
. - Si no necesita conservar la función de IAM que configuró anteriormente, revocarla ahora.
REST versión 1
- Crear un depósito para la exportación:
gcloud storage buckets create gs://BUCKET_NAME --project=PROJECT_NAME --location=LOCATION_NAME
Este paso no es obligatorio, pero es muy recomendable, para no abrir el acceso a ningún otro dato.
- Asigne a su instancia el rol de IAM
legacyBucketWriter
para su bucket. Para obtener ayuda con la configuración de permisos de IAM, consulte Uso de permisos de IAM . - Exportar su base de datos:
Antes de utilizar cualquiera de los datos solicitados, realice las siguientes sustituciones:
- PROJECT_ID : el ID del proyecto
- INSTANCE_ID : el ID de la instancia
- BUCKET_NAME : el nombre del depósito de Cloud Storage
- PATH_TO_DUMP_FILE : la ruta al archivo de volcado de SQL
- DATABASE_NAME_1 : el nombre de una base de datos dentro de la instancia de Cloud SQL
- DATABASE_NAME_2 : el nombre de una base de datos dentro de la instancia de Cloud SQL
- Si no necesita conservar la función IAM que configuró anteriormente, elimínela ahora.
Método HTTP y URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/export
Cuerpo JSON de la solicitud:
{ "exportContext": { "fileType": "SQL", "uri": "gs://BUCKET_NAME/PATH_TO_DUMP_FILE", "databases": ["DATABASE_NAME"], "offload": TRUE | FALSE } }
Para enviar su solicitud, expanda una de estas opciones:
Debería recibir una respuesta JSON similar a la siguiente:
REST v1beta4
- Crear un depósito para la exportación:
gcloud storage buckets create gs://BUCKET_NAME --project=PROJECT_NAME --location=LOCATION_NAME
Este paso no es obligatorio, pero es muy recomendable, para no abrir el acceso a ningún otro dato.
- Asigne a su instancia el rol de IAM
storage.objectAdmin
para su bucket. Para obtener ayuda con la configuración de permisos de IAM, consulte Uso de permisos de IAM . - Exportar su base de datos:
Antes de utilizar cualquiera de los datos solicitados, realice las siguientes sustituciones:
- PROJECT_ID : el ID del proyecto
- INSTANCE_ID : el ID de la instancia
- BUCKET_NAME : el nombre del depósito de Cloud Storage
- PATH_TO_DUMP_FILE : la ruta al archivo de volcado de SQL
- DATABASE_NAME_1 : el nombre de una base de datos dentro de la instancia de Cloud SQL
- DATABASE_NAME_2 : el nombre de una base de datos dentro de la instancia de Cloud SQL
- Si no necesita conservar la función de IAM que configuró anteriormente, revocarla ahora.
Método HTTP y URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/export
Cuerpo JSON de la solicitud:
{ "exportContext": { "fileType": "SQL", "uri": "gs://BUCKET_NAME/PATH_TO_DUMP_FILE", "databases": ["DATABASE_NAME"], "offload": TRUE | FALSE } }
Para enviar su solicitud, expanda una de estas opciones:
Debería recibir una respuesta JSON similar a la siguiente:
Exportar desde su servidor MySQL local usando mysqldump
Si está exportando datos desde una base de datos MySQL local para importarlos a una base de datos Cloud SQL, debe usar la utilidad mysqldump
con los siguientes indicadores:
-
--databases
Debe utilizar la opción--databases
para especificar una lista explícita de bases de datos para exportar, y esta lista no debe contener la base de datos del sistemamysql
. -
--hex-blob
Si su base de datos contiene campos binarios, debe usar este indicador para garantizar que sus campos binarios se importen correctamente. -
--set-gtid-purged=OFF
La información de GTID no debe incluirse en el archivo de volcado de SQL, y el registro binario no debe estar deshabilitado por este. (No es necesario para MySQL 5.5 ni para la replicación externa). -
--single-transaction
Inicia una transacción antes de ejecutarse. En lugar de bloquear toda la base de datos, esto permite que mysqldump la lea en su estado actual, lo que genera un volcado de datos consistente.
Desde una línea de comandos, ejecute mysqldump
:
mysqldump --databases DATABASE_NAME -h INSTANCE_IP -u USERNAME -p \ --hex-blob --single-transaction --set-gtid-purged=OFF \ --default-character-set=utf8mb4 > SQL_FILE.sql
Para obtener ayuda con mysqldump
, consulte la referencia de mysqldump .
Replicación externa a Cloud SQL para MySQL
Para crear un archivo de volcado para usar en una configuración de servidor externo, consulte Replicación desde un servidor externo .
Importar datos a Cloud SQL para MySQL
Roles y permisos necesarios para importar 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 de administrador de Cloud SQL
- Un rol personalizado , que incluye 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:
- La función de IAM
storage.objectAdmin
- Un rol personalizado, que incluye los siguientes permisos:
-
storage.objects.get
-
storage.objects.list
(solo para importar archivos en paralelo)
-
Para obtener ayuda con los roles de IAM, consulte Administración de identidad y acceso .
Importar un archivo de volcado de SQL a Cloud SQL para MySQL
Los archivos SQL son archivos de texto simple con una secuencia de comandos SQL.
Consola
En el Google Cloud consola, vaya a la página Instancias de Cloud SQL .
- Para abrir la página Descripción general de una instancia, haga clic en el nombre de la instancia.
- Haga clic en Importar .
- En la sección Elija el archivo desde el cual desea importar datos , ingrese la ruta al depósito y el archivo de volcado de SQL que se usará para la importación, o busque un archivo existente.
Puede importar un archivo comprimido (
.gz
) o sin comprimir (.sql
). - Para Formato , seleccione SQL .
Seleccione la base de datos a la que desea importar los datos.
Esto hace que Cloud SQL ejecute la instrucción
USE DATABASE
antes de la importación.Si desea especificar un usuario para realizar la importación, seleccione el usuario.
Si su archivo de importación contiene instrucciones que debe realizar un usuario específico, utilice este campo para especificar ese usuario.
- Haga clic en Importar para iniciar la importación.
nube g
- Crear un depósito de almacenamiento en la nube.
Sube el archivo a tu bucket.
Para obtener ayuda con la carga de archivos a los depósitos, consulte Cargar objetos .
- Describe la instancia a la que estás importando:
gcloud sql instances describe INSTANCE_NAME
- Copie el campo
serviceAccountEmailAddress
. - Utilice
gcloud storage buckets add-iam-policy-binding
para otorgar la función de IAMstorage.objectAdmin
a la cuenta de servicio para el bucket. Para obtener ayuda con la configuración de permisos de IAM, consulte Uso de permisos de IAM .gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount:SERVICE-ACCOUNT \ --role=roles/storage.objectAdmin
- Importar la base de datos:
gcloud sql import sql INSTANCE_NAME gs://BUCKET_NAME/IMPORT_FILE_NAME \ --database=DATABASE_NAME
Para obtener información sobre el uso del comando
import sql
, consulte la página de referencia del comandosql import sql
.Si el comando devuelve un error como
ERROR_RDBMS
, revise los permisos; este error a menudo se debe a problemas de permisos. - Si no necesita conservar los permisos de IAM que configuró anteriormente, elimínelos utilizando
gcloud storage buckets remove-iam-policy-binding
.
REST versión 1
Cree un archivo de volcado de SQL. Las instrucciones vinculadas establecen indicadores que lo hacen compatible con Cloud SQL.
- Si está importando datos desde un servidor MySQL local:
- Crear un archivo de volcado de SQL .
- Crear un depósito en Cloud Storage .
- Sube el archivo de volcado de SQL al depósito de Cloud Storage.
- Si está importando datos desde otra instancia de Cloud SQL, consulte las instrucciones en Exportar datos desde Cloud SQL a un archivo de volcado de SQL .
- Crear un depósito de almacenamiento en la nube.
Sube el archivo a tu bucket.
Para obtener ayuda con la carga de archivos a los depósitos, consulte Cargar objetos .
- Proporcione a su instancia los roles de IAM
legacyBucketWriter
yobjectViewer
para su bucket. Para obtener ayuda con la configuración de permisos de IAM, consulte Uso de permisos de IAM . - Importa tu archivo de volcado:
Antes de utilizar cualquiera de los datos solicitados, realice las siguientes sustituciones:
- project-id : El ID del proyecto
- instance-id : El ID de la instancia
- bucket_name : El nombre del depósito de almacenamiento en la nube
- path_to_sql_file : La ruta al archivo SQL
- database_name : El nombre de una base de datos dentro de la instancia de Cloud SQL
Método HTTP y URL:
POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/import
Cuerpo JSON de la solicitud:
{ "importContext": { "fileType": "SQL", "uri": "gs://bucket_name/path_to_sql_file", "database": "database_name" } }
Para enviar su solicitud, expanda una de estas opciones:
Debería recibir una respuesta JSON similar a la siguiente:
Para obtener la lista completa de parámetros para la solicitud, consulte la página instancias:import . - Si no necesita conservar los permisos de IAM que configuró anteriormente, elimínelos ahora.
REST v1beta4
Cree un archivo de volcado de SQL. Las instrucciones vinculadas establecen indicadores que lo hacen compatible con Cloud SQL.
- Si está importando datos desde un servidor MySQL local:
- Crear un archivo de volcado de SQL .
- Crear un depósito en Cloud Storage .
- Sube el archivo de volcado de SQL al depósito de Cloud Storage.
- Si está importando datos desde otra instancia de Cloud SQL, consulte las instrucciones en Exportar datos desde Cloud SQL a un archivo de volcado de SQL .
- Crear un depósito de almacenamiento en la nube.
Sube el archivo a tu bucket.
Para obtener ayuda con la carga de archivos a los depósitos, consulte Cargar objetos .
- Asigne a su instancia el rol de IAM
storage.objectAdmin
para su bucket. Para obtener ayuda con la configuración de permisos de IAM, consulte Uso de permisos de IAM . - Importa tu archivo de volcado:
Antes de utilizar cualquiera de los datos solicitados, realice las siguientes sustituciones:
- project-id : El ID del proyecto
- instance-id : El ID de la instancia
- bucket_name : El nombre del depósito de almacenamiento en la nube
- path_to_sql_file : La ruta al archivo SQL
- database_name : El nombre de una base de datos dentro de la instancia de Cloud SQL
Método HTTP y URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/import
Cuerpo JSON de la solicitud:
{ "importContext": { "fileType": "SQL", "uri": "gs://bucket_name/path_to_sql_file", "database": "database_name" } }
Para enviar su solicitud, expanda una de estas opciones:
Debería recibir una respuesta JSON similar a la siguiente:
Para obtener la lista completa de parámetros para la solicitud, consulte la página instancias:import . - Si no necesita conservar los permisos de IAM que configuró anteriormente, elimínelos ahora.
¿Qué sigue?
- Aprenda a consultar el estado de sus operaciones de importación y exportación .
- Obtenga más información sobre las mejores prácticas para importar y exportar datos .
- Obtenga más información sobre el almacenamiento en la nube .
- Problemas conocidos de importaciones y exportaciones .