Exportar e importar con archivos de volcado de SQL

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:

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

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

    Ir a Instancias de Cloud SQL

  2. Para abrir la página Overview (Resumen) de una instancia, haz clic en su nombre.
  3. Haz clic en Exportar.
  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 que se van a exportar, haga clic en Al menos una base de datos de esta instancia para exportar bases de datos específicas.
  6. Utilice el menú desplegable para seleccionar las bases de datos de las que quiera exportar datos.
  7. En la sección Destino, selecciona Buscar para buscar un segmento o una carpeta de Cloud Storage para la exportación.
  8. Haz clic en Exportar para iniciar la exportación.

gcloud

  1. Crea un segmento de Cloud Storage.
  2. 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 campo serviceAccountEmailAddress en el resultado.
    gcloud sql instances describe INSTANCE_NAME
      
  3. Usa gcloud storage buckets add-iam-policy-binding para asignar el storage.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.
  4. 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 comando sql export sql.

  5. Si no necesitas conservar el rol de gestión de identidades y accesos que has definido anteriormente, revócalo ahora.

REST v1

  1. 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.

  2. 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.
  3. 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
  4. 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:

  5. Si no necesitas conservar el rol de gestión de identidades y accesos que has definido anteriormente, quítalo ahora.
Para ver la lista completa de parámetros de la solicitud, consulta la página instances:export.

REST v1beta4

  1. 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.

  2. 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.
  3. 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
  4. 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:

  5. Si no necesitas conservar el rol de gestión de identidades y accesos que has definido anteriormente, revócalo ahora.
Para ver la lista completa de parámetros de la solicitud, consulta la página instances:export.

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 sistema mysql.
  • --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:

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

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

    Ir a Instancias de Cloud SQL

  2. Para abrir la página Overview (Resumen) de una instancia, haz clic en su nombre.
  3. Haz clic en Importar.
  4. 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).

  5. En Formato, selecciona SQL.
  6. 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.

  7. 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.

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

gcloud

  1. Crea un segmento de Cloud Storage.
  2. Sube el archivo al segmento.

    Para obtener ayuda sobre cómo subir archivos a los contenedores, consulta el artículo Subir objetos.

  3. Describe la instancia en la que vas a importar los datos:
    gcloud sql instances describe INSTANCE_NAME
  4. Copia el campo serviceAccountEmailAddress.
  5. Usa gcloud storage buckets add-iam-policy-binding para asignar el storage.objectAdmin rol de gestión de identidades y accesos a la cuenta de servicio del cubo.
    gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \
      --member=serviceAccount:SERVICE-ACCOUNT \
      --role=roles/storage.objectAdmin
      
    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.
  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 devuelve un error como ERROR_RDBMS, revisa los permisos, ya que este error suele deberse a problemas de permisos.

  7. 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

  1. 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.

  2. Crea un segmento de Cloud Storage.
  3. Sube el archivo al segmento.

    Para obtener ayuda sobre cómo subir archivos a los contenedores, consulta el artículo Subir objetos.

  4. Proporciona a tu instancia los roles de legacyBucketWriter y objectViewer 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.
  5. 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.
  6. Si no necesitas conservar los permisos de gestión de identidades y accesos que has definido anteriormente, elimínalos ahora.

REST v1beta4

  1. 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.

  2. Crea un segmento de Cloud Storage.
  3. Sube el archivo al segmento.

    Para obtener ayuda sobre cómo subir archivos a los contenedores, consulta el artículo Subir objetos.

  4. 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.
  5. 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.
  6. Si no necesitas conservar los permisos de gestión de identidades y accesos que has definido anteriormente, elimínalos ahora.

Siguientes pasos