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
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:
|
| 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
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?
- Importa datos con archivos de volcado.
- Exporta datos con archivos de volcado.
- Importa datos con archivos CSV.
- Exporta datos con archivos CSV.
- Importa datos con archivos SQL.
- Exporta datos con archivos SQL.
- Habilita las copias de seguridad automáticas.
- Restablece una copia de seguridad.