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

Cuando importes y exportes datos a AlloyDB para PostgreSQL, ten en cuenta las siguientes prácticas recomendadas:

  • No uses los buckets de pagos del solicitante de Cloud Storage para importaciones o exportaciones.
  • Usa las marcas correctas cuando crees un archivo de volcado de SQL.
  • Comprime los datos para reducir los costos.
  • Procesa los datos en lotes para reducir los procesos de importación y exportación de larga duración.
  • Verifica la base de datos importada después de la importación.

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

No puedes usar un bucket de Cloud Storage que tenga habilitados los pagos del solicitante para importaciones o exportaciones desde AlloyDB. AlloyDB usa una cuenta de servicio administrada por Google, Service Agent, para realizar importaciones y exportaciones. Por lo general, este agente no tiene el contexto ni la configuración para cobrarle al proyecto del solicitante el acceso a los datos, lo que provoca que fallen las operaciones que involucran buckets de Requester Pays.

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

Es posible que la importación falle si no usas las marcas y opciones correctas para exportar los datos a un archivo de volcado de SQL. Para obtener información sobre cómo exportar datos para importarlos en AlloyDB, consulta Exporta un archivo DMP y Exporta un archivo SQL.

Comprime los datos para disminuir los costos

AlloyDB admite la importación y exportación de archivos .gz comprimidos desde Cloud Storage. 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 grandes cantidades de datos. Cuando exportes un archivo CSV o de volcado de SQL con la API de AlloyDB, usa una extensión de archivo .gz en el URI de destino para comprimir los datos. Cuando importas un archivo con una extensión .gz, el archivo se descomprime automáticamente.

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

Según el tamaño de tus datos, las importaciones y exportaciones de AlloyDB pueden tardar mucho tiempo en completarse. Si una operación tarda demasiado, es posible que bloquee otras operaciones.

Reduce el tiempo para completar cada operación usando lotes de datos más pequeños. También puedes usar la herramienta pg_dump para realizar una exportación manual desde un cliente conectado a una instancia de grupo de lectura.

Verifica la base de datos importada

Después de completar una operación de importación, conéctate a tu base de datos con psql o algún otro cliente, y ejecuta los comandos correspondientes para asegurarte de que los contenidos sean correctos, como enumerar tablas o consultar recuentos de filas.

Automatiza las operaciones de exportación

Aunque AlloyDB no proporciona un método integrado para automatizar las exportaciones, puedes compilar una herramienta de automatización con otros componentes deGoogle Cloud , como Cloud Scheduler, Pub/Sub y Cloud Run Functions.

Soluciona problemas

En esta sección, se proporcionan sugerencias para solucionar problemas que puedes encontrar con las operaciones de importación y exportación.

Operaciones de importación

Problema Descripción Solución recomendada
ERROR: permission denied for schema public En PostgreSQL 15 y versiones posteriores, es posible que la importación de datos falle debido a los permisos de esquema si creas la base de datos de destino a partir de template0.

Para resolver este problema, usa el siguiente comando para otorgar privilegios en el esquema public al usuario que importa datos:

        GRANT ALL ON SCHEMA public TO my_import_user;
        
La operación de importación está tomando demasiado tiempo. Hay demasiadas conexiones activas que pueden interferir en las operaciones de importación.

Pruebe lo siguiente:

  • Cierra las conexiones sin usar.
  • Para asegurarte de que haya suficientes recursos disponibles, verifica el uso de la CPU y la memoria de tu instancia.
  • Para garantizar la cantidad máxima de recursos para la importación, reinicia la instancia antes de comenzar la operación. Esto cierra todas las conexiones y finaliza las tareas que podrían consumir recursos.
Una operación de importación falla porque 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 no existen, 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 necesarios antes de realizar la importación.
GRANT stderr: ERROR: must be member of role ROLE_NAME Este error puede ocurrir si importas un archivo de volcado de SQL que contiene objetos propiedad de ROLE_NAME o permisos otorgados a ROLE_NAME, pero el usuario de la base de datos que realiza la importación no es miembro de ROLE_NAME. Para resolver este problema, asegúrate de que el rol ROLE_NAME exista en la base de datos de destino y otorga la membresía en ROLE_NAME al usuario que realiza la importación antes de ejecutarla.

Operaciones de exportación

Problema Descripción Solución recomendada
HTTP Error 403: The service account does not have the required permissions for the bucket. La cuenta de servicio de AlloyDB no tiene los permisos necesarios para el bucket de destino. Asegúrate de que exista el bucket de Cloud Storage de destino y que se hayan otorgado los roles de roles/storage.objectAdmin o roles/storage.objectCreator a la cuenta de servicio de AlloyDB. Estos roles le permiten escribir en el bucket. Consulta los roles de Identity and Access Management (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 el esquema y los datos de la base de datos, y suele tardar más. El formato CSV solo exporta los datos resultantes de una consulta SELECT que proporciones. Si una exportación de SQL falla o es demasiado lenta, considera exportar tablas individuales con CSV.
La exportación está tomando demasiado tiempo. Si una exportación tarda demasiado en tu instancia principal, es posible que sea demasiado grande. Considera exportar los datos en lotes más pequeños. Por ejemplo, exporta las tablas de forma individual en lugar de exportar una base de datos completa en una sola operación. También puedes usar la herramienta pg_dump para realizar una exportación manual desde un cliente conectado a una instancia de grupo de lectura.
Error Create Extension en el registro pg_restore o falla la importación. El archivo de volcado contiene referencias a una extensión de PostgreSQL que AlloyDB no admite o que no está instalada en tu clúster. Para quitar las referencias, edita el archivo de volcado o instala la extensión en tu clúster si AlloyDB la admite.
Se produjo un error cuando se usó pg_dumpall. La utilidad pg_dumpall con marcas como --globals-only podría requerir privilegios no disponibles en AlloyDB.

Para exportar objetos globales, como usuarios y roles, sin contraseñas, usa el siguiente comando para incluir la marca --no-role-passwords:

        pg_dumpall --globals-only --no-role-passwords
        
Se agota el tiempo de espera de la operación de exportación o ves Connection reset by peer. Si Cloud Storage no recibe datos en un período determinado, la conexión se puede restablecer. Esto puede suceder si las consultas iniciales de la base de datos necesarias para la exportación tardan demasiado en ejecutarse. Si esto ocurre, intenta realizar una exportación manual con la herramienta pg_dump desde un cliente conectado a una instancia de grupo de lectura.

Problemas comunes

Problema Descripción Solución recomendada
HTTP Error 409: Operation failed because another operation was already in progress. El sistema solo permite una operación de importación o exportación basada en la API a la vez. Prueba tu solicitud después de que se complete la operación actual.

¿Qué sigue?