En esta página, se describe cómo importar y exportar datos a instancias de Cloud SQL mediante pg_dump, pg_dumpall y pg_restore.
Antes de comenzar
Las exportaciones usan recursos de bases de datos, pero no interfieren en las operaciones normales de las bases de datos, a menos que la instancia no cuente con el aprovisionamiento suficiente.
A fin de obtener prácticas recomendadas, consulta Recomendaciones para la importación y exportación de datos.
Después de completar una operación de importación, verifica los resultados.
Obtén más información sobre las utilidades pg_dump
, pg_dumpall
y pg_restore
.
Exporta datos de Cloud SQL para PostgreSQL
Puedes usar Cloud SQL para realizar una exportación desde la consola de Google Cloud, la CLI de gcloud o la API.
- Para exportar una sola base de datos de PostgreSQL, usa la utilidad
pg_dump
. - Para exportar todas las bases de datos de PostgreSQL de un clúster, usa la utilidad
pg_dumpall
.
Cuando uses cualquiera de las dos utilidades, asegúrate de usar también las opciones necesarias a fin de asegurarte de que el archivo de exportación resultante sea válido para volver a importarse a Cloud SQL.
Exporta datos de un servidor PostgreSQL local mediante pg_dump
Si deseas exportar una base de datos que no administra Cloud SQL para luego importarla a Cloud SQL, usa la utilidad pg_dump
con las siguientes marcas:
--no-owner
Los comandos de cambio de propiedad no se deben incluir en el archivo de volcado.
--format
Se permiten los formatos
custom
ydirectory
si el archivo de volcado está diseñado para usarse conpg_restore
.En el caso del formato
plain-text
, exporta a unSQL dump file
en su lugar. Este formato no es compatible conpg_restore
y debe importarse con el comando de importación de la consola de Google Cloud o el clientepsql
.--no-acl
Esta marca es obligatoria si tu volcado contiene instrucciones para otorgar o revocar la membresía de una función
SUPERUSER
.--clean
Esta marca opcional te permite incluir la instrucción de SQL
DROP <object>
que se requiere para descartar (limpiar) los objetos de la base de datos antes de importarlos.--if-exists
Esta marca opcional te permite incluir la instrucción de SQL
IF EXISTS
con cada declaraciónDROP
que produce la marcaclean
.
Además, debes quitar todos estos elementos:
- Las instrucciones relacionadas con extensiones, si Cloud SQL no la admite. Consulta Extensiones de PostgreSQL para ver una lista de extensiones admitidas.
- Declaraciones
CREATE EXTENSION
oDROP EXTENSION
que hacen referencia a plpgsql. Esta extensión viene preinstalada en instancias de Cloud SQL Postgres. COMMENT ON EXTENSION
.
Confirma que la codificación predeterminada, según lo que determine la configuración de la base de datos, sea la correcta para tus datos. Si es necesario, puedes anular el valor predeterminado con la marca --encoding
.
Exporta datos con el formato custom
de Cloud SQL para PostgreSQL
Para usar el formato personalizado, desde una línea de comandos, ejecuta pg_dump
:
pg_dump \ -U USERNAME \ --format=custom \ --no-owner \ --no-acl \ DATABASE_NAME > DATABASE_NAME.dmp
Exporta datos de varios archivos en paralelo desde Cloud SQL para PostgreSQL
Solo puedes usar el formato de salida directory
para exportar datos de varios archivos en paralelo.
Para exportar en paralelo, usa la marca -j NUM_CORES
.
NUM_CORES es la cantidad de núcleos en la instancia de origen.
Exporta todas las bases de datos
pg_dumpall
es una utilidad que te permite extraer todas las bases de datos de PostgreSQL de un clúster en un solo archivo de secuencia de comandos. Este archivo tiene comandos de SQL que puedes usar para restablecer las bases de datos.
Para exportar todas las bases de datos de PostgreSQL en una instancia de Cloud SQL, usa la utilidad pg_dumpall
con las siguientes marcas obligatorias:
exclude-database=cloudsqladmin
exclude-database=template*
La utilidad pg_dumpall
no tiene acceso a las bases de datos cloudsqladmin
o template
.
Para exportar todas las bases de datos de PostgreSQL, ejecuta el siguiente comando:
pg_dumpall \ -h HOST_NAME -l DATABASE_NAME –exclude-database=cloudsqladmin \ –exclude-database=template* > pg_dumpall.sql
Para ver las contraseñas de rol cuando vuelcas roles con pg_dumpall
, configura la marca cloudsql.pg_authid_select_role
como un nombre de rol de PostgreSQL. Si el rol existe, tiene acceso de solo lectura (SELECT
) a la tabla pg_authid
. Esta tabla contiene contraseñas de roles.
Importar
Usa la herramienta pg_restore
para importar un archivo a una base de datos de Cloud SQL. pg_restore
solo funciona con los archivos que crea pg_dump en los formatos custom
o directory
.
Obtén más información sobre
pg_restore
.
Importa desde un archivo de volcado creado con el formato custom
a Cloud SQL para PostgreSQL
Si el archivo de volcado se creó con un formato personalizado, ejecuta el siguiente comando:
pg_restore \ --list DATABASE_NAME.dmp | sed -E 's/(.* EXTENSION )/; \1/g' > DATABASE_NAME.toc
El procesamiento posterior desde sed
marca como comentarios todas las sentencias de extensión en el archivo de volcado de SQL.
Cuando realices la importación mediante pg_restore
, especifica la tabla de contenido procesada con el argumento de línea de comandos "--use-list=DATABASE_NAME.toc".
Importa datos de varios archivos en paralelo a Cloud SQL para PostgreSQL
Puedes importar datos de varios archivos en paralelo solo para los archivos creados con los formatos de salida directory
y custom
.
Para importar en paralelo, usa la marca -j NUM_CORES
.
NUM_CORES es la cantidad de núcleos en la instancia de destino.
Importa el rendimiento en Cloud SQL para PostgreSQL
¿Qué sigue?
- Aprende a verificar el estado de las operaciones de importación y exportación.
- Obtén más información sobre las prácticas recomendadas para importar y exportar datos.
- Obtén más información sobre la utilidad pg_dump de PostgreSQL.
- Problemas conocidos para importaciones y exportaciones.