Table of Contents
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 regular es un aspecto esencial de la administración de la base de datos. En este artículo, aprenderá cómo hacer 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. Si no es así, lea nuestros siguientes artículos para instalar PostgreSQL. en su distribución de Linux.
- Cómo instalar PostgreSQL y pgAdmin4 en Ubuntu 20.04
- Cómo Instalar PostgreSQL y pgAdmin en CentOS 8
- Cómo instalar PostgreSQL y pgAdmin en RHEL 8
Empecemos…
Copia de seguridad de una única base de datos PostgreSQL
PostgreSQL. proporciona la utilidad pg_dump. para ayudarlo a realizar copias de seguridad de las 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 hacer una copia de seguridad de una base de datos PostgreSQL. comience por iniciar sesión en su servidor de base de datos, luego cambie a la cuenta de usuario de 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. freestar.config.enabled_slots.push (locationName : “tecmint_incontent”, slotId: “tecmint_incontent”);
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 archivo de formato personalizado, d significa archivo de formato de directorio yt significa archivo de archivo de formato tar: todos los formatos son adecuados para ingresar en pg_restore.
Por ejemplo:
$ pg_dump-F c tecmintdb> tecmintdb.dump O $ pg_dump-F t tecmintdb> tecmintdb.tar
Para volcar la salida en el formato de salida del directorio, use el-f bandera (que se utiliza para especificar el archivo de salida) para especificar el directorio de destino en lugar de un archivo. El directorio que será creado por pg_dump. no debe existir.
$ pg_dump-F d tecmintdb-f tecmintdumpdir
Para hacer una copia de seguridad de todas las bases de datos de PostgreSQL. use la herramienta pg_dumpall. como se muestra.
$ pg_dumpall> all_pg_dbs.sql
Puede restaurar el volcado usando psql. como se muestra.
$ pgsql-f all_pg_dbs.sql postgres
Restauración de una base de datos PostgreSQL
Para restaurar una base de datos PostgreSQL. puede utilizar psql. o pg_restore. utilidades. psql. se usa para restaurar archivos de texto creados por pg_dump. mientras que pg_restore. se usa para restaurar una base de datos PostgreSQL a partir de un archivo creado por pg_dump. en uno de los formatos que no son de texto sin formato (personalizado, tar o directorio).
A continuación, se muestra un ejemplo de cómo restaurar un volcado de archivo de texto sin formato:
$ psql tecmintdb. < tecmintdb.sql.
Como se mencionó anteriormente, un volcado de formato personalizado no es un script para pgsql. por lo que debe restaurarse con pg_restore. como se muestra.
$ pg_restore-d tecmintdb tecmintdb.dump O $ pg_restore-d tecmintdb tecmintdb.tar O $ pg_restore-d tecmintdb tecmintdumpdir
Copia de seguridad de grandes bases de datos PostgreSQL
Si la base de datos de la que realiza 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 sus favoritos:
$ pg_dump tecmintdb. | gzip> tecmintdb.gz.
Si la base de datos es extremadamente grande, puede volcar en paralelo volcando tablas número_de_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 de 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 remotas de PostgreSQL
pg_dump. es una herramienta cliente de PostgreSQL normal, que admite operaciones en servidores de bases de datos remotas. Para especificar el servidor de base de datos remoto que pg_dump. debe contactar, use las opciones de línea de comandos-h para especificar el host remoto y-p especifica el puerto remoto en el que está escuchando el servidor de base de datos. Además, use el indicador-U para especificar el nombre de la función de la base de datos con la que conectarse.
Recuerde reemplazar 10.10.20.10. y 5432. y tecmintdb. con su dirección IP de host remoto o nombre de host, puerto de base de datos y nombre de 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 de que el método de autenticación servidor de base de datos, de lo contrario, obtendrá un error como el que se muestra en la siguiente captura de pantalla.
Error de conexión de la base de datos PostgreSQL
También es posible volcar una base de datos directamente de un servidor a otro, use 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 un trabajo cron
Puede realizar copias de seguridad a intervalos regulares utilizando trabajos cron. Los trabajos Cron. son un medio de uso común para programar varios tipos de tareas para que se ejecuten en un servidor.
Puede configurar un trabajo cron para automatizar la base de datos PostgreSQL. copia de seguridad de la siguiente manera. Tenga en cuenta que debe ejecutar los siguientes comandos como superusuario de PostgreSQL:
$ mkdir-p/srv/backups/bases
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 de crontab. Puede usar cualquiera de los formatos de volcado explicados anteriormente.
0 0 * * * pg_dump-U postgres tecmintdb>/srv/backups/postgres/tecmintdb.sql
Guarde el archivo y salga.
El servicio cron comenzará a ejecutar automáticamente este nuevo trabajo sin reiniciar. Y este trabajo cron se ejecutará todos los días a la 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 sea parte de la rutina de administración de su base 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 pg_dump y pg_restore.