En esta página se describe cómo exportar e importar datos en instancias de Cloud SQL mediante pg_dump, pg_dumpall y pg_restore.
Antes de empezar
Las exportaciones usan recursos de la base de datos, pero no interfieren con las operaciones normales de la base de datos, a menos que la instancia no tenga suficientes recursos.
Para consultar las prácticas recomendadas, consulta el artículo Prácticas recomendadas para importar y exportar datos.
Después de completar una operación de importación, verifica los resultados.
Consulta más información sobre las utilidades pg_dump
, pg_dumpall
y pg_restore
.
Exportar datos de Cloud SQL para PostgreSQL
Puedes usar Cloud SQL para realizar una exportación desde la Google Cloud consola 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 utilices cualquiera de las dos utilidades, asegúrate de usar también las opciones necesarias para que el archivo de exportación resultante sea válido para importarlo de nuevo en Cloud SQL.
Exportar datos de un servidor PostgreSQL local con pg_dump
Para exportar una base de datos que no esté gestionada por Cloud SQL para importarla posteriormente en Cloud SQL, usa la utilidad pg_dump
con las siguientes marcas:
--no-owner
Los comandos de cambio de propiedad no deben incluirse en el archivo de volcado.
--format
Los formatos
custom
ydirectory
se permiten si el archivo de volcado se va a usar conpg_restore
.Para el formato
plain-text
, exporta aSQL dump file
en su lugar. Este formato no es compatible conpg_restore
y debe importarse mediante el comando de importación de la consola Google Cloud o el clientepsql
.--no-acl
Esta marca es obligatoria si tu volcado contiene instrucciones para conceder o revocar la pertenencia a un rol
SUPERUSER
.--clean
Esta marca opcional te permite incluir la instrucción SQL
DROP <object>
que se necesita para eliminar (limpiar) objetos de la base de datos antes de importarlos.--if-exists
Esta marca opcional te permite incluir la instrucción SQL
IF EXISTS
con cada instrucciónDROP
que genere la marcaclean
.
Además, debe eliminar todo lo siguiente:
- Instrucciones relacionadas con extensiones, si Cloud SQL no admite esa extensión. Consulta la lista de extensiones admitidas en Extensiones de PostgreSQL.
CREATE EXTENSION
oDROP EXTENSION
que hagan referencia a plpgsql. Esta extensión viene preinstalada en las instancias de Cloud SQL Postgres.COMMENT ON EXTENSION
extractos.
Confirma que la codificación predeterminada, determinada por la configuración de la base de datos, es correcta para tus datos. Si es necesario, puede anular el valor predeterminado con la marca --encoding
.
Exportar datos con el formato custom
desde Cloud SQL para PostgreSQL
Para usar el formato personalizado, ejecuta pg_dump
desde una línea de comandos:
pg_dump \ -U USERNAME \ --format=custom \ --no-owner \ --no-acl \ DATABASE_NAME > DATABASE_NAME.dmp
Exportar datos de varios archivos en paralelo desde Cloud SQL para PostgreSQL
Solo puede 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 el número de núcleos de la instancia de origen.
Exportar 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 contiene comandos SQL que puedes usar para restaurar las bases de datos.
Para exportar todas las bases de datos de PostgreSQL de una instancia de Cloud SQL, utiliza 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
ni 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 los roles al volcar roles con pg_dumpall
, asigna el valor de la
marca cloudsql.pg_authid_select_role
al nombre de un 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 utilidad pg_restore
para importar un archivo en una base de datos de Cloud SQL. pg_restore
solo funciona con archivos creados por pg_dump en los formatos custom
o directory
.
Más información sobre
pg_restore
Importar a Cloud SQL para PostgreSQL desde un archivo de volcado creado con el formato custom
Si el archivo de volcado se ha creado con un formato personalizado, ejecuta el siguiente comando:
pg_restore \ --list DATABASE_NAME.dmp | sed -E 's/(.* EXTENSION )/; \1/g' > DATABASE_NAME.toc
El posprocesamiento de sed
comenta todas las instrucciones de extensión
en el archivo de volcado de SQL.
Cuando importe contenido con pg_restore
, especifique la tabla de contenido procesada con el argumento de línea de comandos "--use-list=DATABASE_NAME.toc".
Importar datos de varios archivos en paralelo a Cloud SQL para PostgreSQL
Solo puede importar datos de varios archivos en paralelo si los archivos se han creado con los formatos de salida directory
y custom
.
Para importar en paralelo, usa la marca -j NUM_CORES
.
NUM_CORES es el número de núcleos de la instancia de destino.
Rendimiento de importación en Cloud SQL para PostgreSQL
El rendimiento deSiguientes pasos
- Obtén más información sobre cómo comprobar el estado de las operaciones de importación y exportación.
- Consulta más información sobre las prácticas recomendadas para importar y exportar datos.
- Consulta más información sobre la utilidad pg_dump de PostgreSQL.
- Problemas conocidos de importación y exportación