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

Para optimizar el rendimiento, reducir los costos de almacenamiento y evitar interrupciones operativas cuando mueves datos hacia o desde AlloyDB para PostgreSQL, sigue estas 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 disminuir los costos.
  • Reduce los procesos de importación y exportación de larga duración con el procesamiento de datos en lotes.
  • 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, el agente de servicio, para realizar importaciones y exportaciones. Por lo general, este agente no tiene el contexto ni la configuración para cobrar al proyecto del solicitante por el acceso a los datos, lo que hace que fallen las operaciones que involucran buckets de Pagos del solicitante.

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

Si no usas las marcas y opciones correctas cuando exportas datos a un archivo de volcado de SQL, es posible que la importación no se realice correctamente. Para obtener información sobre cómo exportar datos para importarlos a 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. La compresión puede ahorrar mucho espacio de almacenamiento en Cloud Storage y reducir los costos de almacenamiento, en especial cuando exportas grandes cantidades de datos. Cuando exportes un archivo de volcado de SQL o CSV 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, este 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 desde AlloyDB pueden tardar mucho tiempo en completarse. Si una operación tarda demasiado, podría bloquear otras operaciones.

Reduce el tiempo para completar cada operación con lotes de datos más pequeños. También puedes usar la herramienta de 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

Una vez que se complete una operación de importación, conéctate a tu base de datos con psql o con otro cliente y ejecuta los comandos adecuados para asegurarte de que el contenido sea correcto, 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 correcciones sugeridas para los 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 del 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 los datos:

        GRANT ALL ON SCHEMA public TO 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 que no se usen.
  • Para asegurarte de que haya suficientes recursos disponibles, verifica el uso de CPU y memoria de tu instancia.
  • A fin de 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 que pertenecen a 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 el bucket de Cloud Storage de destino exista y de que la cuenta de servicio de AlloyDB tenga otorgados los roles roles/storage.objectAdmin o roles/storage.objectCreator. Estos roles le permiten escribir en el bucket. Consulta 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 que resultan de una consulta de SELECT que proporcionas. 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 tablas de forma individual en lugar de exportar una base de datos completa en una sola operación. También puedes usar la herramienta de 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 puede requerir privilegios que no están 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 que se requieren 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 permite solo una operación de importación o exportación basada en la API a la vez. Prueba la solicitud después de que se complete la operación actual.

¿Qué sigue?