Búsqueda de sitios web

Cómo hacer una copia de seguridad y restaurar una base de datos PostgreSQL


En un entorno de producción, no importa cuán grande o pequeña sea su base de datos PostgreSQL, la copia de seguridad periódica es un aspecto esencial de la administración de la base de datos. En este artículo, aprenderá cómo realizar una copia de seguridad y restaurar una base de datos PostgreSQL.

Suponemos que ya tiene una instalación funcional del sistema de base de datos PostgreSQL. De lo contrario, lea nuestros siguientes artículos para instalar PostgreSQL en su distribución de Linux.

Empecemos…

Copia de seguridad de una única base de datos PostgreSQL

PostgreSQL proporciona la utilidad pg_dump para ayudarle a realizar copias de seguridad de sus bases de datos. Genera un archivo de base de datos con comandos SQL en un formato que se puede restaurar fácilmente en el futuro.

Para realizar una copia de seguridad de una base de datos PostgreSQL, comience iniciando sesión en su servidor de base de datos, luego cambie a la cuenta de usuario Postgres y ejecute pg_dump de la siguiente manera (reemplace tecmintdb con el nombre de la base de datos que desea respaldar). De forma predeterminada, el formato de salida es un archivo de secuencia de comandos SQL de texto sin formato.

pg_dump tecmintdb > tecmintdb.sql

El pg_dump también admite otros formatos de salida. Puede especificar el formato de salida usando la opción -F, donde c significa archivo de formato personalizado, d significa archivo de formato de directorio y t significa archivo en formato tar: todos los formatos son adecuados para ingresar en pg_restore.

Por ejemplo:

pg_dump -F c tecmintdb > tecmintdb.dump
OR
pg_dump -F t tecmintdb > tecmintdb.tar

Para volcar la salida en el formato de salida del directorio, use el indicador -f (que se usa para especificar el archivo de salida) para especificar el directorio de destino en lugar de un archivo. El directorio que creará pg_dump no debe existir.

pg_dump -F d tecmintdb -f tecmintdumpdir	

Para realizar una copia de seguridad de todas las bases de datos PostgreSQL, utilice la herramienta pg_dumpall como se muestra.

pg_dumpall > all_pg_dbs.sql

Puede restaurar el volcado usando psql como se muestra.

psql -f all_pg_dbs.sql postgres

Restaurar una base de datos PostgreSQL

Para restaurar una base de datos PostgreSQL, puede utilizar las utilidades psql o pg_restore. psql se utiliza para restaurar archivos de texto creados por pg_dump mientras que pg_restore se utiliza para restaurar una base de datos PostgreSQL a partir de un archivo creado por pg_dump< en uno de los formatos de texto que no son sin formato (personalizado, tar o directorio).

A continuación se muestra un ejemplo de cómo restaurar un volcado de un archivo de texto sin formato:

psql tecmintdb < tecmintdb.sql

Como se mencionó anteriormente, un volcado de formato personalizado no es una secuencia de comandos para psql, por lo que debe restaurarse con pg_restore como se muestra.

pg_restore -d tecmintdb tecmintdb.dump
OR
pg_restore -d tecmintdb tecmintdb.tar
OR
pg_restore -d tecmintdb tecmintdumpdir	

Copia de seguridad de base de datos PostgreSQL comprimida

Si la base de datos de la que está realizando una copia de seguridad es grande y desea generar un archivo de salida bastante más pequeño, puede ejecutar un volcado comprimido en el que debe filtrar la salida de pg_dump mediante una herramienta de compresión como gzip. o cualquiera de tus favoritos:

pg_dump tecmintdb | gzip > tecmintdb.gz

Si la base de datos es extremadamente grande, puede volcar en paralelo volcando tablas number_of_jobs simultáneamente usando el indicador -j, como se muestra.

pg_dump -F d -j 5 -f tecmintdumpdir

Es importante tener en cuenta que la opción de volcado paralelo reduce el tiempo del volcado, pero por otro lado, también aumenta la carga en el servidor de la base de datos.

Copia de seguridad de bases de datos PostgreSQL remotas

pg_dump es una herramienta cliente PostgreSQL normal que admite operaciones en servidores de bases de datos remotos. Para especificar el servidor de base de datos remoto con el que debe contactar pg_dump, utilice las opciones de línea de comandos -h para especificar el host remoto y -p especifica el servidor remoto. Puerto en el que escucha el servidor de la base de datos. Además, utilice el indicador -U para especificar el nombre del rol de la base de datos al que conectarse.

Recuerde reemplazar 10.10.20.10 y 5432 y tecmintdb con la dirección IP o el nombre de host de su host remoto, el puerto de la base de datos y el nombre de la base de datos, respectivamente.

pg_dump -U tecmint -h 10.10.20.10 -p 5432 tecmintdb > tecmintdb.sql

Asegúrese de que el usuario que se conecta de forma remota tenga los privilegios necesarios para acceder a la base de datos y que el método de autenticación de la base de datos adecuado esté configurado en el servidor de la base de datos; de lo contrario, obtendrá un error como el que se muestra en la siguiente captura de pantalla.

También es posible volcar una base de datos directamente de un servidor a otro; utilice las utilidades pg_dump y psql como se muestra.

pg_dump -U tecmint -h 10.10.20.10 tecmintdb | pqsl -U tecmint -h 10.10.20.30 tecmintdb

Copia de seguridad automática de la base de datos PostgreSQL mediante una tarea cron

Puede realizar copias de seguridad a intervalos regulares utilizando trabajos cron. Los trabajos cron son un medio comúnmente utilizado para programar varios tipos de tareas para ejecutar en un servidor.

Puede configurar una tarea cron para automatizar la copia de seguridad de la base de datos PostgreSQL de la siguiente manera. Tenga en cuenta que debe ejecutar los siguientes comandos como superusuario de PostgreSQL:

mkdir -p /srv/backups/databases

A continuación, ejecute el siguiente comando para editar el crontab y agregar un nuevo trabajo cron.

crontab -e

Copie y pegue la siguiente línea al final del crontab. Puede utilizar cualquiera de los formatos de volcado explicados anteriormente.

0 0 * * *  pg_dump  -U postgres tecmintdb > /srv/backups/postgres/tecmintdb.sql

Guarda el archivo y cierra.

El servicio cron comenzará automáticamente a ejecutar este nuevo trabajo sin reiniciar. Y esta tarea cron se ejecutará todos los días a medianoche, es una solución mínima para la tarea de respaldo.

Para obtener más información sobre cómo programar trabajos cron, consulte: Cómo crear y administrar trabajos cron en Linux

¡Eso es todo por ahora! Es una buena idea hacer que la copia de seguridad de los datos forme parte de su rutina de administración de bases de datos. Para comunicarse con nosotros para cualquier pregunta o comentario, utilice el formulario de comentarios a continuación. Para obtener más información, consulte las páginas de referencia de pg_dump y pg_restore.