|
| |||||||||||||||||||||||||||||||||||
Còpies de seguretatJoan Puigcerver Ibáñez Introducció¶Un dels aspectes més importants de la seguretat de les dades és garantir la disponibilitat de la informació i la capacitat de recuperació en cas de fallada. Per això, pràcticament tots els gestors de bases de dades incorporen ferramentes per fer còpies de seguretat de les dades i restaurar-les quan siga necessari. Hi ha dos mecanismes bàsics que permeten recuperar les dades:
Una bona pràctica és separar físicament les còpies de seguretat de les dades originals per evitar pèrdues en cas de fallada del disc, corrupció o atacs. El procés de recuperació d'una base de dades combina tots dos mecanismes i es basa en tres tasques:
Per garantir que aquest procés funciona quan cal, l'administrador de la base de dades s'encarrega de:
Tipus de còpies de seguretat¶Les còpies de seguretat es poden classificar segons diferents criteris:
Còpies de seguretat en PostgreSQL¶PostgreSQL proporciona diverses ferramentes natives per fer còpies de seguretat i recuperar-les:
La taula següent resumeix quins tipus de còpia permet cada ferramenta:
Ferramentes de còpia de seguretat en PostgreSQL Ferramentes de tercers Per a entorns de producció, és habitual utilitzar ferramentes especialitzades com pgBackRest o Barman, que ofereixen un catàleg de còpies, paral·lelisme i gestió incremental de les còpies físiques. Còpia lògica (
|
| Valor | Format | Significat |
|---|---|---|
p |
plain |
Fitxer de text amb sentències SQL, executable amb psql (valor per defecte) |
c |
custom |
Format binari comprimit, necessari per fer restauracions selectives amb pg_restore |
d |
directory |
Com custom, però en un directori. Permet l'exportació en paral·lel amb -j |
t |
tar |
Fitxer tar |
-f <fitxer_eixida>: fitxer on es guarda la còpia.
A més, algunes opcions permeten filtrar què s'exporta:
-t <taula>: exporta només la taula indicada. Es pot repetir.-n <esquema>: exporta només l'esquema indicat.--data-only: exporta només les dades, sense l'estructura.--schema-only: exporta només l'estructura, sense les dades.
Documentació oficial: pg_dump – PostgreSQL
Preparació de l'entorn d'exemple
Els exemples d'aquests apunts s'executen a partir de l'escenari següent:
-
Crea l'usuari
backup_useramb permisos de creació de taules: -
Crea la taula
productesi insereix-hi algunes dades:
Exemple: Exportar els productes amb preu superior a 15
pg_dump no permet filtrar files amb una condició directament. Per això, per exportar
un subconjunt de files, es crea prèviament una vista amb la condició desitjada.
-
Es crea una vista amb els productes de preu superior a 15:
-
S'exporta la vista amb
pg_dumpen formatcustom: -
Es comprova que s'ha creat el fitxer de bolcat:
Restauració amb pg_restore¶
Els fitxers en format custom, directory o tar es restauren amb l'ordre pg_restore:
-U <usuari>: rol amb què es connecta al servidor.-d <base_de_dades>: base de dades on es restaura la còpia.<fitxer>: fitxer generat perpg_dump.
Documentació oficial: pg_restore – PostgreSQL
Exemple: Importar la vista productes_cars
Es restaura la vista exportada en l'exemple anterior.
Còpia física (pg_basebackup)¶
L'ordre pg_basebackup fa una còpia física de tot el directori de dades del clúster,
connectant-se al servidor com a client de replicació. S'utilitza com a punt de partida per a
la recuperació física i per a la recuperació a un punt en el temps (Point-in-Time Recovery, PITR).
-U <usuari_replicacio>: rol amb permís de replicació.-D <directori_desti>: directori on es guardarà la còpia.[-F <format>]: (opcional) format d'eixida,plain(p) otar(t).[-X stream]: (opcional) inclou els WAL generats durant la còpia, de manera que siga consistent.[-P]: (opcional) mostra el progrés de la còpia.
Documentació oficial: pg_basebackup – PostgreSQL
Recuperació a un punt en el temps (PITR)¶
Una còpia física només permet tornar al moment en què es va fer. Per poder recuperar la base de dades
en un punt concret posterior, cal guardar també tots els WAL generats des de la còpia. Això s'aconsegueix
configurant l'arxivament de WAL a postgresql.conf:
Per restaurar la base de dades en un moment concret, cal seguir aquests passos:
-
Es restaura la còpia base (
pg_basebackup) al directori de dades. -
Es crea un fitxer
postgresql.auto.conf(orecovery.signal, segons la versió) amb les instruccions de recuperació: -
S'inicia el servidor, que aplica els WAL arxivats fins al moment indicat i s'obri per a l'ús normal.
Documentació oficial: Continuous Archiving and Point-in-Time Recovery (PITR) – PostgreSQL