Com fer una còpia de seguretat i restaurar una base de dades PostgreSQL
En un entorn de producció, per molt gran o petita que sigui la vostra base de dades PostgreSQL, el retorn normal és un aspecte essencial de la gestió de bases de dades. En aquest article, aprendràs a fer una còpia de seguretat i restaurar una base de dades PostgreSQL.
Suposem que ja teniu una instal·lació en funcionament del sistema de bases de dades PostgreSQL. Si no, llegiu els nostres articles següents per instal·lar PostgreSQL a la vostra distribució Linux.
- Com instal·lar PostgreSQL i pgAdmin4 a Ubuntu 20.04
- Com instal·lar PostgreSQL i pgAdmin a CentOS 8
- Com instal·lar PostgreSQL i pgAdmin a RHEL 8
Comencem…
Còpia de seguretat d'una única base de dades PostgreSQL
PostgreSQL proporciona la utilitat pg_dump per ajudar-vos a fer una còpia de seguretat de les bases de dades. Genera un fitxer de base de dades amb ordres SQL en un format que es pot restaurar fàcilment en el futur.
Per fer una còpia de seguretat d'una base de dades PostgreSQL, comenceu iniciant sessió al vostre servidor de bases de dades, després canvieu al compte d'usuari de Postgres i executeu pg_dump de la manera següent (substituïu tecmintdb
pel nom de la base de dades de la qual voleu fer una còpia de seguretat) . Per defecte, el format de sortida és un fitxer d'script SQL de text sense format.
$ pg_dump tecmintdb > tecmintdb.sql
El pg_dump també admet altres formats de sortida. Podeu especificar el format de sortida mitjançant l'opció -F
, on c
significa fitxer d'arxiu de format personalitzat, d
significa arxiu de format de directori i t
significa fitxer d'arxiu en format tar: tots els formats són adequats per introduir-los a pg_restore.
Per exemple:
$ pg_dump -F c tecmintdb > tecmintdb.dump OR $ pg_dump -F t tecmintdb > tecmintdb.tar
Per bolcar la sortida en el format de sortida del directori, utilitzeu el senyalador -f
(que s'utilitza per especificar el fitxer de sortida) per especificar el directori de destinació en lloc d'un fitxer. El directori que serà creat per pg_dump no ha d'existir.
$ pg_dump -F d tecmintdb -f tecmintdumpdir
Per fer una còpia de seguretat de totes les bases de dades PostgreSQL, utilitzeu l'eina pg_dumpall tal com es mostra.
$ pg_dumpall > all_pg_dbs.sql
Podeu restaurar l'abocament mitjançant psql tal com es mostra.
$ pgsql -f all_pg_dbs.sql postgres
Restauració d'una base de dades PostgreSQL
Per restaurar una base de dades PostgreSQL, podeu utilitzar les utilitats psql o pg_restore. psql s'utilitza per restaurar fitxers de text creats per pg_dump mentre que pg_restore s'utilitza per restaurar una base de dades PostgreSQL des d'un arxiu creat per pg_dump en un dels formats que no són de text pla (personalitzat, tar o directori).
Aquí teniu un exemple de com restaurar un abocament de fitxers de text senzill:
$ psql tecmintdb < tecmintdb.sql
Com s'ha esmentat anteriorment, un abocament de format personalitzat no és un script per a pgsql, de manera que s'ha de restaurar amb pg_restore tal com es mostra.
$ pg_restore -d tecmintdb tecmintdb.dump OR $ pg_restore -d tecmintdb tecmintdb.tar OR $ pg_restore -d tecmintdb tecmintdumpdir
Còpia de seguretat de grans bases de dades PostgreSQL
Si la base de dades de la qual feu una còpia de seguretat és gran i voleu generar un fitxer de sortida força més petit, podeu executar un abocament comprimit on haureu de filtrar la sortida de pg_dump mitjançant una eina de compressió com ara gzip o qualsevol de les vostres preferides:
$ pg_dump tecmintdb | gzip > tecmintdb.gz
Si la base de dades és extremadament gran, podeu bolcar en paral·lel abocant les taules de nombre_de_treballs simultàniament utilitzant la marca -j
, com es mostra.
$ pg_dump -F d -j 5 -f tecmintdumpdir
És important tenir en compte que l'opció d'abocament en paral·lel redueix el temps de l'abocament, però d'altra banda, també augmenta la càrrega del servidor de bases de dades.
Còpia de seguretat de bases de dades PostgreSQL remotes
pg_dump és una eina de client PostgreSQL normal, admet operacions en servidors de bases de dades remots. Per especificar el servidor de base de dades remot que pg_dump ha de contactar, utilitzeu les opcions de línia d'ordres -h
per especificar l'amfitrió remot i -p
especifica el port remot on escolta el servidor de base de dades. . A més, utilitzeu el senyalador -U
per especificar el nom del rol de la base de dades per connectar-vos.
Recordeu substituir 10.10.20.10 i 5432 i tecmintdb amb l'adreça IP de l'amfitrió remot o el nom d'amfitrió, el port de la base de dades i el nom de la base de dades respectivament.
$ pg_dump -U tecmint -h 10.10.20.10 -p 5432 tecmintdb > tecmintdb.sql
Assegureu-vos que l'usuari que es connecta de forma remota tingui els privilegis necessaris per accedir a la base de dades i que el mètode d'autenticació de la base de dades adequat estigui configurat al servidor de la base de dades, en cas contrari, obtindreu un error com el que es mostra a la captura de pantalla següent.
També és possible bolcar una base de dades directament d'un servidor a un altre, utilitzant les utilitats pg_dump i psql tal com es mostra.
$ pg_dump -U tecmint -h 10.10.20.10 tecmintdb | pqsl -U tecmint -h 10.10.20.30 tecmintdb
Còpia de seguretat automàtica de la base de dades PostgreSQL mitjançant un treball Cron
Podeu fer còpies de seguretat a intervals regulars mitjançant tasques cron. Els treballs Cron són un mitjà d'ús habitual per programar diversos tipus de tasques per executar-se en un servidor.
Podeu configurar un treball cron per automatitzar la còpia de seguretat de la base de dades PostgreSQL de la següent manera. Tingueu en compte que heu d'executar les ordres següents com a superusuari de PostgreSQL:
$ mkdir -p /srv/backups/databases
A continuació, executeu l'ordre següent per editar el crontab per afegir un nou treball de cron.
$ crontab -e
Copieu i enganxeu la línia següent al final del crontab. Podeu utilitzar qualsevol dels formats d'abocament explicats anteriorment.
0 0 * * * pg_dump -U postgres tecmintdb > /srv/backups/postgres/tecmintdb.sql
Desa el fitxer i surt.
El servei cron començarà automàticament a executar aquest nou treball sense reiniciar-lo. I aquest treball cron s'executarà cada dia a mitjanit, és una solució mínima per a la tasca de còpia de seguretat.
Per obtenir més informació sobre com programar treballs de cron, vegeu: Com crear i gestionar treballs de cron a Linux
Això és tot de moment! És una bona idea fer que la còpia de seguretat de les dades sigui part de la rutina de gestió de bases de dades. Per contactar amb nosaltres per a qualsevol pregunta o comentari, utilitzeu el formulari de comentaris que trobareu a continuació. Per obtenir més informació, consulteu les pàgines de referència de pg_restore.