Cuando importes y exportes datos en AlloyDB para PostgreSQL, ten en cuenta las siguientes prácticas recomendadas:
- No utilices segmentos de Cloud Storage con la opción Pago por solicitud para las importaciones o exportaciones.
- Usa las marcas correctas al crear un archivo de volcado de SQL.
- Comprimir datos para reducir costes.
- Reduce los procesos de importación y exportación de larga duración procesando los datos en lotes.
- Verifica la base de datos importada después de la importación.
No uses segmentos de Cloud Storage con la opción Peticionario paga
No puedes usar un segmento de Cloud Storage que tenga habilitada la opción "El solicitante paga" para importar o exportar datos de AlloyDB. AlloyDB usa una cuenta de servicio gestionada por Google, el agente de servicio, para realizar importaciones y exportaciones. Por lo general, este agente no tiene el contexto ni la configuración necesarios para cobrar al proyecto del solicitante por el acceso a los datos, lo que provoca que fallen las operaciones que implican el uso de contenedores de pago por solicitante.
Usar las marcas correctas al crear un archivo de volcado de SQL
Si no usa las marcas y opciones correctas al exportar datos a un archivo de volcado de SQL, es posible que no pueda importar los datos. Para obtener información sobre cómo exportar datos para importarlos en AlloyDB, consulta Exportar un archivo DMP y Exportar un archivo SQL.
Comprimir datos para reducir costes
AlloyDB admite la importación y exportación de archivos .gz comprimidos desde Cloud Storage. La compresión puede ahorrar una cantidad significativa de espacio de almacenamiento en Cloud Storage y reducir los costes de almacenamiento, sobre todo cuando exportas grandes cantidades de datos. Cuando exportes un archivo de volcado de SQL o CSV con la API de AlloyDB, usa la extensión de archivo .gz en el URI de destino para comprimir los datos. Cuando importa un archivo con la extensión .gz, este se descomprime automáticamente.
Reducir los procesos de importación y exportación de larga duración
En función del tamaño de los datos, las importaciones y exportaciones de AlloyDB pueden tardar mucho tiempo en completarse. Si una operación tarda demasiado, puede bloquear otras operaciones.
Reduce el tiempo necesario 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.
Verificar la base de datos importada
Una vez que se haya completado la operación de importación, conéctate a tu base de datos mediante psql u otro cliente y ejecuta los comandos adecuados para asegurarte de que el contenido es correcto. Por ejemplo, puedes enumerar las tablas o consultar el número de filas.
Automatizar las operaciones de exportación
Aunque AlloyDB no proporciona un método integrado para automatizar las exportaciones, puedes crear una herramienta de automatización con otrosGoogle Cloud componentes, como Cloud Scheduler, Pub/Sub y funciones de Cloud Run.
Solución de problemas
En esta sección se ofrecen soluciones sugeridas para los problemas que pueden surgir con las operaciones de importación y exportación.
Operaciones de importación
| Problema | Descripción | Corrección recomendada |
|---|---|---|
ERROR: permission denied for schema public |
En PostgreSQL 15 y versiones posteriores, es posible que no se puedan importar datos debido a los permisos de esquema si creas la base de datos de destino desde template0. |
Para solucionar este problema, usa el siguiente comando para conceder privilegios en el esquema
GRANT ALL ON SCHEMA public TO my_import_user;
|
| La operación de importación está tardando demasiado. | Demasiadas conexiones activas pueden interferir en las operaciones de importación. |
Prueba a hacer lo siguiente:
|
| Una operación de importación falla porque no existen uno o varios de los usuarios a los que se hace referencia en el archivo de volcado. | Antes de importar un archivo de volcado, todos los usuarios de bases de datos que sean propietarios de objetos o a los que se les hayan concedido permisos sobre objetos de 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 podrá recrear los objetos con la propiedad o los permisos originales. | Crea los usuarios de la base de datos necesarios antes de importar. |
GRANT stderr: ERROR: must be member of role ROLE_NAME
|
Este error puede producirse si importas un archivo de volcado de SQL que contiene objetos propiedad de ROLE_NAME o permisos concedidos 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 concede la pertenencia a ROLE_NAME al usuario que vaya a realizar la importación antes de ejecutarla. |
Operaciones de exportación
| Problema | Descripción | Correcció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 segmento de destino. | Asegúrate de que el segmento de Cloud Storage de destino exista y de que la cuenta de servicio de AlloyDB tenga asignados los roles roles/storage.objectAdmin o roles/storage.objectCreator. Estos roles le permiten escribir en el segmento. Consulta los roles de Gestión de Identidades y Accesos (IAM) de Cloud Storage.
|
| La exportación a CSV ha funcionado, pero la exportación a SQL no. | Los formatos CSV y SQL se exportan de forma 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 SELECT consulta que proporciones. |
Si una exportación de SQL falla o es demasiado lenta, puedes exportar tablas individuales con CSV. |
| La exportación tarda demasiado. | Si una exportación tarda demasiado en tu instancia principal, puede que sea demasiado grande. | Prueba a exportar los datos en lotes más pequeños. Por ejemplo,
exporta las tablas de forma individual en lugar de exportar toda la
base de datos en una sola operación. También puede usar la herramienta pg_dump para realizar una exportación manual desde un cliente conectado a una instancia de grupo de lectura.
|
Create Extension error en el registro de pg_restore o
la importación falla. |
El archivo de volcado contiene referencias a una extensión de PostgreSQL que no es compatible con AlloyDB 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. |
Error al usar pg_dumpall. |
La utilidad pg_dumpall con marcas como
--globals-only puede 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
|
La operación de exportación se agota o aparece el mensaje
Connection reset by peer. |
Si Cloud Storage no recibe datos en un plazo determinado, la conexión se puede restablecer. Esto puede ocurrir si las consultas iniciales de la base de datos necesarias para la exportación tardan demasiado en ejecutarse. | Si esto ocurre, prueba a realizar una exportación manual con la herramienta pg_dump desde un cliente conectado a una instancia de grupo de lectura. |
Problemas más comunes
| Problema | Descripción | Corrección recomendada |
|---|---|---|
HTTP Error 409: Operation failed because another operation was
already in progress. |
El sistema solo permite realizar una operación de importación o exportación basada en APIs a la vez. | Prueba a enviar la solicitud después de que se complete la operación en curso. |
Siguientes pasos
- Importar datos mediante archivos de volcado.
- Exportar datos mediante archivos de volcado.
- Importar datos mediante archivos CSV.
- Exportar datos mediante archivos CSV.
- Importar datos con archivos SQL.
- Exportar datos mediante archivos SQL
- Habilita las copias de seguridad automáticas.
- Restaurar desde una copia de seguridad