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

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ño sea su Postgresql La base de datos puede ser, la espalda regular es un aspecto esencial de la gestió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.

Asumimos que ya tiene una instalación en funcionamiento del sistema de base de datos PostgreSQL. Si no, 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 el pg_dump Utilidad para ayudarlo a hacer una copia 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 retroceder, un Postgresql base de datos, inicie iniciando sesión en el servidor de su base de datos, luego cambie a la Post -put cuenta de usuario y ejecutar pg_dump como sigue (reemplazar tecMintdb Con el nombre de la base de datos desea hacer una copia de seguridad). Por defecto, el formato de salida es un archivo de script SQL de texto simple.

$ pg_dump tecMintdb > tecMintdb.sql 

El pg_dump admite otros formatos de salida también. Puede especificar el formato de salida utilizando el -F opción, donde C Archivo de archivo de formato personalizado significa, d significa archivo de formato de directorio, y T significa archivo de archivo de formato de alquitrán: todos los formatos son adecuados para la entrada en pg_restore.

Por ejemplo:

$ PG_DUMP -F C TECMINTDB> TECMINTDB.volteo o $ pg_dump -f t tecMintdb> tecMintdb.alquitrán 

Para volcar la salida en el formato de salida del directorio, use el -F Flag (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 respaldar todo Postgresql bases de datos, use el pg_dumpall herramienta como se muestra.

$ PG_DUMPALL> ALL_PG_DBS.sql 

Puedes restaurar el volcado usando PSQL como se muestra.

$ psql -f all_pg_dbs.Postgres SQL 

Restauración de una base de datos PostgreSQL

Para restaurar un Postgresql base de datos, puede usar el PSQL o pg_restore utilidades. PSQL se usa para restaurar los archivos de texto creados por pg_dump mientras 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 no plano (personalizado, alquitrán o directorio).

Aquí hay 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 PSQL, Entonces debe ser restaurado con pg_restore como se muestra.

$ PG_RESTORE -D TECMINTDB TECMINTDB.volcado o $ pg_restore -d tecMintdb tecMintdb.tar o $ pg_restore -d tecMintdb tecMintdumpdir 

Copia de respaldo grandes bases de datos PostgreSQL

Si la base de datos que está haciendo una copia de seguridad es grande y desea generar un archivo de salida bastante más pequeño, puede ejecutar un volcado comprimido donde debe filtrar la salida de pg_dump a través de 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 al vertiendo número_of_jobs tablas simultáneamente usando el -j bandera, 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.

Bases de datos remotas de postgrreSQL de copia de seguridad

pg_dump es una herramienta de cliente de PostgreSQL regular, admite operaciones en servidores de bases de datos remotas. Para especificar el servidor de base de datos remoto pg_dump debe contactar, usar las opciones de línea de comandos -H para especificar el host remoto y -pag Especifica el puerto remoto en el que está escuchando el servidor de la base de datos. Además, usa el -U marcar para especificar el nombre de rol de la base de datos para conectarse como.

Recuerda reemplazar 10.10.20.10 y 5432 y tecMintdb con su dirección IP de host remota 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 remotamente tenga los privilegios requeridos para acceder a la base de datos, y el método de autenticación de base de datos apropiado se configura 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.

Error de conexión de la base de datos de PostgreSQL

También es posible volcar una base de datos directamente de un servidor a otro, usar el pg_dump y PSQL utilidades como se muestra.

$ PG_DUMP -U TECMINT -H 10.10.20.10 TECMINTDB | PQSL -U TECMINT -H 10.10.20.30 TECMINTDB 

Base de datos postgreSQL de copia de seguridad automática utilizando un trabajo cron

Puede realizar copias de seguridad a intervalos regulares utilizando cron trabajos. Cron Los trabajos son un medio de uso común para programar varios tipos de tareas para ejecutarse en un servidor.

Puede configurar un trabajo cron para automatizar Postgresql copia de seguridad de la base de datos de la siguiente manera. Tenga en cuenta que necesita ejecutar los siguientes comandos como superusente PostgreSQL:

$ mkdir -p/srv/backups/bases de datos 

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

$ crontab -e 

Copie y pegue la siguiente línea al final del crontab. Puede usar 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á 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 copia de seguridad.

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 gestión de su base de datos. Para comunicarse con nosotros para cualquier pregunta o comentario, use el formulario de comentarios a continuación. Para obtener más información, consulte las páginas de referencia PG_DUMP y PG_RESTORE.