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
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:
|
| 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
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?
- 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.