Importa y exporta con archivos de volcado de SQL

En esta página, se describe la importación y exportación de datos en instancias de Cloud SQL mediante archivos de volcado de SQL.

Antes de comenzar

Las exportaciones usan recursos de bases de datos, pero no interfieren en las operaciones normales de las bases de datos, a menos que la instancia no cuente con el aprovisionamiento suficiente.

A fin de obtener prácticas recomendadas, consulta Recomendaciones para la importación y exportación de datos.

Después de completar una operación de importación, verifica los resultados.

Exporta datos desde Cloud SQL para MySQL

Roles y permisos necesarios a fin de 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:

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 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 a un entorno local si deseas acceder a ellos de forma local.

La exportación desde Cloud SQL 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 le permite a mysqldump leer la base de datos en el estado actual, lo que hace que un volcado de datos sea coherente.

Si tu archivo de volcado de SQL contiene cláusulas DEFINER (vistas, activadores, procedimientos_almacenados, etc.), según el orden en que se ejecuten estas declaraciones, el uso de este archivo para la importación puede fallar. Obtén más información sobre el uso de DEFINER y las posibles soluciones en Cloud SQL.

Para exportar datos de una base de datos en una instancia de Cloud SQL a un archivo de volcado de SQL en un depósito de Cloud Storage, sigue estos pasos:

Console

  1. En la consola de Google Cloud, ve a la página Instancias de Cloud SQL.

    Ir a Instancias de Cloud SQL

  2. Para abrir la página de Descripción general de una instancia, haz clic en su nombre.
  3. Haz clic en Exportar (Export).
  4. En la sección Formato de archivo, haz clic en SQL para crear un archivo de volcado de SQL.
  5. En la sección Datos para exportar, haz clic en Una o más bases de datos en esta instancia a fin de exportar bases de datos específicas.
  6. Usa el menú desplegable para seleccionar las bases de datos desde las que deseas exportar.
  7. En la sección Destino, selecciona Explorar a fin de buscar un bucket o una carpeta de Cloud Storage para tu exportación.
  8. Haz clic en Exportar para comenzar la exportación.

gcloud

  1. Crea depósitos de almacenamiento.
  2. Busca la cuenta de servicio de la instancia de Cloud SQL desde la que exportas. Puedes hacerlo ejecutando el comando gcloud sql instances describe. Busca el campo serviceAccountEmailAddress en el resultado.
    gcloud sql instances describe INSTANCE_NAME
      
  3. Usa gsutil iam para otorgar el rol de IAM storage.objectAdmin a la cuenta de servicio. Si deseas obtener ayuda con la configuración de los permisos de IAM, consulta Usa los permisos de IAM.
  4. Exporta la base de datos a tu bucket 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 contiene 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 comando sql export sql.

  5. Si no necesitas retener la función de IAM que configuraste antes, revócala ahora.

REST v1

  1. Crea un bucket para la exportación:
    gsutil mb -p PROJECT_NAME -l LOCATION_NAME gs://BUCKET_NAME
    

    Este paso no es obligatorio, pero se recomienda para no habilitar el acceso a otros datos.

  2. Otórgale a tu instancia la función de IAM legacyBucketWriter para el depósito. Para obtener ayuda con la configuración de permisos de IAM, consulta Usa permisos de IAM.
  3. Exporta tu base de datos:

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • 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
    • offload: Habilita la exportación sin servidores. Configúralo como true para usar la exportación sin servidores.

    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, expande una de estas opciones:

    Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

  4. Si no necesitas conservar la función de IAM que configuraste, quítala ahora.
Si quieres obtener una lista completa de los parámetros para esta solicitud, consulta la página instances:export.

REST v1beta4

  1. Crea un bucket para la exportación:
    gsutil mb -p PROJECT_NAME -l LOCATION_NAME gs://BUCKET_NAME
    

    Este paso no es obligatorio, pero se recomienda para no habilitar el acceso a otros datos.

  2. Otórgale a tu instancia la función de IAM storage.objectAdmin para el depósito. Para obtener ayuda con la configuración de permisos de IAM, consulta Usa permisos de IAM.
  3. Exporta tu base de datos:

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • 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
    • offload: Habilita la exportación sin servidores. Configúralo como true para usar la exportación sin servidores.

    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, expande una de estas opciones:

    Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

  4. Si no necesitas retener la función de IAM que configuraste antes, revócala ahora.
Para obtener una lista completa de los parámetros para esta solicitud, consulta la página Instances: export.

Exporta desde tu servidor MySQL local con mysqldump

Si exportas datos desde una base de datos MySQL local para importar a una base de datos de Cloud SQL, debes usar la utilidad mysqldump con las siguientes marcas:

  • --databases: Debes usar la opción --databases a fin de especificar una lista explícita de bases de datos para exportar, y esta lista no debe contener la base de datos del sistema mysql.
  • --hex-blob: Si tu base de datos contiene campos binarios, debes usar esta marca para asegurarte de que los campos binarios se importen de forma correcta.
  • --set-gtid-purged=OFF: La información GTID no se debe incluir en el archivo de volcado de SQL, ni el archivo de volcado de SQL debe inhabilitar el registro binario. (No se requiere para MySQL 5.5 o replicación externa).
  • --single-transaction Inicia una transacción antes de ejecutarla. En lugar de bloquear toda la base de datos, esto le permite a mysqldump leer la base de datos en el estado actual, lo que hace que un volcado de datos sea 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

Si deseas crear un archivo de volcado para usarlo en una configuración de servidor externo, consulta la sección sobre cómo replicar datos desde un servidor externo.

Importa datos a Cloud SQL para MySQL

Roles y permisos necesarios a fin de 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:

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 un archivo de volcado de SQL a Cloud SQL para MySQL

Los archivos SQL son archivos de texto sin formato con una secuencia de comandos de SQL.

Console

  1. En la consola de Google Cloud, ve a la página Instancias de Cloud SQL.

    Ir a Instancias de Cloud SQL

  2. Para abrir la página de Descripción general de una instancia, haz clic en su nombre.
  3. Haga clic en Import.
  4. En la sección Elige el archivo del cual deseas importar datos, ingresa la ruta de acceso al depósito y el archivo de volcado de SQL que se usará para la importación, o navega a un archivo existente. .

    Puedes importar un archivo comprimido (.gz) o uno sin comprimir (.sql).

  5. En Formato, selecciona SQL.
  6. Selecciona la base de datos hacia la cual deseas importar los datos.

    Esto hace que Cloud SQL ejecute la instrucción USE DATABASE antes de la importación.

  7. Si deseas especificar un usuario para que realice la importación, selecciona el usuario.

    Si tu archivo de importación contiene instrucciones que un usuario específico debe llevar a cabo, usa este campo para especificar ese usuario.

  8. Haz clic en Importar para comenzar la importación.

gcloud

  1. Crea un bucket de Cloud Storage.
  2. Sube el archivo a tu bucket.

    Para obtener ayuda con la carga de archivos en buckets, consulta Sube objetos.

  3. Describe la instancia hacia la que quieres importar:
    gcloud sql instances describe INSTANCE_NAME
    
  4. Copia el campo serviceAccountEmailAddress.
  5. Usa gsutil iam para otorgar la función de IAM storage.objectAdmin a la cuenta de servicio del bucket.
    gsutil iam ch serviceAccount:SERVICE-ACCOUNT:objectAdmin \
    gs://BUCKET_NAME
      
    Para obtener ayuda con la configuración de permisos de IAM, consulta la sección Cómo usar permisos de IAM.
  6. 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 comando sql import sql.

    Si el comando muestra un error como ERROR_RDBMS, revisa los permisos; por lo general, este error se produce por problemas con los permisos.

  7. Si no necesitas conservar los permisos de IAM que configuraste antes, quítalos mediante gsutil iam.

REST v1

  1. Crea un archivo de volcado de SQL. Las instrucciones vinculadas establecen ciertas marcas que hacen que el archivo de volcado sea compatible con Cloud SQL.

  2. Crea un bucket de Cloud Storage
  3. Sube el archivo a tu bucket.

    Para obtener ayuda con la carga de archivos en buckets, consulta Sube objetos.

  4. Otórgale a la instancia las funciones de Cloud IAM legacyBucketWriter y objectViewer para el bucket. Para obtener ayuda con la configuración de permisos de IAM, consulta la sección Usa permisos de IAM.
  5. Importa el archivo de volcado:

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • 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_sql_file: La ruta de acceso 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 tu solicitud, expande una de estas opciones:

    Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

    Si quieres obtener una lista completa de parámetros para esta solicitud, consulta la página instances:import.
  6. Si no necesitas conservar los permisos de IAM que configuraste, quítalos ahora.

REST v1beta4

  1. Crea un archivo de volcado de SQL. Las instrucciones vinculadas establecen ciertas marcas que hacen que el archivo de volcado sea compatible con Cloud SQL.

  2. Crea un bucket de Cloud Storage
  3. Sube el archivo a tu bucket.

    Para obtener ayuda con la carga de archivos en buckets, consulta Sube objetos.

  4. Otorga a la instancia la función de IAM storage.objectAdmin para el depósito. Para obtener ayuda con la configuración de permisos de IAM, consulta la sección sobre cómo usar permisos de IAM.
  5. Importa el archivo de volcado:

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • 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_sql_file: La ruta de acceso 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 tu solicitud, expande una de estas opciones:

    Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

    Si quieres obtener una lista completa de parámetros para esta solicitud, consulta la página instances:import.
  6. Si no necesitas conservar los permisos de IAM que configuraste, quítalos ahora.

¿Qué sigue?