Exportar e importar con pg_dump, pg_dumpall y pg_restore

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 y directory se permiten si el archivo de volcado se va a usar con pg_restore.

    Para el formato plain-text, exporta a SQL dump file en su lugar. Este formato no es compatible con pg_restore y debe importarse mediante el comando de importación de la consola Google Cloud o el cliente psql.

  • --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ón DROP que genere la marca clean.

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 o DROP 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 de

Siguientes pasos