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

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.



