En esta página se describe cómo exportar e importar datos en instancias de Cloud SQL mediante archivos de volcado de SQL.
Antes de empezar
Las exportaciones usan recursos de la base de datos, pero no interfieren con las operaciones normales de la base de datos, a menos que la instancia no tenga suficientes recursos.
Para consultar las prácticas recomendadas, consulta el artículo Prácticas recomendadas para importar y exportar datos.
Después de completar una operación de importación, verifica los resultados.
Exportar datos de Cloud SQL para MySQL
Roles y permisos necesarios para exportar datos de Cloud SQL para MySQL
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 a un archivo de volcado de SQL desde Cloud SQL para MySQL
Para crear un archivo de volcado de SQL, exporta 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 datos de Cloud Storage en tu entorno local si quieres acceder a ellos de forma local.Para exportar datos de Cloud SQL, se usa la utilidad mysqldump con las opciones --single-transaction
y --hex-blob
. Con la opción --single-transaction
, mysqldump
inicia una transacción antes de ejecutarse. En lugar de bloquear toda la base de datos, esto permite que mysqldump
lea la base de datos en el estado actual, lo que da lugar a un volcado de datos coherente.
Si el archivo de volcado de SQL contiene cláusulas DEFINER (vistas, activadores, stored_procedures, etc.), es posible que no se pueda importar con este archivo, en función del orden en el que se ejecuten estas instrucciones. Consulta más información sobre el uso de DEFINER y las posibles soluciones alternativas en Cloud SQL.
Para exportar datos de una base de datos de una instancia de Cloud SQL a un archivo de volcado de SQL en un segmento de Cloud Storage, sigue estos pasos:
Consola
-
En la Google Cloud consola, ve a la página Instancias de Cloud SQL.
- Para abrir la página Overview (Resumen) de una instancia, haz clic en su nombre.
- Haz clic en Exportar.
- En la sección Formato de archivo, haz clic en SQL para crear un archivo de volcado de SQL.
- En la sección Datos que se van a exportar, haga clic en Al menos una base de datos de esta instancia para exportar bases de datos específicas.
- Utilice el menú desplegable para seleccionar las bases de datos de las que quiera exportar datos.
- En la sección Destino, selecciona Buscar para buscar un segmento o una carpeta de Cloud Storage para la exportación.
- Haz clic en Exportar para iniciar la exportación.
gcloud
- Crea un segmento de Cloud Storage.
- Busca la cuenta de servicio de la instancia de Cloud SQL desde la que vas a exportar los datos. Para ello, ejecuta el comando
gcloud sql instances describe
. Busca el camposerviceAccountEmailAddress
en el resultado.gcloud sql instances describe INSTANCE_NAME
- Usa
gcloud storage buckets add-iam-policy-binding
para asignar elstorage.objectAdmin
rol de gestión de identidades y accesos a la cuenta de servicio. Para obtener ayuda con la configuración de los permisos de gestión de identidades y accesos, consulta Usar permisos de gestión de identidades y accesos. - Exporta la base de datos a tu segmento de Cloud Storage:
gcloud sql export sql INSTANCE_NAME gs://BUCKET_NAME/sqldumpfile.gz \ --database=DATABASE_NAME \ --offload
El comando
export sql
no contiene activadores ni procedimientos almacenados, pero sí vistas. Para exportar activadores o procedimientos almacenados, usa la herramienta mysqldump.Para obtener más información sobre el uso del comando
export sql
, consulta la página de referencia del comandosql export sql
. - Si no necesitas conservar el rol de gestión de identidades y accesos que has definido anteriormente, revócalo ahora.
REST v1
- Crea un segmento para la exportación:
gcloud storage buckets create gs://BUCKET_NAME --project=PROJECT_NAME --location=LOCATION_NAME
Aunque este paso no es obligatorio, se recomienda efectuarlo para no tener que abrir acceso a otros datos.
- Asigna a tu instancia el
legacyBucketWriter
rol de gestión de identidades y accesos de tu segmento. 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. - Exporta tu base de datos:
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- PROJECT_ID: el ID del proyecto
- INSTANCE_ID: el ID de instancia
- BUCKET_NAME: el nombre del segmento 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 necesitas conservar el rol de gestión de identidades y accesos que has definido anteriormente, quítalo 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 tu solicitud, despliega una de estas opciones:
Deberías recibir una respuesta JSON similar a la siguiente:
REST v1beta4
- Crea un segmento para la exportación:
gcloud storage buckets create gs://BUCKET_NAME --project=PROJECT_NAME --location=LOCATION_NAME
Aunque este paso no es obligatorio, se recomienda efectuarlo para no tener que abrir acceso a otros datos.
- Asigna a tu instancia el
storage.objectAdmin
rol de gestión de identidades y accesos de tu segmento. 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. - Exporta tu base de datos:
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- PROJECT_ID: el ID del proyecto
- INSTANCE_ID: el ID de instancia
- BUCKET_NAME: el nombre del segmento 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 necesitas conservar el rol de gestión de identidades y accesos que has definido anteriormente, revócalo 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 tu solicitud, despliega una de estas opciones:
Deberías recibir una respuesta JSON similar a la siguiente:
Exportar desde tu servidor MySQL local con mysqldump
Si exportas datos de una base de datos MySQL local para importarlos en una base de datos de Cloud SQL, debes usar la utilidad mysqldump
con las siguientes marcas:
--databases
Debes usar la opción--databases
para especificar una lista explícita de bases de datos que quieras exportar. Esta lista no debe contener la base de datos del sistemamysql
.--hex-blob
Si tu base de datos contiene campos binarios, debes usar esta marca para asegurarte de que se importan 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 inhabilitarse mediante el archivo de volcado de SQL. (No es necesario para MySQL 5.5 ni para la replicación externa).--single-transaction
Inicia una transacción antes de ejecutarla. En lugar de bloquear toda la base de datos, esto permite que mysqldump lea la base de datos en el estado actual, lo que da como resultado un volcado de datos coherente.
En una línea de comandos, ejecuta 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
, consulta la
referencia de mysqldump.
Replicación externa a Cloud SQL para MySQL
Para crear un archivo de volcado que se pueda usar en una configuración de servidor externo, consulta Replicar desde un servidor externo.
Importar datos en Cloud SQL para MySQL
Roles y permisos necesarios para importar datos 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 un archivo de volcado de SQL en Cloud SQL para MySQL
Los archivos SQL son archivos de texto sin formato con una secuencia de comandos de SQL.
Consola
-
En la Google Cloud consola, ve a la página Instancias de Cloud SQL.
- Para abrir la página Overview (Resumen) de una instancia, haz clic en su nombre.
- Haz clic en Importar.
- En la sección Choose the file you'd like to import data from (Elige el archivo del que quieres importar los datos), introduce la ruta de acceso al archivo de volcado de SQL y al bucket que quieras usar para la importación, busca un archivo o sube un archivo local.
Puedes importar un archivo comprimido (
.gz
) o sin comprimir (.sql
). - En Formato, selecciona SQL.
Selecciona la base de datos en la que quieres importar los datos.
De esta forma, Cloud SQL ejecuta la instrucción
USE DATABASE
antes de la importación.Si quieres especificar un usuario para realizar la importación, selecciona el usuario.
Si el archivo de importación contiene instrucciones que debe ejecutar un usuario específico, utilice este campo para especificarlo.
- Haz clic en Importar para iniciar la importación.
gcloud
- Crea un segmento de Cloud Storage.
Sube el archivo al segmento.
Para obtener ayuda sobre cómo subir archivos a los contenedores, consulta el artículo Subir objetos.
- Describe la instancia en la que vas a importar los datos:
gcloud sql instances describe INSTANCE_NAME
- Copia el campo
serviceAccountEmailAddress
. - Usa
gcloud storage buckets add-iam-policy-binding
para asignar elstorage.objectAdmin
rol de gestión de identidades y accesos a la cuenta de servicio del cubo. Para obtener ayuda sobre cómo configurar permisos de gestión de identidades y accesos, consulta el artículo sobre cómo usar permisos de gestión de identidades y accesos.gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount:SERVICE-ACCOUNT \ --role=roles/storage.objectAdmin
- Importa 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
, consulta la página de referencia del comandosql import sql
.Si el comando devuelve un error como
ERROR_RDBMS
, revisa los permisos, ya que este error suele deberse a problemas de permisos. - Si no necesitas conservar los permisos de gestión de identidades y accesos que hayas definido anteriormente, quítalos con
gcloud storage buckets remove-iam-policy-binding
.
REST v1
-
Crea un archivo de volcado de SQL. Las instrucciones vinculadas definen determinadas marcas que hacen que el archivo de volcado sea compatible con Cloud SQL.
- Si vas a importar datos desde un servidor MySQL local:
- Crea un archivo de volcado de SQL.
- Crea un segmento en Cloud Storage.
- Sube el archivo de volcado de SQL al depósito de Cloud Storage.
- Si vas a importar datos de otra instancia de Cloud SQL, consulta las instrucciones del artículo Exportar datos de Cloud SQL a un archivo de volcado de SQL.
- Crea un segmento de Cloud Storage.
Sube el archivo al segmento.
Para obtener ayuda sobre cómo subir archivos a los contenedores, consulta el artículo Subir objetos.
- Proporciona a tu instancia los roles de
legacyBucketWriter
yobjectViewer
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. - Importa tu archivo de volcado:
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- project-id: el ID del proyecto
- instance-id: el ID de instancia.
- bucket_name: nombre del segmento de Cloud Storage
- path_to_sql_file: la ruta al archivo SQL
- database_name: nombre de una base de datos 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 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, consulte la página instances:import. - Si no necesitas conservar los permisos de gestión de identidades y accesos que has definido anteriormente, elimínalos ahora.
REST v1beta4
-
Crea un archivo de volcado de SQL. Las instrucciones vinculadas definen determinadas marcas que hacen que el archivo de volcado sea compatible con Cloud SQL.
- Si vas a importar datos desde un servidor MySQL local:
- Crea un archivo de volcado de SQL.
- Crea un segmento en Cloud Storage.
- Sube el archivo de volcado de SQL al depósito de Cloud Storage.
- Si vas a importar datos de otra instancia de Cloud SQL, consulta las instrucciones del artículo Exportar datos de Cloud SQL a un archivo de volcado de SQL.
- Crea un segmento de Cloud Storage.
Sube el archivo al segmento.
Para obtener ayuda sobre cómo subir archivos a los contenedores, consulta el artículo Subir objetos.
- 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 Usar permisos de gestión de identidades y accesos. - Importa tu archivo de volcado:
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- project-id: el ID del proyecto
- instance-id: el ID de instancia.
- bucket_name: nombre del segmento de Cloud Storage
- path_to_sql_file: la ruta al archivo SQL
- database_name: nombre de una base de datos 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 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, consulte la página instances:import. - Si no necesitas conservar los permisos de gestión de identidades y accesos que has definido anteriormente, elimínalos ahora.
Siguientes pasos
- Obtén más información sobre cómo comprobar el estado de las operaciones de importación y exportación.
- Consulta más información sobre las prácticas recomendadas para importar y exportar datos.
- Obtén más información sobre Cloud Storage.
- Problemas conocidos de importación y exportación