Importa datos a Cloud SQL

Antes de comenzar

Funciones y permisos requeridos

En este procedimiento, se requiere que importes un archivo de Cloud Storage. Para importar datos de Cloud Storage, la cuenta de servicio o el usuario deben tener uno de los siguientes conjuntos de funciones:

  • La función de administrador de Cloud SQL y la función de IAM roles/storage.LegacyObjectReader
  • Una función personalizada que incluya los siguientes permisos:
    • cloudsql.instances.get
    • cloudsql.instances.import
    • storage.buckets.get
    • storage.objects.get

Si la cuenta o el usuario también realizan operaciones de exportación, podría ser más conveniente otorgar la función de IAM Storage Object Admin a fin de tener todos los permisos necesarios para la importación y la exportación. Si necesitas ayuda con las funciones de IAM, consulta Cloud Identity and Access Management para Cloud Storage.

Importa datos de un archivo BAK en Cloud Storage

Si la versión de tu instancia es Microsoft SQL Server Enterprise Edition, puedes importar archivos BAK encriptados. Las únicas extensiones compatibles de BAK son .bak y .bak.gz. Por el momento, no se admiten las copias de seguridad encriptadas de GPG. A fin de seguir las instrucciones que se indican a continuación, prepárate para especificar una base de datos nueva. No crees una base de datos antes de comenzar la importación del archivo BAK. Para importar datos a una instancia de Cloud SQL mediante un archivo BAK, sigue estos pasos:

Console

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

    Ir a Instancias de Cloud SQL

  2. Haz clic en el nombre de la instancia para abrir la página Descripción general de esa instancia.
  3. Haga clic en Import.
  4. En la sección Elige el archivo del cual deseas importar datos, ingresa la ruta de acceso al bucket y el archivo BAK que se usará para la importación. O bien, navega al archivo mediante estos pasos:
    1. Haga clic en Browse.
    2. En la sección Ubicación, haz doble clic en el nombre del bucket en la lista.
    3. Selecciona el archivo de la lista.
    4. Haz clic en Seleccionar.

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

  5. En la sección Formato, selecciona BAK.
  6. En Base de datos, especifica la base de datos de tu instancia de Cloud SQL en la que deseas importar el archivo BAK.
  7. Haz clic en Importar para comenzar la importación.

gcloud

  1. Crea un depósito para la importación:

    gsutil mb -p PROJECT_NAME -l LOCATION_NAME gs://BUCKET_NAME
    

    Este paso no es obligatorio, pero recomendamos realizarlo para no habilitar el acceso a otros datos.

  2. Asegúrate de haber configurado las funciones y los permisos necesarios.
  3. Sube los datos del archivo BAK al depósito.
  4. Describe la instancia desde la que exportas:
    gcloud sql instances describe INSTANCE_NAME
    
  5. Copia el campo serviceAccountEmailAddress.
  6. Usa gsutil iam para otorgar la función de IAM storage.objectViewer a la cuenta de servicio del bucket. Para obtener ayuda con la configuración de permisos de IAM, consulta Usa permisos de IAM.
  7. Importa los datos del archivo:
    gcloud beta sql import bak INSTANCE_NAME gs://BUCKET_NAME/FILE_NAME 
    --database=DATABASE_NAME

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

REST v1beta4

  1. Si aún no lo hiciste, crea un bucket de Cloud Storage.

    Para obtener ayuda con la creación de un bucket, consulta Crea buckets de almacenamiento.

  2. Sube el archivo a tu depósito.

    Para obtener ayuda con la carga de archivos en depósitos, consulta Sube objetos.

  3. 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 Usa permisos de IAM.
  4. Importa los datos del archivo:

    Antes de usar cualquiera de los siguientes datos de solicitud, realiza estos 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_bak_file: La ruta de acceso al archivo BAK
    • 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": "BAK",
          "uri": "gs://bucket_name/path_to_bak_file",
          "database": "database_name"
        }
    }
    
    

    Para enviar tu solicitud, expande una de estas opciones:

    Deberías recibir una respuesta JSON similar a la siguiente:

    A fin de usar un usuario diferente para la importación, especifica la propiedad importContext.importUser.

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

Si obtienes un error como ERROR_RDBMS, asegúrate de que la tabla exista. Si la tabla existe, confirma que tienes los permisos correctos en el depósito. Si quieres obtener ayuda para configurar el control de acceso en Cloud Storage, consulta Crea y administra listas de control de acceso (LCA).

Para ver cómo se realiza la solicitud subyacente a la API de REST de esta tarea, consulta Explorador de API en la página instances:import.

Importa datos de un archivo de SQL a Cloud SQL

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

A fin de seguir las instrucciones que se indican a continuación, prepárate para especificar una base de datos nueva. No crees una base de datos antes de comenzar la importación del archivo SQL.

Para importar datos a una instancia de Cloud SQL con un archivo SQL, sigue estos pasos:

Console

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

    Ir a Instancias de Cloud SQL

  2. Haz clic en el nombre de la instancia para abrir la página Descripción general de esa instancia.
  3. Haga clic en Import.
  4. En la sección Elige el archivo del cual deseas importar datos, ingresa la ruta de acceso al bucket y el archivo SQL que se usará para la importación. O bien, navega al archivo mediante estos pasos:
    1. Haga clic en Browse.
    2. En la sección Ubicación, haz doble clic en el nombre del bucket en la lista.
    3. Selecciona el archivo de la lista.
    4. Haz clic en Seleccionar.

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

  5. En la sección Formato, selecciona SQL.
  6. Especifica la Base de datos en la instancia de Cloud SQL en la que deseas importar el archivo SQL.
  7. Haz clic en Importar para comenzar la importación.

gcloud

  1. Crea un depósito para la importación:

    gsutil mb -p PROJECT_NAME -l LOCATION_NAME gs://BUCKET_NAME
    

    Este paso no es obligatorio, pero recomendamos realizarlo para no habilitar el acceso a otros datos.

  2. Sube el archivo SQL al depósito.
  3. Describe la instancia desde la que exportas:
    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. Para obtener ayuda con la configuración de permisos de IAM, consulta Usa permisos de IAM.
  6. Importa el archivo:
    gcloud sql import sql INSTANCE_NAME gs://BUCKET_NAME/FILE_NAME \
    --database=DATABASE_NAME
    
  7. Si no necesitas conservar los permisos de IAM que configuraste antes, quítalos mediante gsutil iam.

REST v1beta4

  1. Si aún no lo hiciste, crea un bucket de Cloud Storage.

    Para obtener ayuda con la creación de un bucket, consulta Crea buckets de almacenamiento.

  2. Sube el archivo a tu depósito.

    Para obtener ayuda con la carga de archivos en depósitos, consulta Sube objetos.

  3. 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 Usa permisos de IAM.
  4. Importa el archivo:

    Antes de usar cualquiera de los siguientes datos de la solicitud, realiza estos 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 siguiente:

    A fin de usar un usuario diferente para la importación, especifica la propiedad importContext.importUser.

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

Si obtienes un error como ERROR_RDBMS, asegúrate de que la tabla exista. Si la tabla existe, confirma que tienes los permisos correctos en el depósito. Para obtener más información sobre cómo configurar el control de acceso en Cloud Storage, consulta Crea y administra Listas de control de acceso.

Para ver cómo se realiza la solicitud subyacente a la API de REST de esta tarea, consulta Explorador de API en la página instances:import.

Soluciona problemas

Haz clic en los vínculos de la tabla para obtener más información:

Situación Posible problema Solución
La importación está tomando demasiado tiempo. Hay demasiadas conexiones activas que pueden interferir en las operaciones de importación. Cierra las conexiones sin usar o reinicia la instancia de Cloud SQL antes de comenzar una operación de importación.
La importación falla. El archivo exportado puede contener usuarios de la base de datos que aún no existen. Limpia la base de datos errónea antes de reintentar la importación. Crea los usuarios de la base de datos antes de realizar la importación.

La importación está tomando demasiado tiempo

La importación está tardando demasiado y está bloqueando otras operaciones.

Posible problema

Hay demasiadas conexiones activas que pueden interferir en las operaciones de importación. Las conexiones consumen CPU y memoria, lo que limita los recursos disponibles.

Solución

Cierra las operaciones sin usar. Verifica el uso de la memoria y la CPU para asegurarte de que haya una gran cantidad de recursos disponibles. La mejor manera de garantizar la cantidad máxima de recursos para la operación de importación es reiniciar la instancia antes de comenzar la operación. Cuando se realiza un reinicio, sucede lo siguiente:

  • Se cierran todas las conexiones.
  • Finaliza cualquier tarea que pueda consumir recursos.


La importación falla

La importación falla cuando uno o más usuarios a los que se hace referencia en el archivo de volcado de SQL exportado no existen.

Posible problema

Antes de importar un archivo de volcado de SQL, deben existir todos los usuarios de la base de datos que poseen objetos o que recibieron permisos sobre los objetos en la base de datos de volcado. Si este no es el caso, el restablecimiento no puede volver a crear los objetos con la relación de propiedad o los permisos originales.

Solución

Limpia la base de datos errónea antes de reintentar la importación. Crea los usuarios de la base de datos antes de importar el archivo de volcado de SQL.


¿Qué sigue?