Recomendaciones para la importación y exportación de datos

En esta página, se proporcionan las prácticas recomendadas para importar y exportar datos con Cloud SQL. Si quieres obtener instrucciones, consulta Cómo importar datos a Cloud SQL. Consulta la documentación para exportar datos para ver instrucciones paso a paso al respecto, ya sea en Cloud SQL o en una instancia que administres.

Recomendaciones para importar y exportar

Las siguientes son prácticas recomendadas que se deben tener en cuenta a la hora de importar y exportar datos:

No uses los depósitos de pagos del solicitante de Cloud Storage

No puedes usar un depósito de Cloud Storage que tenga habilitados los pagos del solicitante para importaciones y exportaciones desde Cloud SQL.

Minimiza el impacto del rendimiento de las exportaciones

En una exportación estándar desde Cloud SQL, la exportación se ejecuta mientras la base de datos está en línea. Cuando los datos que se exportan son más pequeños, es probable que el efecto sea mínimo. Sin embargo, cuando hay objetos o bases de datos grandes, como BLOB en la base de datos, existe la posibilidad de que la exportación disminuya el rendimiento de la base de datos. Esto puede afectar el tiempo que lleva realizar consultas y operaciones de base de datos en la base de datos. Después de comenzar una exportación, no es posible detenerla si la base de datos comienza a responder con lentitud.

Para evitar respuestas lentas durante una exportación, puedes hacer lo siguiente:

  1. Toma la exportación de una réplica de lectura. Esta puede ser una buena opción si realizas exportaciones con frecuencia (a diario o con mayor frecuencia), pero la cantidad de datos que se exportan es pequeña. Para realizar una exportación desde una réplica de lectura, usa las funciones de exportación de la consola de Google Cloud, gcloud o la API de REST en tu instancia de réplica de lectura. Consulta Crea réplicas de lectura para obtener más información sobre cómo crear y administrar réplicas de lectura.

  2. Usa la exportación sin servidores. Con la exportación sin servidores, Cloud SQL crea una instancia temporal separada para descargar la operación de exportación. La descarga de la operación de exportación permite que las bases de datos en la instancia principal continúen con la entrega de consultas y realicen operaciones con la tasa de rendimiento habitual. Cuando se completa la exportación de datos, la instancia temporal se borra de forma automática. Esta puede ser una buena opción si realizas una exportación única a una base de datos grande. Usa las funciones de exportación de la consola de Google Cloud, gcloud o la API de REST con la marca offload para realizar una operación de exportación sin servidores.

    Durante una operación de exportación sin servidores, puedes ejecutar otras operaciones, como la edición, la importación y la conmutación por error de instancias. Sin embargo, si seleccionas delete, la operación de exportación se detiene un poco después de borrar la instancia y no exporta ningún dato.

    Consulta la siguiente tabla para obtener información sobre las operaciones que pueden bloquearse mientras se ejecuta una operación de exportación sin servidores:
    Operación actual Operación nueva Bloqueada?
    Cualquier operación Exportación sin servidores
    Exportación sin servidores Cualquier operación, excepto la exportación sin servidores No
    Cualquier operación, excepto la exportación sin servidores Cualquier operación, excepto la exportación sin servidores

    Una exportación sin servidores tiene mayor duración que una estándar, ya que lleva tiempo crear la instancia temporal. Como mínimo, lleva más de cinco minutos, pero para bases de datos más grandes, puede tomar más. Antes de determinar qué tipo de exportación usar, considera el efecto en el tiempo, el rendimiento y el costo.

Usa las marcas correctas cuando crees un archivo de volcado de SQL

Si no usas el procedimiento correcto cuando exportes datos a un archivo de volcado de SQL, es posible que la importación no se realice de forma correcta. Consulta Exportar datos a fin de obtener información sobre cómo crear un archivo de volcado de SQL para importar en Cloud SQL.

Comprimir los datos para disminuir los costos

Cloud SQL admite la importación y exportación de archivos comprimidos y no comprimidos. Con la compresión se puede ahorrar una cantidad importante de espacio de almacenamiento en Cloud Storage, además de disminuir los costos de almacenamiento, en especial, cuando se exportan instancias grandes.

Cuando exportes un volcado de SQL o un archivo CSV, usa una extensión de archivo .gz para comprimir los datos. Cuando importas un archivo con la extensión .gz, se descomprime de forma automática.

Reduce los procesos de importación y exportación de larga duración

Las importaciones en Cloud SQL y las exportaciones fuera de Cloud SQL pueden tardar mucho tiempo en completarse, según el tamaño de los datos que se procesan. Esto puede tener las siguientes consecuencias:

  • No puedes detener una operación de instancia de larga duración de Cloud SQL.
  • Solo puedes realizar una operación de importación o exportación a la vez para cada instancia, y una importación o exportación de larga duración bloquea otras operaciones, como las copias de seguridad automáticas diarias. Las exportaciones sin servidores te permiten ejecutar otras operaciones, como editar instancias, importar, conmutar por error y desbloquear copias de seguridad automáticas diarias.

Puedes disminuir la cantidad de tiempo que lleva completar cada operación mediante la función de importación o exportación de Cloud SQL con lotes de datos más pequeños.

En el caso de las exportaciones, puedes realizar la exportación desde una réplica de lectura o usar la exportación sin servidores para minimizar el impacto en el rendimiento de la base de datos y permitir que se ejecuten otras operaciones en tu instancia mientras se ejecuta una exportación.

Para obtener más sugerencias, consulta Diagnostica problemas relacionados con las instancias de Cloud SQL.

Verifica la base de datos importada

Después de completar una operación de importación, conéctate a la base de datos y ejecuta los comandos correspondientes para asegurarte de que los contenidos sean correctos. Por ejemplo, conéctate y enumera las bases de datos, tablas y entradas específicas.

Limitaciones conocidas

A fin de obtener una lista de las limitaciones conocidas, consulta Problemas para importar y exportar datos.

Automatiza las operaciones de exportación

Aunque Cloud SQL no proporciona una forma integrada de automatizar las exportaciones de bases de datos, puedes compilar tu propia herramienta de automatización con varios componentes de Google Cloud. Para obtener más información, consulta este instructivo.

Soluciona problemas

Soluciona problemas de operaciones de importación

Problema Soluciona problemas
Mensaje de error: permission denied for schema public En las versiones 15 y posteriores de PostgreSQL, si la base de datos de destino se crea a partir de template0, es posible que la importación de datos falle. Para resolver este problema, proporciona privilegios de esquema públicos al usuario cloudsqlsuperuser mediante la ejecución del comando GRANT ALL ON SCHEMA public TO cloudsqlsuperuser de SQL.
HTTP Error 409: Operation failed because another operation was already in progress Ya existe una operación pendiente para la instancia. Solo se permite una operación a la vez. Prueba tu solicitud después de que se complete la operación actual.
La operación de importación está tomando demasiado tiempo. Hay demasiadas conexiones activas que pueden interferir en las operaciones de importación.

Cierra las operaciones sin usar. Verifica el uso de CPU y memoria de la instancia de Cloud SQL para asegurarte de que haya muchos recursos disponibles. La mejor manera de garantizar la cantidad máxima de recursos para la 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.
Una operación de importación puede fallar cuando uno o más usuarios a los que se hace referencia en el archivo de volcado no existen. Antes de importar un archivo de volcado, 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 deben existir en la base de datos de destino. Si este no es el caso, la operación de importación no puede volver a crear los objetos con la propiedad o los permisos originales.

Crea los usuarios de la base de datos antes de realizar la importación.

Después de importar datos, el tamaño del uso del disco de datos es mucho mayor.

Es posible que haya un uso inesperado del disco después de importar datos. Este uso puede deberse a la recuperación de un momento determinado.

Para resolver esto, después de importar datos, inhabilita la recuperación de un momento determinado si deseas borrar los registros y recuperar el almacenamiento. Ten en cuenta que disminuir el almacenamiento en uso no reduce el tamaño del almacenamiento aprovisionado para la instancia.

Mensaje de error: GRANT stderr: ERROR: must be member of role ROLE_NAME

Este mensaje de error aparece si intentas importar un archivo de volcado de SQL que se sube en Cloud Storage a una base de datos de Cloud SQL y el trabajo de importación se ejecuta durante cuatro días.

ROLE_NAME es un rol de base de datos personalizado definido en la base de datos de PostgreSQL de origen. El usuario cloudsqlsuperuser predeterminado importa el archivo de volcado de SQL. Sin embargo, es posible que este usuario no pertenezca al rol ROLE_NAME.

Para resolver este problema, realiza los siguientes pasos:

  1. Crea el rol ROLE_NAME en la base de datos de destino en la que se importará el archivo de volcado de SQL.
  2. No uses el usuario cloudsqlsuperuser para importar el archivo. En su lugar, en la base de datos de destino, especifica un usuario que sea miembro de el rol ROLE_NAME. Para especificar el usuario, ejecuta el siguiente comando:

    gcloud sql import sql INSTANCE URI [--async]
    [--database=DATABASE, -d DATABASE] [--user=USER] [GCLOUD_WIDE_FLAG …]

Soluciona problemas de operaciones de exportación

Problema Soluciona problemas
HTTP Error 409: Operation failed because another operation was already in progress. Ya existe una operación pendiente para la instancia. Solo se permite una operación a la vez. Prueba tu solicitud después de que se complete la operación actual.
HTTP Error 403: The service account does not have the required permissions for the bucket. Asegúrate de que el bucket exista y que la cuenta de servicio de la instancia de Cloud SQL (que realiza la exportación) tenga el rol Storage Object Creator (roles/storage.objectCreator) para permitir la exportación al bucket. Consulta Roles de IAM para Cloud Storage.
La exportación de archivos CSV se completó, pero la exportación de SQL falló. Los formatos CSV y SQL se exportan de manera diferente. El formato SQL exporta la base de datos completa, y es probable que esta operación tome más tiempo para completarse. El formato CSV te permite definir qué elementos de la base de datos incluir en la exportación.

Usa las exportaciones de archivos CSV para exportar solo lo que necesites.

La exportación está tomando demasiado tiempo. Cloud SQL no admite operaciones síncronas simultáneas.

Usa la descarga de exportación. En un nivel alto, en la descarga de exportación, en lugar de emitir una exportación en la instancia de origen, Cloud SQL inicia una instancia de descarga para realizar la exportación. La descarga de la exportación tiene varias ventajas, como el aumento del rendimiento en la instancia de origen y el bloqueo de las operaciones administrativas mientras se ejecuta la exportación. Con la descarga de la exportación, la latencia total puede aumentar en función del tiempo que lleva activar la instancia de descarga. Por lo general, para exportaciones con un tamaño razonable, la latencia no es significativa. Sin embargo, si la exportación es lo suficientemente pequeña, es posible que notes un aumento en la latencia.

Se produjo un error cuando se creó la extensión. En el archivo de volcado, se hace referencia a una extensión que no es compatible.

Edita el archivo de volcado para quitar las referencias.

Se produjo un error cuando se usó pg_dumpall. El uso de la utilidad pg_dumpall con la marca --global requiere la función de superusuario, pero esta no es compatible con Cloud SQL para PostgreSQL. Para evitar que se produzcan errores mientras se realizan operaciones de exportación que incluyen nombres de usuario, también usa la marca --no-role-passwords.
Se agota el tiempo de espera de la operación de exportación antes de exportar algo y ves el mensaje de error Could not receive data from client: Connection reset by peer.. Si Cloud Storage no recibe ningún dato en un período determinado, por lo general, alrededor de siete minutos, la conexión se restablece. Es posible que la consulta de exportación inicial esté tardando demasiado en ejecutarse.

Realiza una exportación manual con la herramienta pg_dump.

Deseas que las exportaciones sean automáticas. Cloud SQL no proporciona una forma de automatizar las exportaciones.

Podrías compilar tu propio sistema de exportación automatizado mediante el uso de productos de Google Cloud, como Cloud Scheduler, Pub/Sub y Cloud Functions, similar a este artículo sobre cómo automatizar las copias de seguridad.

¿Qué sigue?