Consejos tecnológicos: ¿Cómo hago una copia de seguridad y restauro la base de datos Postgres?
Correo electrónico
·
19 jun 2013

Puntos clave
Las copias de seguridad de PostgreSQL pueden dirigirse a una sola tabla, una sola base de datos o todas las bases de datos según sus necesidades.
pg_dumpcrea un archivo de texto SQL que contiene DDL y los datos necesarios para recrear la tabla o base de datos objetivo.pg_dumpallrespalda todas las bases de datos en la instancia de Postgres.La restauración se realiza con
psql, que ejecuta el volcado de SQL de nuevo en la base de datos objetivo.Las restauraciones a nivel de tabla requieren asegurarse de que la tabla no exista ya para evitar conflictos.
Al respaldar tablas individuales, tenga en cuenta las dependencias relacionales.
Los volcados se pueden hacer desde instancias locales y restaurarse en instancias remotas de Postgres.
Las copias de seguridad incluyen comandos
CREATE,ALTERyCOPYdependiendo de lo que se esté exportando.Una estrategia de respaldo adecuada depende de entender las relaciones de las tablas, el uso de esquemas y los entornos de implementación.
Siempre asegúrese de la integridad de los datos tomando copias de seguridad que incluyan tablas referenciadas cuando sea necesario.
Destacados de Q&A
¿Qué hace realmente pg_dump?
pg_dumpgenera un archivo SQL basado en texto que contiene el conjunto completo de comandos necesarios para recrear una tabla o base de datos exactamente como existía en el momento de la copia de seguridad.¿Puedo hacer una copia de seguridad de solo una tabla en lugar de una base de datos completa?
Sí. Use
pg_dump --table TABLENAMEpara exportar una tabla específica. Si existen tablas con el mismo nombre a través de esquemas, use--schemapara especificar la correcta.¿Debería preocuparme por las tablas relacionadas al hacer una copia de seguridad de una sola tabla?
Absolutamente. PostgreSQL es relacional, por lo que otras tablas podrían referenciar la que estás respaldando. Si restauras solo una tabla sin las relacionadas, podrías romper la integridad referencial.
¿Cómo hago una copia de seguridad de una base de datos completa?
Ejecuta un comando como:
pg_dump -U <user> <database> -f <output.sql>Esto exporta todas las tablas, definiciones de esquema, índices y datos de esa base de datos.
¿Qué hace pg_dumpall?
pg_dumpallrespalda todas las bases de datos en el servidor en un solo archivo SQL. Es útil cuando se migra o se toma una instantánea de una instancia completa de Postgres.¿Puedo restaurar una tabla en una base de datos existente?
Sí. Use
psql -U <user> -f <file.sql> <database>.Pero asegúrese de que la tabla no exista ya, de lo contrario, obtendrá errores de "ya existe" durante la restauración.
¿Qué ocurre durante una restauración completa de la base de datos?
El archivo de restauración se ejecuta:
CREATE TABLEALTER TABLECOPY(para los datos de la tabla)
devolviendo la base de datos a su estado exacto en el momento del volcado.
¿Puedo restaurar en un servidor diferente al que hice la copia de seguridad?
Sí. Los dumps son portátiles. Puedes hacer una copia de seguridad local y restaurarla en una instancia remota de Postgres, siempre que las versiones sean compatibles.
¿Afecta pg_dump a la base de datos en funcionamiento?
No. Funciona a través de consultas SQL y no bloquea toda la base de datos. Captura de manera segura una instantánea consistente.
¿Cómo restauro todas las bases de datos desde un archivo pg_dumpall?
Uso:
psql -U <user> -f all_dump.sqlEsto recrea cada base de datos encontrada en el volcado.
Primero, un descargo de responsabilidad. Esta publicación ofrece una guía general sobre cómo realizar una copia de seguridad de una tabla de Postgres Database. Los ejemplos proporcionados no se refieren a ninguna tabla o base de datos específica. Si estás intentando hacer una copia de seguridad de una tabla específica, también deberías respaldar las tablas que se refieren a las tablas originales. Como Postgres es una base de datos relacional, siempre habrá referencias entre varias tablas.
Este es un documento sobre 'cómo hacerlo' que solo proporciona comandos de ejemplo, cómo se hace realmente depende únicamente de la persona que lo haga y de los casos de uso específicos. Siempre mantén la integridad de los datos que estás intentando respaldar. Realizar una copia de seguridad de toda la base de datos siempre es una opción segura, pero al respaldar tablas específicas se debe tener cuidado.
SQL-dump/pg_dump:
La idea detrás del método SQL-dump es generar un archivo de texto con comandos SQL que, cuando se devuelvan al servidor, recrearán la base de datos en el mismo estado en que estaba en el momento del volcado. PostgreSQL proporciona el programa utilitario pg_dump para este propósito.
pg_dump es una herramienta efectiva y completa para realizar copias de seguridad de bases de datos Postgres y usar esas copias para restaurar la base de datos postgres. Sin embargo, no está restringido solo a la Base de Datos. Podemos usar pg_dump para respaldar tablas y luego usar eso para restaurar tablas individuales también. Usando pg_dump puedes respaldar la base de datos local y restaurarla en una base de datos remota.
Cómo hacer una copia de seguridad de la base de datos Postgres:
Cómo Restaurar la Base de Datos Postgres
Opciones de Restauración de Postgres: Resumen
Alcance de la restauración | Herramienta utilizada | Archivo de entrada | Requisito clave | Error común |
|---|---|---|---|---|
Una sola tabla | psql | Volcado de tabla | La tabla no debe existir ya | Errores de “ya existe” |
Una sola base de datos | psql | Volcado de base de datos | La base de datos de destino debe existir | Sobrescribir datos no deseados |
Todas las bases de datos | psql | Volcado completo | Se recomienda acceso de superusuario | Restaurar más de lo previsto |
Restaurar una tabla de Postgres:
$ /opt/msys/3rdParty/bin/psql -U ecuser -f ms_table.sql peEl comando anterior instalará la tabla que se respaldó en el archivo ms_table.sql en la base de datos 'pe'. Asegúrate de que esta tabla no exista ya, o verás una serie de errores de 'ya existe'. Este comando crea la tabla y exporta todos los datos a la tabla recién creada.
Restaurar una base de datos de Postgres:
$ /opt/msys/3rdParty/bin/psql -U ecuser -d pe -f pe_dump.sqlSimilar a la restauración de la tabla, podemos usar el comando anterior para restaurar la base de datos completa. Aquí estamos restaurando la base de datos 'pe' usando el archivo pe_dump.sql que creamos mientras realizábamos la copia de seguridad de la base de datos en la sección de Copia de Seguridad arriba.
Restaurar todas las bases de datos:
$ /opt/msys/3rdParty/bin/psql -u ecuser -f all_dump.sqlRestaura todas las bases de datos usando el comando anterior. ‘all_dump.sql’ fue el archivo que se creó usando
pg_dumpall. El comando anterior nos dará todas las bases de datos de Postgres en el estado exacto en que estaban cuando se realizó un volcado desde el servidor de bases de datos original.



